diff --git a/jsapp/js/components/projectDownloads/projectExportsCreator.es6 b/jsapp/js/components/projectDownloads/projectExportsCreator.es6 index ca3c78e2dc..0ee22d755d 100644 --- a/jsapp/js/components/projectDownloads/projectExportsCreator.es6 +++ b/jsapp/js/components/projectDownloads/projectExportsCreator.es6 @@ -148,26 +148,33 @@ export default class ProjectExportsCreator extends React.Component { } getExportFormatOptions() { - if (this.props.asset.summary?.languages.length >= 2) { - const options = []; - // all defined languages should go first - // and they replace `_default` option + const options = []; + + // Step 1: add all defined languages as options (both named and unnamed) + if (this.props.asset.summary?.languages.length >= 1) { this.props.asset.summary.languages.forEach((language, index) => { - options.push({ - value: language, - label: language, - langIndex: index, // needed for later - }); + // unnamed language gives the `_default` option + if (language === null) { + options.push(EXPORT_FORMATS._default); + } else { + options.push({ + value: language, + label: language, + langIndex: index, // needed for later + }); + } }); - options.push(EXPORT_FORMATS._xml); - return options; - } else { - return [ - // `_default` should be first - EXPORT_FORMATS._default, - EXPORT_FORMATS._xml, - ]; } + + // Step 2: if for some reason nothing was added yet, add `_default` + if (options.length === 0) { + options.push(EXPORT_FORMATS._default); + } + + // Step 3: `_xml` is always available and always last + options.push(EXPORT_FORMATS._xml); + + return options; } /** @@ -592,16 +599,22 @@ export default class ProjectExportsCreator extends React.Component { this, 'isCustomSelectionEnabled' )} - label={t('Select which questions to be exported')} + label={t('Select questions to be exported')} /> - + {t('Select all')} - + {t('Deselect all')} @@ -755,6 +768,7 @@ export default class ProjectExportsCreator extends React.Component { m='blue' type='submit' onClick={this.onSubmit} + disabled={this.state.selectedRows.size === 0} > {t('Export')} diff --git a/jsapp/scss/components/_kobo.project-downloads.scss b/jsapp/scss/components/_kobo.project-downloads.scss index 86c7e11ece..c4ecfb5c6d 100644 --- a/jsapp/scss/components/_kobo.project-downloads.scss +++ b/jsapp/scss/components/_kobo.project-downloads.scss @@ -102,6 +102,11 @@ transform: translateY(1px); } + &[disabled] { + pointer-events: none; + opacity: 0.5; + } + .k-icon { vertical-align: middle; margin-left: 3px;