Move lib/d3.combobox.js -> ui/combobox.js

As with other things from this lib/ folder, little original code remains
and turning these things into reusable d3 plugins is not a priority.
This commit is contained in:
Bryan Housel
2018-12-10 12:38:21 -05:00
parent 54a4546306
commit e5dedeff8b
18 changed files with 50 additions and 107 deletions

View File

@@ -18,7 +18,6 @@ export * from './ui/panels/index';
export * from './ui/settings/index';
export * from './ui/index';
export * from './util/index';
export * from './lib/index';
export * from './validations/index';
/* export some legacy symbols: */
@@ -48,6 +47,4 @@ export { uiPresetEditor as uiPreset } from './ui/preset_editor';
export var debug = false;
import * as lib from './lib/index';
export { lib, d3 };
export { d3 };

View File

@@ -1 +0,0 @@
export { d3combobox } from './d3.combobox';

View File

@@ -1,12 +1,10 @@
import _uniqBy from 'lodash-es/uniqBy';
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
import { svgIcon } from '../svg';
import { uiField } from './field';
import { uiFormFields } from './form_fields';
import { uiCombobox, uiField, uiFormFields } from './index';
import { utilRebind, utilTriggerEvent } from '../util';
@@ -80,7 +78,7 @@ export function uiChangesetEditor(context) {
});
commentField
.call(d3_combobox()
.call(uiCombobox()
.container(context.container())
.caseSensitive(true)
.data(_uniqBy(comments, 'title'))

View File

@@ -7,10 +7,7 @@ import {
select as d3_select
} from 'd3-selection';
import {
utilRebind,
utilTriggerEvent
} from '../../modules/util';
import { utilRebind, utilTriggerEvent } from '../util';
// This code assumes that the combobox values will not have duplicate entries.
@@ -21,7 +18,7 @@ import {
// value: 'display text'
// }, ...]
export function d3combobox() {
export function uiCombobox() {
var dispatch = d3_dispatch('accept');
var _container = d3_select(document.body);
var _suggestions = [];
@@ -350,7 +347,7 @@ export function d3combobox() {
}
d3combobox.off = function(input) {
uiCombobox.off = function(input) {
input
.on('focus.typeahead', null)
.on('blur.typeahead', null)

View File

@@ -1,12 +1,8 @@
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { uiCombobox } from '../index';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldAccess(field, context) {
@@ -55,7 +51,7 @@ export function uiFieldAccess(field, context) {
.call(utilNoAuto)
.each(function(d) {
d3_select(this)
.call(d3_combobox()
.call(uiCombobox()
.container(context.container())
.data(access.options(d))
);

View File

@@ -5,22 +5,12 @@ import _uniqBy from 'lodash-es/uniqBy';
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { dataAddressFormats } from '../../../data';
import {
geoExtent,
geoChooseEdge,
geoSphericalDistance
} from '../../geo';
import { geoExtent, geoChooseEdge, geoSphericalDistance } from '../../geo';
import { services } from '../../services';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { uiCombobox } from '../index';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldAddress(field, context) {
@@ -183,7 +173,7 @@ export function uiFieldAddress(field, context) {
: getNearValues;
wrap.selectAll('input.addr-' + tag)
.call(d3_combobox()
.call(uiCombobox()
.container(context.container())
.minItems(1)
.fetcher(function(value, callback) {

View File

@@ -14,16 +14,10 @@ import {
select as d3_select
} from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { t } from '../../util/locale';
import { services } from '../../services';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { uiCombobox } from '../index';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export {
uiFieldCombo as uiFieldMultiCombo,
@@ -44,7 +38,7 @@ export function uiFieldCombo(field, context) {
var optarray = field.options;
var snake_case = (field.snake_case || (field.snake_case === undefined));
var caseSensitive = field.caseSensitive;
var combobox = d3_combobox()
var combobox = uiCombobox()
.container(context.container())
.caseSensitive(caseSensitive)
.minItems(isMulti || isSemi ? 1 : 2);

View File

@@ -1,12 +1,8 @@
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { uiCombobox } from '../index';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldCycleway(field, context) {
@@ -61,7 +57,7 @@ export function uiFieldCycleway(field, context) {
.call(utilNoAuto)
.each(function(d) {
d3_select(this)
.call(d3_combobox()
.call(uiCombobox()
.container(context.container())
.data(cycleway.options(d))
);

View File

@@ -7,20 +7,15 @@ import {
event as d3_event
} from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { t } from '../../util/locale';
import { dataWikipedia } from '../../../data';
import { services } from '../../services';
import { svgIcon } from '../../svg';
import { tooltip } from '../../util/tooltip';
import { uiCombobox } from '../index';
import { utilDetect } from '../../util/detect';
import {
utilEditDistance,
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { utilEditDistance, utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldLocalized(field, context) {
@@ -34,12 +29,12 @@ export function uiFieldLocalized(field, context) {
});
// reuse these combos
var langcombo = d3_combobox()
var langcombo = uiCombobox()
.container(context.container())
.fetcher(fetchLanguages)
.minItems(0);
var brandcombo = d3_combobox()
var brandcombo = uiCombobox()
.container(context.container())
.canAutocomplete(false)
.minItems(1);

View File

@@ -2,15 +2,11 @@ import _some from 'lodash-es/some';
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { dataImperial } from '../../../data';
import { geoPointInPolygon } from '../../geo';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { uiCombobox } from '../index';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldMaxspeed(field, context) {
@@ -26,10 +22,10 @@ export function uiFieldMaxspeed(field, context) {
function maxspeed(selection) {
combobox = d3_combobox()
combobox = uiCombobox()
.container(context.container());
var unitCombobox = d3_combobox()
var unitCombobox = uiCombobox()
.container(context.container())
.data(['km/h', 'mph'].map(comboValues));

View File

@@ -8,19 +8,14 @@ import {
event as d3_event
} from 'd3-selection';
import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { t } from '../../util/locale';
import { actionChangeTags } from '../../actions/index';
import { dataWikipedia } from '../../../data/index';
import { services } from '../../services/index';
import { svgIcon } from '../../svg/index';
import { uiCombobox } from '../index';
import { utilDetect } from '../../util/detect';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../../util';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldWikipedia(field, context) {
@@ -34,7 +29,7 @@ export function uiFieldWikipedia(field, context) {
function wiki(selection) {
var langcombo = d3_combobox()
var langcombo = uiCombobox()
.container(context.container())
.fetcher(function(value, cb) {
var v = value.toLowerCase();
@@ -48,7 +43,7 @@ export function uiFieldWikipedia(field, context) {
}));
});
var titlecombo = d3_combobox()
var titlecombo = uiCombobox()
.container(context.container())
.fetcher(function(value, cb) {
if (!value) {

View File

@@ -1,7 +1,7 @@
import { select as d3_select } from 'd3-selection';
import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
import { uiCombobox } from './index';
import { utilGetSetValue, utilNoAuto } from '../util';
@@ -95,7 +95,7 @@ export function uiFormFields(context) {
}
return placeholder.slice(0,3).join(', ') + ((placeholder.length > 3) ? '…' : '');
})
.call(d3_combobox()
.call(uiCombobox()
.container(context.container())
.data(notShown)
.minItems(1)

View File

@@ -6,6 +6,7 @@ export { uiBackgroundDisplayOptions } from './background_display_options';
export { uiBackgroundOffset } from './background_offset';
export { uiChangesetEditor } from './changeset_editor';
export { uiCmd } from './cmd';
export { uiCombobox } from './combobox';
export { uiCommit } from './commit';
export { uiCommitChanges } from './commit_changes';
export { uiCommitWarnings } from './commit_warnings';

View File

@@ -3,15 +3,13 @@ import {
select as d3_select
} from 'd3-selection';
import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
import { actionChangeMember, actionDeleteMember } from '../actions';
import { modeBrowse, modeSelect } from '../modes';
import { osmEntity } from '../osm';
import { svgIcon } from '../svg';
import { services } from '../services';
import { uiDisclosure } from './disclosure';
import { uiCombobox, uiDisclosure } from './index';
import {
utilDisplayName,
utilDisplayType,
@@ -251,7 +249,7 @@ export function uiRawMemberEditor(context) {
return sameletter.concat(other);
}
role.call(d3_combobox()
role.call(uiCombobox()
.container(context.container())
.fetcher(function(role, callback) {
var rtype = entity.tags.type;
@@ -271,7 +269,7 @@ export function uiRawMemberEditor(context) {
var row = d3_select(this);
row.selectAll('input.member-role')
.call(d3_combobox.off);
.call(uiCombobox.off);
}
}
}

View File

@@ -7,8 +7,6 @@ import {
select as d3_select
} from 'd3-selection';
import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
import {
@@ -22,7 +20,7 @@ import { modeSelect } from '../modes';
import { osmEntity, osmRelation } from '../osm';
import { services } from '../services';
import { svgIcon } from '../svg';
import { uiDisclosure } from './disclosure';
import { uiCombobox, uiDisclosure } from './index';
import { utilDisplayName, utilNoAuto, utilHighlightEntity } from '../util';
@@ -268,7 +266,7 @@ export function uiRawMembershipEditor(context) {
.merge(enter);
newrow.selectAll('.member-entity-input')
.call(d3_combobox()
.call(uiCombobox()
.container(context.container())
.minItems(1)
.fetcher(function(value, callback) { callback(relations(value)); })
@@ -316,7 +314,7 @@ export function uiRawMembershipEditor(context) {
return sameletter.concat(other);
}
role.call(d3_combobox()
role.call(uiCombobox()
.container(context.container())
.fetcher(function(role, callback) {
var rtype = d.relation.tags.type;
@@ -336,7 +334,7 @@ export function uiRawMembershipEditor(context) {
var row = d3_select(this);
row.selectAll('input.member-role')
.call(d3_combobox.off);
.call(uiCombobox.off);
}
}
}

View File

@@ -9,18 +9,11 @@ import {
select as d3_select
} from 'd3-selection';
import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
import { services } from '../services';
import { svgIcon } from '../svg';
import { uiDisclosure } from './disclosure';
import { uiTagReference } from './tag_reference';
import {
utilGetSetValue,
utilNoAuto,
utilRebind
} from '../util';
import { uiCombobox, uiDisclosure, uiTagReference } from './index';
import { utilGetSetValue, utilNoAuto, utilRebind } from '../util';
export function uiRawTagEditor(context) {
@@ -216,7 +209,7 @@ export function uiRawTagEditor(context) {
var geometry = context.geometry(_entityID);
key.call(d3_combobox()
key.call(uiCombobox()
.container(context.container())
.fetcher(function(value, callback) {
taginfo.keys({
@@ -228,7 +221,7 @@ export function uiRawTagEditor(context) {
});
}));
value.call(d3_combobox()
value.call(uiCombobox()
.container(context.container())
.fetcher(function(value, callback) {
taginfo.values({
@@ -261,10 +254,10 @@ export function uiRawTagEditor(context) {
var row = d3_select(this);
row.selectAll('input.key')
.call(d3_combobox.off);
.call(uiCombobox.off);
row.selectAll('input.value')
.call(d3_combobox.off);
.call(uiCombobox.off);
}

View File

@@ -80,7 +80,6 @@
<script src='spec/geo/geom.js'></script>
<script src='spec/geo/vector.js'></script>
<script src='spec/lib/d3.combobox.js'></script>
<script src='spec/lib/locale.js'></script>
<script src='spec/modes/add_point.js'></script>
@@ -126,6 +125,7 @@
<script src='spec/svg/vertices.js'></script>
<script src='spec/ui/cmd.js'></script>
<script src='spec/ui/combobox.js'></script>
<script src='spec/ui/confirm.js'></script>
<script src='spec/ui/flash.js'></script>
<script src='spec/ui/inspector.js'></script>

View File

@@ -1,4 +1,4 @@
describe('d3.combobox', function() {
describe('uiCombobox', function() {
var body, container, content, input, combobox;
var data = [
@@ -67,7 +67,7 @@ describe('d3.combobox', function() {
container = body.append('div').attr('class', 'id-container');
content = container.append('div');
input = content.append('input');
combobox = iD.lib.d3combobox();
combobox = iD.uiCombobox();
});
afterEach(function() {