Merge pull request #397 from dod-ccpo/modal-accessibility

Modal accessibility
This commit is contained in:
andrewdds 2018-10-19 11:03:29 -04:00 committed by GitHub
commit 304159cad0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 50 additions and 7 deletions

View File

@ -1,17 +1,32 @@
import ally from 'ally.js'
export default { export default {
methods: { methods: {
closeModal: function(name) { closeModal: function(name) {
this.activeModal = null this.activeModal = null
this.$emit('modalOpen', false) this.$emit('modalOpen', false)
if (this.allyHandler) this.allyHandler.disengage()
}, },
openModal: function (name) { openModal: function (name) {
this.activeModal = name this.activeModal = name
this.$emit('modalOpen', true) this.$emit('modalOpen', true)
const idSelector = `#${this.modalId}`
this.allyHandler = ally.maintain.disabled({
filter: idSelector
});
} }
}, },
data: function() { data: function() {
return { return {
activeModal: null, activeModal: null,
allyHandler: null
}
},
computed: {
modalId: function () {
return !!this.activeModal ? `modal--${ this.activeModal }` : null
} }
} }
} }

View File

@ -11,6 +11,7 @@
"author": "", "author": "",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"ally.js": "^1.4.1",
"autoprefixer": "^9.1.3", "autoprefixer": "^9.1.3",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"date-fns": "^1.29.0", "date-fns": "^1.29.0",

View File

@ -3,3 +3,11 @@
* @see https://designsystem.digital.gov/components/buttons/ * @see https://designsystem.digital.gov/components/buttons/
* @source https://github.com/uswds/uswds/blob/develop/src/stylesheets/elements/_buttons.scss * @source https://github.com/uswds/uswds/blob/develop/src/stylesheets/elements/_buttons.scss
*/ */
button,
[type='button'] {
&:disabled {
background-color: unset;
opacity: 0.75;
}
}

View File

@ -2,7 +2,7 @@
{% macro Modal(name, dismissable=False) -%} {% macro Modal(name, dismissable=False) -%}
<div v-show="activeModal === '{{name}}'" v-cloak> <div v-show="activeModal === '{{name}}'" v-cloak>
<div class='modal {% if dismissable %}modal--dismissable{% endif%}'> <div id='modal--{{name}}' class='modal {% if dismissable %}modal--dismissable{% endif%}'>
<div class='modal__container'> <div class='modal__container'>
<div class='modal__dialog' role='dialog' aria-modal='true'> <div class='modal__dialog' role='dialog' aria-modal='true'>
<div class='modal__body'> <div class='modal__body'>

View File

@ -22,7 +22,7 @@
</p> </p>
<div class='action-group'> <div class='action-group'>
<button type='submit' class='action-group__action usa-button' tabindex='0'>{{ action_text }} Project</button> <button autofocus type='submit' class='action-group__action usa-button' tabindex='0'>{{ action_text }} Project</button>
<button type='button' v-on:click="handleCancelSubmit" class='icon-link action-group__action' tabindex='0'>Cancel</button> <button type='button' v-on:click="handleCancelSubmit" class='icon-link action-group__action' tabindex='0'>Cancel</button>
</div> </div>
{% endcall %} {% endcall %}

View File

@ -12,7 +12,7 @@
{% include 'fragments/pending_financial_verification.html' %} {% include 'fragments/pending_financial_verification.html' %}
<div class='action-group'> <div class='action-group'>
<a v-on:click="closeModal('pendingFinancialVerification')" class='action-group__action usa-button'>Close</a> <button autofocus type=button v-on:click="closeModal('pendingFinancialVerification')" class='action-group__action usa-button'>Close</button>
</div> </div>
{% endcall %} {% endcall %}
@ -22,7 +22,7 @@
{% include 'fragments/pending_ccpo_approval_modal.html' %} {% include 'fragments/pending_ccpo_approval_modal.html' %}
<div class='action-group'> <div class='action-group'>
<a v-on:click="closeModal('pendingCCPOApproval')" class='action-group__action usa-button'>Close</a> <button autofocus type='button' v-on:click="closeModal('pendingCCPOApproval')" class='action-group__action usa-button'>Close</button>
</div> </div>
{% endcall %} {% endcall %}
@ -32,7 +32,7 @@
{% include 'fragments/pending_ccpo_acceptance_alert.html' %} {% include 'fragments/pending_ccpo_acceptance_alert.html' %}
<div class='action-group'> <div class='action-group'>
<a v-on:click="closeModal('pendingCCPOAcceptance')" class='action-group__action usa-button'>Close</a> <button autofocus type='button' v-on:click="closeModal('pendingCCPOAcceptance')" class='action-group__action usa-button'>Close</button>
</div> </div>
{% endcall %} {% endcall %}

View File

@ -99,6 +99,7 @@
value='{{ choice[0] }}' value='{{ choice[0] }}'
{% if role == choice[0] %} {% if role == choice[0] %}
checked='checked' checked='checked'
autofocus
{% endif %} {% endif %}
/> />
<label for="env_{{ env.id }}_{{ choice[0] }}"> <label for="env_{{ env.id }}_{{ choice[0] }}">
@ -118,8 +119,8 @@
<input type='hidden' name='env_{{ env.id }}' v-bind:value='new_role'/> <input type='hidden' name='env_{{ env.id }}' v-bind:value='new_role'/>
<div class='block-list__footer'> <div class='block-list__footer'>
<div class='action-group'> <div class='action-group'>
<a v-on:click="closeModal('{{ env.name }}RolesModal')" class='action-group__action usa-button'>Select Access Role</a> <button type='button' v-on:click="closeModal('{{ env.name }}RolesModal')" class='action-group__action usa-button'>Select Access Role</button>
<a class='action-group__action icon-link icon-link--danger' v-on:click="closeModal('{{ env.name }}RolesModal'); cancel();" value="{{ value if value == role else role }}" >Cancel</a> <button type='button' class='action-group__action icon-link icon-link--danger' v-on:click="closeModal('{{ env.name }}RolesModal'); cancel();" value="{{ value if value == role else role }}" >Cancel</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -86,6 +86,14 @@ ajv@^5.1.0:
fast-json-stable-stringify "^2.0.0" fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0" json-schema-traverse "^0.3.0"
ally.js@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/ally.js/-/ally.js-1.4.1.tgz#9fb7e6ba58efac4ee9131cb29aa9ee3b540bcf1e"
integrity sha1-n7fmuljvrE7pExyymqnuO1QLzx4=
dependencies:
css.escape "^1.5.0"
platform "1.3.3"
alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@ -1927,6 +1935,11 @@ css-what@2.1:
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0=
css.escape@^1.5.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
cssnano-preset-default@^4.0.0: cssnano-preset-default@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.0.tgz#c334287b4f7d49fb2d170a92f9214655788e3b6b" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.0.tgz#c334287b4f7d49fb2d170a92f9214655788e3b6b"
@ -5352,6 +5365,11 @@ pinkie@^2.0.0:
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
platform@1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.3.tgz#646c77011899870b6a0903e75e997e8e51da7461"
integrity sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE=
popper.js@^1.12.9: popper.js@^1.12.9:
version "1.14.4" version "1.14.4"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6"