Skip to content

Commit

Permalink
refactor(module:autocomplete): refactor and sync Ant Design 4
Browse files Browse the repository at this point in the history
  • Loading branch information
hsuanxyz committed Jan 10, 2020
1 parent 72bfd7a commit 873b01e
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,14 @@ import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulati
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
templateUrl: './nz-autocomplete-optgroup.component.html',
template: `
<div class="ant-select-dropdown-menu-item-group-title">
<ng-container *nzStringTemplateOutlet="nzLabel">{{ nzLabel }}</ng-container>
</div>
<ul class="ant-select-dropdown-menu-item-group-list">
<ng-content select="nz-auto-option"></ng-content>
</ul>
`,
host: {
role: 'group',
class: 'ant-select-dropdown-menu-item-group'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ export class NzOptionSelectionChange {
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
templateUrl: './nz-autocomplete-option.component.html',
template: `
<ng-content></ng-content>
`,
host: {
role: 'menuitem',
class: 'ant-select-dropdown-menu-item',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { fromEvent, merge, Subscription } from 'rxjs';
import { delay, distinct, map, take, tap } from 'rxjs/operators';

import { NzAutocompleteOptionComponent } from './nz-autocomplete-option.component';
import { NzAutocompleteComponent } from './nz-autocomplete.component';
import { NzAutocompleteOptionComponent } from './autocomplete-option.component';
import { NzAutocompleteComponent } from './autocomplete.component';

export const NZ_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {
provide: NG_VALUE_ACCESSOR,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import { filter, switchMap, take } from 'rxjs/operators';

import { CompareWith, InputBoolean, NzDropDownPosition, NzNoAnimationDirective, slideMotion } from 'ng-zorro-antd/core';

import { NzAutocompleteOptionComponent, NzOptionSelectionChange } from './nz-autocomplete-option.component';
import { NzAutocompleteOptionComponent, NzOptionSelectionChange } from './autocomplete-option.component';

export interface AutocompleteDataSourceItem {
value: string;
Expand All @@ -47,7 +47,32 @@ export type AutocompleteDataSource = AutocompleteDataSourceItem[] | string[] | n
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
templateUrl: './nz-autocomplete.component.html',
template: `
<ng-template>
<div
#panel
class="ant-select-dropdown ant-select-dropdown-placement-bottomLeft"
[class.ant-select-dropdown-hidden]="!showPanel"
[ngClass]="nzOverlayClassName"
[ngStyle]="nzOverlayStyle"
[nzNoAnimation]="noAnimation?.nzNoAnimation"
[@slideMotion]="dropDownPosition"
[@.disabled]="noAnimation?.nzNoAnimation"
>
<div style="max-height: 256px; overflow-y: auto; overflow-anchor: none;">
<div style="display: flex; flex-direction: column;">
<ng-template *ngTemplateOutlet="nzDataSource ? optionsTemplate : contentTemplate"></ng-template>
</div>
</div>
</div>
<ng-template #contentTemplate>
<ng-content></ng-content>
</ng-template>
<ng-template #optionsTemplate>
<nz-auto-option *ngFor="let option of nzDataSource" [nzValue]="option">{{ option }}</nz-auto-option>
</ng-template>
</ng-template>
`,
animations: [slideMotion],
styles: [
`
Expand All @@ -70,7 +95,8 @@ export class NzAutocompleteComponent implements AfterContentInit, AfterViewInit,
@Input() @InputBoolean() nzBackfill = false;
@Input() compareWith: CompareWith = (o1, o2) => o1 === o2;
@Input() nzDataSource: AutocompleteDataSource;
@Output() readonly selectionChange: EventEmitter<NzAutocompleteOptionComponent> = new EventEmitter<NzAutocompleteOptionComponent>();
@Output()
readonly selectionChange: EventEmitter<NzAutocompleteOptionComponent> = new EventEmitter<NzAutocompleteOptionComponent>();

showPanel: boolean = true;
isOpen: boolean = false;
Expand All @@ -90,7 +116,8 @@ export class NzAutocompleteComponent implements AfterContentInit, AfterViewInit,
}

/** Provided by content */
@ContentChildren(NzAutocompleteOptionComponent, { descendants: true }) fromContentOptions: QueryList<NzAutocompleteOptionComponent>;
@ContentChildren(NzAutocompleteOptionComponent, { descendants: true })
fromContentOptions: QueryList<NzAutocompleteOptionComponent>;
/** Provided by dataSource */
@ViewChildren(NzAutocompleteOptionComponent) fromDataSourceOptions: QueryList<NzAutocompleteOptionComponent>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import { FormsModule } from '@angular/forms';

import { NzAddOnModule, NzNoAnimationModule } from 'ng-zorro-antd/core';

import { NzAutocompleteOptgroupComponent } from './nz-autocomplete-optgroup.component';
import { NzAutocompleteOptionComponent } from './nz-autocomplete-option.component';
import { NzAutocompleteTriggerDirective } from './nz-autocomplete-trigger.directive';
import { NzAutocompleteComponent } from './nz-autocomplete.component';
import { NzAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';
import { NzAutocompleteOptionComponent } from './autocomplete-option.component';
import { NzAutocompleteTriggerDirective } from './autocomplete-trigger.directive';
import { NzAutocompleteComponent } from './autocomplete.component';

@NgModule({
declarations: [NzAutocompleteComponent, NzAutocompleteOptionComponent, NzAutocompleteTriggerDirective, NzAutocompleteOptgroupComponent],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import { Subject } from 'rxjs';

import { createKeyboardEvent, dispatchFakeEvent, dispatchKeyboardEvent, MockNgZone, typeInElement } from 'ng-zorro-antd/core';

import { getNzAutocompleteMissingPanelError } from './autocomplete-trigger.directive';
import { NzAutocompleteComponent, NzAutocompleteModule, NzAutocompleteOptionComponent, NzAutocompleteTriggerDirective } from './index';
import { getNzAutocompleteMissingPanelError } from './nz-autocomplete-trigger.directive';

describe('auto-complete', () => {
let overlayContainer: OverlayContainer;
Expand Down Expand Up @@ -102,11 +102,10 @@ describe('auto-complete', () => {
input.disabled = true;
fixture.detectChanges();

expect(trigger.panelOpen).toBe(false);
dispatchFakeEvent(input, 'focusin');
flush();

fixture.detectChanges();

expect(trigger.panelOpen).toBe(false);
}));

Expand Down Expand Up @@ -255,16 +254,6 @@ describe('auto-complete', () => {
TAB_EVENT = createKeyboardEvent('keydown', TAB);
});

it('should open the panel when the input is focused', () => {
expect(fixture.componentInstance.trigger.panelOpen).toBe(false);

dispatchFakeEvent(input, 'focusin');
fixture.detectChanges();

expect(fixture.componentInstance.trigger.panelOpen).toBe(true);
expect(overlayContainerElement.textContent).toContain('Burns Bay Road');
});

it('should have correct width when setting', () => {
fixture.componentInstance.width = 500;
fixture.detectChanges();
Expand Down

This file was deleted.

This file was deleted.

32 changes: 0 additions & 32 deletions components/auto-complete/nz-autocomplete.component.html

This file was deleted.

10 changes: 5 additions & 5 deletions components/auto-complete/public-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/

export * from './nz-autocomplete.module';
export * from './nz-autocomplete.component';
export * from './nz-autocomplete-trigger.directive';
export * from './nz-autocomplete-option.component';
export * from './nz-autocomplete-optgroup.component';
export * from './autocomplete.module';
export * from './autocomplete.component';
export * from './autocomplete-trigger.directive';
export * from './autocomplete-option.component';
export * from './autocomplete-optgroup.component';

0 comments on commit 873b01e

Please sign in to comment.