diff --git a/js/components/save_button.js b/js/components/save_button.js new file mode 100644 index 00000000..60eabe66 --- /dev/null +++ b/js/components/save_button.js @@ -0,0 +1,18 @@ +export default { + name: 'savebutton', + + props: { + text: String, + disabled: Boolean, + classes: String, + }, + + data: function() { + return { + displayClasses: `usa-button usa-button-primary ${this.classes}`, + } + }, + + template: + '', +} diff --git a/js/index.js b/js/index.js index a5e58f45..3fc1e9bf 100644 --- a/js/index.js +++ b/js/index.js @@ -33,6 +33,7 @@ import { isNotInVerticalViewport } from './lib/viewport' import DateSelector from './components/date_selector' import SidenavToggler from './components/sidenav_toggler' import KoReview from './components/forms/ko_review' +import savebutton from './components/save_button' Vue.config.productionTip = false @@ -68,6 +69,7 @@ const app = new Vue({ EditOfficerForm, SidenavToggler, KoReview, + savebutton, }, mounted: function() { diff --git a/js/mixins/form.js b/js/mixins/form.js index e0fb546f..2bdf9fea 100644 --- a/js/mixins/form.js +++ b/js/mixins/form.js @@ -1,3 +1,5 @@ +import savebutton from '../components/save_button' + export default { mounted: function() { this.$root.$on('field-change', this.handleFieldChange) @@ -8,7 +10,25 @@ export default { const { value, name } = event if (typeof this[name] !== undefined) { this[name] = value + this.disabled = false } }, }, + + data: function() { + return { + disabled: this.disableSave, + } + }, + + props: { + disableSave: { + type: Boolean, + default: true, + }, + }, + + components: { + savebutton, + }, }