Skip to content

Commit 0b4ae74

Browse files
authored
Merge pull request #397 from analyst-one/fix/396-clearbutton-template
fix(#396): support clear button template
2 parents 0a1cfa8 + c03975d commit 0b4ae74

9 files changed

+68
-7
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"@angular/platform-browser": "^19.0.4",
4949
"@angular/platform-browser-dynamic": "^19.0.4",
5050
"@angular/router": "^19.0.4",
51-
"@ng-select/ng-select": "^14.1.0",
51+
"@ng-select/ng-select": "^14.2.2",
5252
"@ngx-translate/core": "^16.0.0",
5353
"@ngx-translate/http-loader": "^16.0.0",
5454
"date-fns": "^4.1.0",

projects/dev-app/src/app/select/select-demo.component.html

+31
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,37 @@ <h2>Test Templates</h2>
182182
<mat-error>Please choose a food</mat-error>
183183
</mat-form-field>
184184

185+
<mat-form-field>
186+
<mtx-select
187+
[(ngModel)]="selectedAccount"
188+
[items]="accounts"
189+
bindLabel="name"
190+
bindValue="name"
191+
groupBy="country"
192+
[disabled]="disabled"
193+
[readonly]="readonly"
194+
[multiple]="multipleSelect"
195+
[closeOnSelect]="closeOnSelect"
196+
[deselectOnClick]="deselectOnClick"
197+
>
198+
<ng-template ng-clearbutton-tmp>
199+
<button
200+
class="clearbutton"
201+
mat-icon-button
202+
tabindex="0"
203+
aria-label="clear all"
204+
[disabled]="disabled"
205+
(click)="selectedAccount = ''"
206+
>
207+
<mat-icon>close</mat-icon>
208+
</button>
209+
</ng-template>
210+
</mtx-select>
211+
212+
<mat-hint>Choose your favorite food</mat-hint>
213+
<mat-error>Please choose a food</mat-error>
214+
</mat-form-field>
215+
185216
<h2>Test Events</h2>
186217

187218
<mat-form-field>
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
11
mat-form-field {
22
vertical-align: middle;
33
}
4+
5+
.clearbutton {
6+
--mdc-icon-button-icon-size: 14px;
7+
--mdc-icon-button-state-layer-size: 20px;
8+
9+
margin-right: 3px;
10+
11+
.mat-icon {
12+
font-size: var(--mdc-icon-button-icon-size, 10px);
13+
height: var(--mdc-icon-button-icon-size, 10px);
14+
width: var(--mdc-icon-button-icon-size, 10px);
15+
}
16+
}

projects/extensions/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
}
6868
},
6969
"dependencies": {
70-
"@ng-select/ng-select": "^14.1.0",
70+
"@ng-select/ng-select": "^14.2.0",
7171
"ngx-color": "^9.0.0",
7272
"photoviewer": "^3.10.0",
7373
"tslib": "^2.4.0"

projects/extensions/select/select-module.ts

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
MtxSelectPlaceholderTemplate,
1818
MtxSelectTagTemplate,
1919
MtxSelectTypeToSearchTemplate,
20+
MtxSelectClearbuttonTemplate,
2021
} from './templates';
2122
import { MtxOption } from './option';
2223

@@ -40,6 +41,7 @@ import { MtxOption } from './option';
4041
MtxSelectTagTemplate,
4142
MtxSelectLoadingSpinnerTemplate,
4243
MtxSelectPlaceholderTemplate,
44+
MtxSelectClearbuttonTemplate,
4345
],
4446
exports: [
4547
MtxSelect,
@@ -56,6 +58,7 @@ import { MtxOption } from './option';
5658
MtxSelectTagTemplate,
5759
MtxSelectLoadingSpinnerTemplate,
5860
MtxSelectPlaceholderTemplate,
61+
MtxSelectClearbuttonTemplate,
5962
],
6063
})
6164
export class MtxSelectModule {}

projects/extensions/select/select.html

+7-1
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,10 @@
147147
</ng-template>
148148
}
149149

150-
</ng-select>
150+
@if (clearbuttonTemplate) {
151+
<ng-template ng-clearbutton-tmp>
152+
<ng-template [ngTemplateOutlet]="clearbuttonTemplate"></ng-template>
153+
</ng-template>
154+
}
155+
156+
</ng-select>

projects/extensions/select/select.ts

+3
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import {
5151
MtxSelectPlaceholderTemplate,
5252
MtxSelectTagTemplate,
5353
MtxSelectTypeToSearchTemplate,
54+
MtxSelectClearbuttonTemplate,
5455
} from './templates';
5556

5657
export type DropdownPosition = 'bottom' | 'top' | 'auto';
@@ -166,6 +167,8 @@ export class MtxSelect
166167
loadingSpinnerTemplate!: TemplateRef<any>;
167168
@ContentChild(MtxSelectPlaceholderTemplate, { read: TemplateRef })
168169
placeholderTemplate!: TemplateRef<any>;
170+
@ContentChild(MtxSelectClearbuttonTemplate, { read: TemplateRef })
171+
clearbuttonTemplate!: TemplateRef<any>;
169172

170173
@ContentChildren(MtxOption, { descendants: true })
171174
mtxOptions!: QueryList<MtxOption>;

projects/extensions/select/templates.ts

+5
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,8 @@ export class MtxSelectLoadingSpinnerTemplate {
5959
export class MtxSelectPlaceholderTemplate {
6060
template = inject<TemplateRef<any>>(TemplateRef);
6161
}
62+
63+
@Directive({ selector: '[ng-clearbutton-tmp]' })
64+
export class MtxSelectClearbuttonTemplate {
65+
template = inject<TemplateRef<any>>(TemplateRef);
66+
}

yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -2244,10 +2244,10 @@
22442244
"@napi-rs/nice-win32-ia32-msvc" "1.0.1"
22452245
"@napi-rs/nice-win32-x64-msvc" "1.0.1"
22462246

2247-
"@ng-select/ng-select@^14.1.0":
2248-
version "14.1.0"
2249-
resolved "https://registry.yarnpkg.com/@ng-select/ng-select/-/ng-select-14.1.0.tgz#f90a8cd5a90c8644a8d0208e293ee97db3d96e94"
2250-
integrity sha512-cE/e7WIqLAgUF83mpmDWbgmy7OvzWTjCTjtcIzhabRbhN0RDqp7u39noC12kSN+viAfYnA1TS7rBru+IouNt1g==
2247+
"@ng-select/ng-select@^14.2.2":
2248+
version "14.2.2"
2249+
resolved "https://registry.yarnpkg.com/@ng-select/ng-select/-/ng-select-14.2.2.tgz#31a8c6adea192388ab0a8cb0a33be5dd046e13e9"
2250+
integrity sha512-K7AAeaVpWiwkkWXQFb4+ywoSRDMazCcqptAtpVnJ5+A1W/RJsYOZwf0xLR2Lqe/8PykbQg5+fw6pVve+FFv6eg==
22512251
dependencies:
22522252
tslib "^2.3.1"
22532253

0 commit comments

Comments
 (0)