Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
9574770
rotate search glass handle to the right
jonnyhork Jan 20, 2021
e0626dc
use more semantic name for width
jonnyhork Jan 20, 2021
c00118e
width of select input is determined by width of parent
jonnyhork Jan 20, 2021
25a8c77
search glass icon will have less contrast
jonnyhork Jan 21, 2021
214ec0a
adjust layout of custom select component
jonnyhork Jan 21, 2021
c00a64b
display selected object as placeholder
jonnyhork Jan 22, 2021
1456b73
fix case, add i18n tag
jonnyhork Jan 22, 2021
13296f3
Merge branch 'develop' of github.com:forcedotcom/soql-tooling into jh…
jonnyhork Jan 22, 2021
0c1a025
add multi select mode, only allow one options menu open at a time
jonnyhork Jan 22, 2021
24b9952
add event type
jonnyhork Jan 22, 2021
403313c
use multi select mode
jonnyhork Jan 22, 2021
9522d98
use custom select component
jonnyhork Jan 22, 2021
51683d6
add style for dropdown arrow
jonnyhork Jan 26, 2021
91a7db3
add dropdown arrow and api for current selected value in single mode
jonnyhork Jan 26, 2021
df4a36d
only highlight value if input is clicked
jonnyhork Jan 26, 2021
ad140d6
adjust the orientation of the dropdown arrow
jonnyhork Jan 26, 2021
e9dcd62
add comments
jonnyhork Jan 26, 2021
d80a595
update test for From component
jonnyhork Jan 26, 2021
c856249
assign the _value to match the model
jonnyhork Jan 26, 2021
7aa0595
add test for placeholder style
jonnyhork Jan 26, 2021
467fa58
finish testing
jonnyhork Jan 27, 2021
fcad4f4
store state of value in multiple mode
jonnyhork Jan 27, 2021
e23c20d
Merge branch 'feature/custom-select' of github.com:forcedotcom/soql-t…
jonnyhork Jan 27, 2021
a4b5856
use variable for container width
jonnyhork Jan 27, 2021
49fc237
close the options menu if there is no value in the input
jonnyhork Jan 27, 2021
3dfd2b8
handle undefined values
jonnyhork Jan 28, 2021
cc0af69
use custom select for field selection
jonnyhork Jan 28, 2021
8e9fee3
update tests
jonnyhork Jan 28, 2021
9dc6652
pull latest from main feature branch
jonnyhork Jan 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,11 @@
>
</div>
<div class="section_selection-container">
<select name="orderby-select" class="select-long" data-el-orderby-field>
<option value="" class="placeholder" data-el-default-option>{defaultOptionText}</option>
<template for:each={orderByFields} for:item="field">
<option key={field} value={field}>{field}</option>
</template>
</select>
<querybuilder-custom-select
is-loading={isLoading}
all-options={orderByFields}
placeholder-text={selectPlaceHolderText}
></querybuilder-custom-select>
<div class="group-orderby-modifiers">
<span class="group-orderby-order">
<select id="orderby-order" name="orderby-order" data-el-orderby-order>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,16 @@ describe('OrderBy should', () => {
const handler = jest.fn();
orderBy.addEventListener('orderbyselected', handler);
const selectField = orderBy.shadowRoot.querySelector(
'[data-el-orderby-field]'
'querybuilder-custom-select'
);
selectField.value = 'foo';
selectField.selectedOptions = ['foo'];
const button = orderBy.shadowRoot.querySelector('[data-el-add-button]');

// make the magic happen
button.click();

expect(handler).toHaveBeenCalled();
expect(handler.mock.calls[0][0].detail.field).toEqual(selectField.value);
expect(handler.mock.calls[0][0].detail.field).toEqual(selectField.value[0]);
expect(handler.mock.calls[0][0].detail.order).toEqual('');
expect(handler.mock.calls[0][0].detail.nulls).toEqual('');
});
Expand All @@ -52,9 +52,9 @@ describe('OrderBy should', () => {
const handler = jest.fn();
orderBy.addEventListener('orderbyselected', handler);
const selectField = orderBy.shadowRoot.querySelector(
'[data-el-orderby-field]'
'querybuilder-custom-select'
);
selectField.value = 'foo';
selectField.selectedOptions = ['foo'];
const selectOrder = orderBy.shadowRoot.querySelector(
'[data-el-orderby-order]'
);
Expand All @@ -69,7 +69,7 @@ describe('OrderBy should', () => {
button.click();

expect(handler).toHaveBeenCalled();
expect(handler.mock.calls[0][0].detail.field).toEqual(selectField.value);
expect(handler.mock.calls[0][0].detail.field).toEqual(selectField.value[0]);
expect(handler.mock.calls[0][0].detail.order).toEqual(selectOrder.value);
expect(handler.mock.calls[0][0].detail.nulls).toEqual(selectNulls.value);
});
Expand All @@ -80,9 +80,9 @@ describe('OrderBy should', () => {
const handler = jest.fn();
orderBy.addEventListener('orderbyselected', handler);
const selectField = orderBy.shadowRoot.querySelector(
'[data-el-orderby-field]'
'querybuilder-custom-select'
);
selectField.value = '';
selectField.selectedOptions = [''];
const button = orderBy.shadowRoot.querySelector('[data-el-add-button]');

// make the magic happen
Expand Down Expand Up @@ -117,31 +117,11 @@ describe('OrderBy should', () => {
orderBy.selectedOrderByFields = [{ field: 'foo' }];

return Promise.resolve().then(() => {
selectedFieldEl = orderBy.shadowRoot.querySelectorAll(
'.selected-field'
);
selectedFieldEl = orderBy.shadowRoot.querySelectorAll('.selected-field');
expect(selectedFieldEl.length).toBe(1);
});
});

it('alert user when loading', async () => {
orderBy.selectedFields = [];
orderBy.fields = [];
document.body.appendChild(orderBy);
expect(orderBy.isLoading).toEqual(false);
let defaultOption = orderBy.shadowRoot.querySelector(
'[data-el-default-option]'
);
expect(defaultOption.innerHTML).toContain('Select');
orderBy.isLoading = true;
return Promise.resolve().then(() => {
defaultOption = orderBy.shadowRoot.querySelector(
'[data-el-default-option]'
);
expect(defaultOption.innerHTML.toLowerCase()).toContain('loading');
});
});

it('alert user when error', async () => {
document.body.appendChild(orderBy);
expect(orderBy.hasError).toEqual(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export default class OrderBy extends LightningElement {
@api selectedOrderByFields: JsonMap[] = [];
@api hasError = false; // currently not used, no specific order by errors
@api isLoading = false;
selectPlaceHolderText = 'Search fields...'; //i18n

get defaultOptionText() {
// TODO: i18n
Expand All @@ -21,13 +22,19 @@ export default class OrderBy extends LightningElement {

handleOrderBySelected(e) {
e.preventDefault();
const orderbyEl = this.template.querySelector('[data-el-orderby-field]');
const orderbyFieldEl = this.template.querySelector(
'querybuilder-custom-select'
);
const orderEl = this.template.querySelector('[data-el-orderby-order]');
const nullsEl = this.template.querySelector('[data-el-orderby-nulls]');
if (orderbyEl && orderbyEl.value && orderbyEl.value.length) {
if (
orderbyFieldEl &&
orderbyFieldEl.value[0] &&
orderbyFieldEl.value.length
) {
const orderBySelectedEvent = new CustomEvent('orderbyselected', {
detail: {
field: orderbyEl.value,
field: orderbyFieldEl.value[0],
order: orderEl.value,
nulls: nullsEl.value
}
Expand Down