From 26d180e66189ae09736f9f119b3afc2e1825e7fa Mon Sep 17 00:00:00 2001 From: Dharan <14145706+dhrn@users.noreply.github.com> Date: Fri, 25 Jun 2021 14:24:12 +0530 Subject: [PATCH] [ACA-4486] support search widget chips layout (#7122) * [ACA-4486] support search widget chips layout * * revert to old config * * resolved rebase conflicts * [ci:force] force e2e * [ci:force] docs update and remove directive added * [ci:force] config updated * [ci:force] add missing app config schema to prod build --- demo-shell/resources/i18n/en.json | 4 +- demo-shell/src/app.config.json | 252 ++++++- demo-shell/src/app/app.module.ts | 4 +- demo-shell/src/app/app.routes.ts | 6 + .../search/search-filter-chips.component.html | 39 ++ .../search/search-filter-chips.component.scss | 44 ++ .../search/search-filter-chips.component.ts | 143 ++++ .../search/search-result.component.html | 4 +- .../search/search-result.component.scss | 2 + .../search/search-result.component.ts | 4 +- .../components/search-check-list.component.md | 1 + .../components/search-date-range.component.md | 1 + .../search-datetime-range.component.md | 1 + .../search-filter-chips.component.md | 57 ++ .../search-number-range.component.md | 1 + .../components/search-radio.component.md | 2 + .../components/search-slider.component.md | 2 + .../components/search-text.component.md | 1 + .../images/search-filter-chip-widget.png | Bin 0 -> 16223 bytes docs/docassets/images/search-filter-chips.png | Bin 0 -> 6781 bytes .../content-node-selector-panel.component.ts | 2 +- .../content-node-selector.module.ts | 2 +- .../filter-header.component.spec.ts | 2 +- .../filter-header/filter-header.component.ts | 2 +- lib/content-services/src/lib/i18n/en.json | 10 +- .../src/lib/mock/search-filter-mock.ts | 15 +- .../components/reset-search.directive.spec.ts | 58 ++ .../components/reset-search.directive.ts | 31 + .../search-check-list.component.html | 11 +- .../search-check-list.component.ts | 42 +- .../search-chip-list.component.html | 10 +- .../search-chip-list.component.spec.ts | 44 +- .../search-chip-list.component.ts | 5 +- .../search-date-range.component.html | 4 +- .../search-date-range.component.ts | 46 +- .../search-datetime-range.component.html | 4 +- .../search-datetime-range.component.ts | 39 +- .../search-facet-field.component.html | 49 ++ .../search-facet-field.component.scss | 89 +++ .../search-facet-field.component.spec.ts | 195 ++++++ .../search-facet-field.component.ts | 129 ++++ .../search-facet-chip.component.html | 42 ++ .../search-facet-chip.component.spec.ts | 66 ++ .../search-facet-chip.component.ts | 67 ++ .../search-filter-chips.component.html | 11 + .../search-filter-chips.component.scss | 66 ++ .../search-filter-chips.component.spec.ts | 413 ++++++++++++ .../search-filter-chips.component.ts | 38 ++ .../search-filter-menu-card.component.html | 22 + .../search-filter-menu-card.component.scss | 39 ++ .../search-filter-menu-card.component.spec.ts | 46 ++ .../search-filter-menu-card.component.ts | 31 + .../search-widget-chip.component.html | 47 ++ .../search-widget-chip.component.spec.ts | 68 ++ .../search-widget-chip.component.ts | 68 ++ .../search-filter-container.component.spec.ts | 2 +- .../search-filter-container.component.ts | 2 +- .../search-filter.component.html | 67 +- .../search-filter.component.scss | 51 -- .../search-filter.component.spec.ts | 637 ++---------------- .../search-filter/search-filter.component.ts | 371 +--------- .../search-form/search-form.component.html | 41 +- .../search-form/search-form.component.scss | 49 ++ .../search-form/search-form.component.spec.ts | 56 +- .../search-form/search-form.component.ts | 26 +- .../search-number-range.component.html | 4 +- .../search-number-range.component.ts | 34 +- .../search-panel/search-panel.component.ts | 2 +- .../search-radio/search-radio.component.ts | 38 +- .../search-slider.component.html | 4 +- .../search-slider.component.spec.ts | 3 +- .../search-slider/search-slider.component.ts | 20 +- .../search-sorting-picker.component.spec.ts | 2 +- .../search-sorting-picker.component.ts | 2 +- .../search-text/search-text.component.html | 2 +- .../search-text/search-text.component.ts | 17 +- .../search-widget-container.component.ts | 28 +- .../search/models/facet-field.interface.ts | 8 + .../search/models/facet-widget.interface.ts | 27 + .../models/search-configuration.interface.ts | 3 +- .../search-widget-settings.interface.ts | 9 + .../search/models/search-widget.interface.ts | 16 +- .../src/lib/search/public-api.ts | 11 +- .../lib/search/search-query-service.token.ts | 2 +- .../src/lib/search/search.module.ts | 25 +- .../base-query-builder.service.ts | 37 +- .../search-facet-filters.service.spec.ts | 419 ++++++++++++ .../services/search-facet-filters.service.ts | 370 ++++++++++ .../search-filter.service.ts | 14 +- ...earch-header-query-builder.service.spec.ts | 4 +- .../search-header-query-builder.service.ts | 8 +- .../search-query-builder.service.spec.ts | 50 +- .../search-query-builder.service.ts | 2 +- .../src/lib/styles/_index.scss | 8 + lib/core/app-config/schema.json | 32 +- .../pages/search/date-range-filter.page.ts | 1 + scripts/build/build-core.sh | 3 + 97 files changed, 3619 insertions(+), 1269 deletions(-) create mode 100644 demo-shell/src/app/components/search/search-filter-chips.component.html create mode 100644 demo-shell/src/app/components/search/search-filter-chips.component.scss create mode 100644 demo-shell/src/app/components/search/search-filter-chips.component.ts create mode 100644 docs/content-services/components/search-filter-chips.component.md create mode 100644 docs/docassets/images/search-filter-chip-widget.png create mode 100644 docs/docassets/images/search-filter-chips.png create mode 100644 lib/content-services/src/lib/search/components/reset-search.directive.spec.ts create mode 100644 lib/content-services/src/lib/search/components/reset-search.directive.ts create mode 100644 lib/content-services/src/lib/search/components/search-facet-field/search-facet-field.component.html create mode 100644 lib/content-services/src/lib/search/components/search-facet-field/search-facet-field.component.scss create mode 100644 lib/content-services/src/lib/search/components/search-facet-field/search-facet-field.component.spec.ts create mode 100644 lib/content-services/src/lib/search/components/search-facet-field/search-facet-field.component.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.html create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.spec.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.html create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.scss create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.spec.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.html create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.scss create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.spec.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.html create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.spec.ts create mode 100644 lib/content-services/src/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.ts create mode 100644 lib/content-services/src/lib/search/components/search-form/search-form.component.scss create mode 100644 lib/content-services/src/lib/search/models/facet-widget.interface.ts rename lib/content-services/src/lib/search/{ => services}/base-query-builder.service.ts (92%) create mode 100644 lib/content-services/src/lib/search/services/search-facet-filters.service.spec.ts create mode 100644 lib/content-services/src/lib/search/services/search-facet-filters.service.ts rename lib/content-services/src/lib/search/{components/search-filter => services}/search-filter.service.ts (63%) rename lib/content-services/src/lib/search/{ => services}/search-header-query-builder.service.spec.ts (97%) rename lib/content-services/src/lib/search/{ => services}/search-header-query-builder.service.ts (94%) rename lib/content-services/src/lib/search/{ => services}/search-query-builder.service.spec.ts (95%) rename lib/content-services/src/lib/search/{ => services}/search-query-builder.service.ts (93%) diff --git a/demo-shell/resources/i18n/en.json b/demo-shell/resources/i18n/en.json index a9b1c809e2b..d0f5dc74c11 100644 --- a/demo-shell/resources/i18n/en.json +++ b/demo-shell/resources/i18n/en.json @@ -350,7 +350,5 @@ "ACTION_TYPE": "Action Type" } }, - "SEARCH_FORMS": { - "ALL": "All" - } + "DEFAULT_SEARCH": "Default" } diff --git a/demo-shell/src/app.config.json b/demo-shell/src/app.config.json index b5095858655..c5b322fcaa4 100644 --- a/demo-shell/src/app.config.json +++ b/demo-shell/src/app.config.json @@ -366,8 +366,258 @@ } ] }, - "name": "SEARCH_FORMS.ALL", + "name": "DEFAULT_SEARCH", "default": true + }, + { + "filterWithContains": true, + "app:fields": [ + "cm:name", + "cm:title", + "cm:description", + "ia:whatEvent", + "ia:descriptionEvent", + "lnk:title", + "lnk:description", + "TEXT", + "TAG" + ], + "include": [ + "path", + "allowableOperations", + "properties" + ], + "sorting": { + "options": [ + { + "key": "name", + "label": "Name", + "type": "FIELD", + "field": "cm:name", + "ascending": true + }, + { + "key": "content.sizeInBytes", + "label": "Size", + "type": "FIELD", + "field": "content.size", + "ascending": true + }, + { + "key": "createdByUser", + "label": "Author", + "type": "FIELD", + "field": "cm:creator", + "ascending": true + }, + { + "key": "createdAt", + "label": "Created", + "type": "FIELD", + "field": "cm:created", + "ascending": true + }, + { + "key": "score", + "label": "Relevance", + "type": "SCORE", + "field": "score", + "ascending": false + } + ], + "defaults": [ + { + "key": "score", + "type": "FIELD", + "field": "score", + "ascending": false + } + ] + }, + "resetButton": true, + "filterQueries": [ + { + "query": "TYPE:'cm:folder'" + }, + { + "query": "NOT cm:creator:System" + } + ], + "facetFields": { + "expanded": true, + "fields": [ + { + "field": "content.size", + "mincount": 1, + "label": "Folder Size", + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true, + "unit": "Bytes" + } + }, + { + "field": "creator", + "mincount": 1, + "label": "Field created", + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true + } + }, + { + "field": "modifier", + "mincount": 1, + "label": "Folder Modifier", + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true + } + }, + { + "field": "created", + "mincount": 1, + "label": "Folder Created", + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true + } + } + ] + }, + "facetQueries": { + "label": "SEARCH.FACET_QUERIES.MY_FACET_QUERIES", + "pageSize": 5, + "expanded": true, + "mincount": 1, + "queries": [ + { + "query": "created:2019", + "label": "SEARCH.FACET_QUERIES.CREATED_THIS_YEAR" + }, + { + "query": "content.mimetype:text/html", + "label": "SEARCH.FACET_QUERIES.MIMETYPE", + "group": "Type facet queries" + }, + { + "query": "content.size:[0 TO 10240]", + "label": "SEARCH.FACET_QUERIES.XTRASMALL", + "group": "Size facet queries" + }, + { + "query": "content.size:[10240 TO 102400]", + "label": "SEARCH.FACET_QUERIES.SMALL", + "group": "Size facet queries" + }, + { + "query": "content.size:[102400 TO 1048576]", + "label": "SEARCH.FACET_QUERIES.MEDIUM", + "group": "Size facet queries" + }, + { + "query": "content.size:[1048576 TO 16777216]", + "label": "SEARCH.FACET_QUERIES.LARGE", + "group": "Size facet queries" + }, + { + "query": "content.size:[16777216 TO 134217728]", + "label": "SEARCH.FACET_QUERIES.XTRALARGE", + "group": "Size facet queries" + }, + { + "query": "content.size:[134217728 TO MAX]", + "label": "SEARCH.FACET_QUERIES.XXTRALARGE", + "group": "Size facet queries" + } + ], + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true + } + }, + "facetIntervals": { + "expanded": true, + "intervals": [ + { + "label": "The Created", + "field": "cm:created", + "sets": [ + { + "label": "lastYear", + "start": "2018", + "end": "2019", + "endInclusive": false + }, + { + "label": "currentYear", + "start": "NOW/YEAR", + "end": "NOW/YEAR+1YEAR" + }, + { + "label": "earlier", + "start": "*", + "end": "2018", + "endInclusive": false + } + ], + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true + } + }, + { + "label": "The Modified", + "field": "cm:modified", + "sets": [ + { + "label": "2017", + "start": "2017", + "end": "2018", + "endInclusive": false + }, + { + "label": "2017-2018", + "start": "2017", + "end": "2018", + "endInclusive": true + }, + { + "label": "currentYear", + "start": "NOW/YEAR", + "end": "NOW/YEAR+1YEAR" + }, + { + "label": "earlierThan2017", + "start": "*", + "end": "2017", + "endInclusive": false + } + ], + "settings": { + "allowUpdateOnChange": false, + "hideDefaultAction": true + } + } + ] + }, + "categories": [], + "highlight": { + "prefix": " ", + "postfix": " ", + "mergeContiguous": true, + "fields": [ + { + "field": "cm:title" + }, + { + "field": "description", + "prefix": "(", + "postfix": ")" + } + ] + }, + "name": "Folder" }], "search-headers": { "filterWithContains": true, diff --git a/demo-shell/src/app/app.module.ts b/demo-shell/src/app/app.module.ts index feb9cfe531e..713e2d8a0ea 100644 --- a/demo-shell/src/app/app.module.ts +++ b/demo-shell/src/app/app.module.ts @@ -114,6 +114,7 @@ import localeDa from '@angular/common/locales/da'; import localeSv from '@angular/common/locales/sv'; import { setupAppNotifications } from './services/app-notifications-factory'; import { AppNotificationsService } from './services/app-notifications.service'; +import { SearchFilterChipsComponent } from './components/search/search-filter-chips.component'; registerLocaleData(localeFr); registerLocaleData(localeDe); @@ -204,7 +205,8 @@ registerLocaleData(localeSv); CustomEditorComponent, CustomWidgetComponent, ProcessCloudLayoutComponent, - ServiceTaskListCloudDemoComponent + ServiceTaskListCloudDemoComponent, + SearchFilterChipsComponent ], providers: [ { diff --git a/demo-shell/src/app/app.routes.ts b/demo-shell/src/app/app.routes.ts index c7e5caff1e8..21456908946 100644 --- a/demo-shell/src/app/app.routes.ts +++ b/demo-shell/src/app/app.routes.ts @@ -55,6 +55,7 @@ import { FilteredSearchComponent } from './components/files/filtered-search.comp import { ProcessCloudLayoutComponent } from './components/cloud/process-cloud-layout.component'; import { ServiceTaskListCloudDemoComponent } from './components/cloud/service-task-list-cloud-demo.component'; import { AspectListSampleComponent } from './components/aspect-list-sample/aspect-list-sample.component'; +import { SearchFilterChipsComponent } from './components/search/search-filter-chips.component'; export const appRoutes: Routes = [ { path: 'login', loadChildren: () => import('./components/login/login.module').then(m => m.AppLoginModule) }, @@ -325,6 +326,11 @@ export const appRoutes: Routes = [ component: SearchResultComponent, canActivate: [AuthGuardEcm] }, + { + path: 'search-filter-chips', + component: SearchFilterChipsComponent, + canActivate: [AuthGuardEcm] + }, { path: 'extendedSearch', component: SearchExtendedComponent, diff --git a/demo-shell/src/app/components/search/search-filter-chips.component.html b/demo-shell/src/app/components/search/search-filter-chips.component.html new file mode 100644 index 00000000000..2bb8461a9f3 --- /dev/null +++ b/demo-shell/src/app/components/search/search-filter-chips.component.html @@ -0,0 +1,39 @@ +
t**jIav!7`WsXqRA}dRUSNbO!$MbZu&nH- zhx{F^%;6OI!m?CPPfr*X78VxZQ_6NU5zrvt46Blpr(~!CrJ_+IK&R)5mn~Rov<5&A zfcP(ru8{ZT-Z%>?Y{z2DT!)2-3R)hM=- zU3^9|Qd+lAN}Yy@33aVnlb7*;&*>Q&vS0lf8ID Dm*hcSEk8`*@BHKY)ouc zo8~8_1XZP_r$ K3~>ssAb5RbA(xxaMB?nnYa=LdPSyGn9*e|!0go_-nz!$EqEi(6+m z#pv&U8?=ljffz;kOZWd*&-q^+>)z0- 9v`9#gx^ zS7}*mvoHR-=NBBt5tl>|;Ju#&4G|-qebBKye*uN&Z&OVLqc%Tk*={okoW1t07*N@- z=0nbU<-3fMBKazMV`!S~i?ui4pWsZ+mpbH#BZ=*Yh(jIB@leTam0$IOf#rubzKWke z&iN!<28zX-q>>7RK3E8~h3x;MV@*rKwN)4MwHT9uI3j_lZ*HD%$XYyZ)7mC8q>71B zywn-;V>_3}9Q8#AXx&^F7ZiXP!23TV2zuxj%^5WlUE@i_WC v?F9F*LO5v z-au8O=us92KKprV@nA|W*J$s;UK Q}*a`}7c}C;Y=$PeoD2Q=cQ_ zhre?QljP52TA@Ac0^wamLwV)BfB*V&Y+7RHc-9- &=j+o6%%l(#kJ5s9z%LB&2-JUJJbo~W;f(OC>ptiKPH+yud$1k zJCQ1tU_!aV9hy*0V2{)Od%~+?M7qJ%@Roko#KU*L)C3X%lfw49etNlBTwaF#%(-J$ zWaVw~dZTyA4(FqDToj_rA7<=R&SnmCE27BGfNC+lm(97BEv}8rkB(g(HsN@&3eL6~ z0Y}Tb!^H-gOcoI?Ba|eZUT$S&j@v_`nDGNig4!7U64ByA6kPh>$Br1bpk0Io2#~al zDdwxQ({i~G-cF&_)XOf+T*Q$Ogs*B7H`+%UqZCVgPP=5zCPKO#my#c;^P0Pe8hke} zV&6SE#DN?gVcvUAbiWsUux>oKelOZNM{vGMy{u|e!LOds;o;-ax0$ww)D=l(Nsjnl zV>EE=B?0!_k=s~owO^VZ8ztwEY9EB;l@*Tv2;Y3i?GS?LeEbQ4YZX%YT4fR8>}ld& z9eReg;$Rx@s)Tv{-XtahWNaE(@z#)T)2qL<->q&dh#qv+AKtETH9m==RS39Kzi$X* zg(+mv1U^{Y3JV@=`!C-_BDnQI(<}*`@AQv tu5%XVww1FhUI4DFokEK zqSxx)W59Fr^N|h%$X`oVmkk4on8&n?;iTS9Z5`!%BbrW=BaMCp$ef_Dyc~b*05Zh8 z)6;8>e~R9Xtc>tF91()Q)zD8%DMF**WKluN?)h_o1@hPG9St2p#8#)mup&-q)=zZ8 zGwkm0CX0;8jLKe^f@PT5<7@`O>4NdHnu1bk$>Ua2)M|?2ORbZ|*#xUF^=Bt}!2(>& z)dYe9F0i)UQW4q;A4wq(sN;`K_{QkB&I`F5N-r514E^O7i9cVxYGS*-$mVSOT6rz4 zv48zJ^Y~U|#!RU&Paqh5{>v>}g#Mot9?z^z?)1J+QW4LlZv>FP7r?}Zr` m^!D%)63;Diim C?d8^;&8L3z$6i{Y& zSo=m$VLDo{(v_($$$LF}TJrNirOZKxP|x*T6Ql56%)wb{uE%PkE=7bjtba-dlj4bA z!#f_i`?l^+-iBs<^X;76<&z$hsFR$x-O~KoLF=R ibXntFrI Xe9x2!ex(6oQP&$P8=X z{SZx4w9Ubje?fbA`~75 A{{5xKE0gVw2mZbJQB)HrO$8>!+lbET 7N@(JfmtQYxYmIN$Gc51PSg=bt9-V^Rzu-W2!OFq^&% z%8!dTcr&~7r!xpqKQ|};Eh@kzw>$bB5OD?QiZNh-YK_(m!|2ROA z#)jj^yt7@txX&F0=O+ps`z{ga>uE%~{nA@iWd!Ka*-peS3TV*6B(PJTW3OXPoq8dO z+bsDLOZ1m~>NO*cmR=~%uk ZNUtG@&=C|G9$#Q2d&yqF;wdHS(I8 zrsw8JA^&~QtgElj%*@nd)>c(jH8rIc$Em9NHBl@mQDW_V0Dc5agTQD2){`va(ZJFQ z1}$A(;%I3F6_x6$svIx^0(}zjtv7&t&qzx bhoV@A33(KysQk))d=LRZ{PTMcv6O~5FydhfPDg*!6J~T z!R U5();XAEvqn20-`(kFuErxIU4|!>?ce zlwNRgAH>8GXd`-{lRJv^KzauZDbO{*AO?1&R+l+(pw+%rIbj`0ML=2_9v-F&x&+Ju zP}7MyEKoy!d;`NQxCRG@iqcYBOG`^Xzt+UWM8K~DE*NC7lvJqLSnvDyXkn{hnTD+1 zzth;WmjrxI3W|%10rl9Uu(7_5kB?uYOF sQGW=Uxn}#zWV|aO+0mZ7A$rDZe zsk>VuUUq$dKM-ik);YdKlVw4V_m_Y!z$E4R e4qnuy?WMsf-nVYWx&KiN5j; s&;vFLp8gt5?N^g>Qum z0I36l0Vqr0h=D*|UbMBji5Auks6lXx6ksimt^>eS3YejZiHY~`AyazW>p+{@*w_G6 zq9T1_hTG 4QLPDfoLc?952Y XyfiDFP=`XMuu>|7f#%F@!m0Ff`q0s?G2UnV;%E5~;;J;MH-o4Y$uknivB zsg{7h2_F@yOeLVWIZ1v42zQK3Ouj-nKoA0)fc0=jp(bOsQQO7Q9I!e_N=THje=lA0 zI$RPC4i08xt7b81`WH`Yi$8z;DpMzb$QG)*yPuAYsg@Z(g8=tIpH)5hmEHe5v=AeQ zEI3}hdKDb}2*?m1h%!Q;s=%$$8y6SD{{C>G#oW?z ^X1+qZYT` z<>lqUK}I&V(a}+r^QR?%83jpkc`53#t?J|BBPE5z-2w6nd`o @K@e(J z=t9eOMu&$Ro11gF?Fq$kz-a@i0UPD_)~SNLJRzHLz}3+T;70&ktdZ<}6%eGSH=97G zPy#9|m!O~^xLGTV$oT8{87%dwr Pf5YS08e zeE49 6=!6g;GrcK0Z*8 zEG#SlF{DaIWA`O1f@tOR8Wbh&?ACOp4h(d3CN?%527Dl0=xm4+00Rvu^HU!^1Qr3m z4A^$S8B%`&++)+^9U&p%lMnARa)+%zA)TrNu@0+aWo3omdhSlM5D}#+v!f$DX)#=~ z&4X`!SpEA~6 3g z;sKdbQ$sB`F+Lujp+SoqO(B?~KL!r55jcTR;ApLrK^vQ!n;RP)CxcAjqh*o757))I z%u9{-L=ezRkwfCs()fUuxzZC+z6m{G1X2mJN#`919-wM@0}~La$V>1uITugQ;gJy@ zcJ`eU6!qegGS!>F8)m1HH$TnTwOGL|hCqx4=>b$(&0NW;?$FQ4H?8WH(OFsKKof)W zHck2gn_uEU!DlU4QbGc5yevL3F+<`&lk>6&AUWCC*gjH&ZVJL5q|Wc*;f{_DpxcRB z4&q})OakW_An5S%E$r;d^a&x#*#cT>YPCRu)%v^xxPMnZ@+q$=@LZ}nw`c(B6%58j zOG^t-A3wkE&Dl;-Q4#1riu9)|Z%fdqMMXsc>jo4mB0@q|y}Hm079iLIpA4;Bm2U0o z%2ObQ1_Cbs>dJ>c(HF$~=g(*W%z?r@HZ}&zA_#j>f+1phdL-G(-mb2|oL{#1JgOJ| zqh#sxr%!yqEmHHY2Xtt_0fP$ybz#bO5-8fkR^Ay`w})MzrJ_82s+JoBm$v{34NK;1 zJORf7j84Bng50l`x7kdM!e~^Yo12>x6DI*XSge?yr^%?2#RqsnGiPUP2#8%JdHD>{ zV3F891tlfG?Eq_!^&4Uk=D==1!etW&auBdQtlPlu7Ao-$NIJ5zsEGs2KnjzW*KhSG zWt>#gt}-mWxdnv>h>g09c3Q=#z`+SeWi$MC1jv6NUHoG=J=YR@%}PJ&FeU^0On?ZG z1Jp#DsRcKlo)?)Q?|4NVPbjddrDB782W&F10Q^UzxE~QbbZJ?LB4Ps)9 +3-M1Hn7Fa|ZM$ zfCB!xn?P0y2>d&)n>|*;Z*N||wq5%b4W!NgawP!U=TsdyWf=Ds@R$|OnHd@`j6o$4 z{sPXpT9YwZmKN*@2 JjS4 zqsz m03^X-Uf);#RUa-H@nqfgD{Z6-FbmK6NSL8 z0pvlznq#4&{&nH&i=|4HF9d0!;}{4lQPU_=-0`?+6|96$=7LTLWRHilNfm_@X6U#L zSU=Eh3zuG^c8`xAZ={-NchOJ1I#+xbH{$)N^K24y2=N39VDu41J|hPAV*=CM2GE%V z?hi<&fjR@)X0HDMza+}Xn?c#u9r&b@Hh`$k&dxNmcr +CahJu9J)Xbu zYd XKD9R5#tjebNSLUAlI@6P*oD?LQ+t+G^=gz3ls1|)$J AmH+?% literal 0 HcmV?d00001 diff --git a/docs/docassets/images/search-filter-chips.png b/docs/docassets/images/search-filter-chips.png new file mode 100644 index 0000000000000000000000000000000000000000..5f7e2fb5d9fc7bd3f0829880ae152a6355c706ab GIT binary patch literal 6781 zcmb_>XH=6-*L6Tqqzi%|Nbg;GGtz59uhOK1-XZh|Dxh?f5(!OEI)a26x`31*M0)RH zXrcG|;&XrN`}5p?-nHKOG1po9T61R3%&eI?dq?YPtC12tA_4#aq#EkV`T)SKH#fE< zA^uG*tx9Nc^SR}#s9{J*NI1Qyvj6}*64y{xFbvGZ%{qJ0V}tJQU@aMlcK`~M3#8c; z8qp&vXr#J^#EQ~~r IyICc*l$WD@O9BL_BX%O(iPbSNG%Dc;Z zbK*Y4ECrhMK;<=3dFQr{?h^PtfSjLjbDBJyneukek4gaE(^efyl 2XBAR{THK%A!CSU{fp(Uw*4PMNo3^Y4<9^;0J0@4r=_Ja zki8vV`;wxssgzTw{ cY?l8+@t!gKGw z7cHw!WazKXlS0@VzWpt2`=Nnw9$wlg4b8uW$Q!tu@-L0*5&HGaYI!L`lapo%%blhL z+_q*C0s`?Al%0;t;>onH`yb-bB58$<^lX~$ztQWC*F}ivevebm(#9SfR1dE`a8A$D z;!Q2c&)3Kw3I|fpr*~4gwGg%?{Rl6PAzF^7jg#@XJ)WXKcw!95#x6HDN--p)r>BPt zl6J!WC3pofh!;L%^uWMC7c9VACabEds=ct4UL=}jBJ_SZODvuNHFX#L6I$pDVKvVi zstNTGmzpV@|9cvU*3EJomm2k?1nB&W-}Vd sIXi1KtxO >jheQN+@ODJJ| z`$dm!o1seNt}2P@V@U}QG=+wCwp_7ssbp5da{bB*
)PN5zN z@WOl!%~vxn=bMI1<`!RQF0%kOZ1BFz=62>!AV4_($3_yI3F)|ONJz-rE=Q*i#>o_^ z>_x*fCwlNIefWB-^}Te54Pujh0YAwRN$5ejh#cI?u=>|ow~*QduEEfS$@5~SErq(M zy>9afTii4uz^kfjjL&4c0(x|GM3y* 2L}9IzKqirC@7)=a#@0QrcvS^F zhGa=u84{(M8iGCDhu)KcyOai}J7mz#3UA#gdQUf6bZB*fQ|wD7)p`Uuz{#P1`CQ!f zWi@`|#(JPQlT(-#or}}QiJ$|k{y)iGuZ5%B9($aWh~_qxY{?fe0P0otb+ycM)_WwN zMKIYvBII@@b-`*_A}! @Eb=Va4<10@`e5hf zlKKtMULj;7JtDURH(6rVE}h>+Bq*C08%GTIK#*a)qSqNgF4_2iMKgDs_*#l^d|l&w zTRSIOBKq?B9Z*r{kS`?MkZB&y6;RP4#^$J_sx6h4G~wpU?xNOfesM0`J`_ryR9N(S z6~oXy$-3K2eV?*CDQM2`Yy9L<{H H0-{ z?YmY33Wwl+t$UwH{3qoIGAG lD=u=;5Zf@z^Yy@`R3rp)JO4HtpA=2 5uX(hmVpHzPdD&{IJz-mJhjh)OSdt&Oaebf*)r%bfkY*x`zw9f zP4GRhgZx #0VQG&-rUsZ905(QZxsciV~6j-WfsZ6k8soUX)uFecOUj3|+rvcVUt8CJ$f zo^_(9A 2M!+p%E#a=14E=b8sWZt{pz(d z;c+ZB;w%yBr?ejk9+;S{GRQywpbDb$r^kyL#5G}H&t2b~s;Sf~`X_wEQfZc&F^z)) zC+)G<{zK1a^)ah4Y@dIxCh&_qa}xf@xf$UIk*2=u?`mNl4f*+N&by x $oS089&wq01}od z10IKclD`80YP~Y~8fy!qs1X6o@QgD+42BLM$0_ye!l|ZrNTaT7_|ztUleq65@n#{~ z^NLaZS-yJ3{zz|LY=(I6>|9Nj=hew`^k?Xb2*4C& #rqY+ zNLM)_oshgooeB+l-)j7a!$ME=DDLMTYEe5x4|PrvBh&weEgd!KfJryXscf4<>ZV|U z?1v9_Hltgs11k7MysoOv6kdsBc9fvQK6yA29m;ZggZyj!5d~$;CJ@{R*ZGAe=z6$J z$bejqyRpS1?2%GFP+3teubpWDJ^^iX`DtAfD)P0zudi>|rKSYx=o_tEcl~kT(DOWS zIdUul`PgS+t^LLF%2k lH|3T``AVEmHtLjMWXD_@quG4a>gKjC2fwh+^&M4 zydxPlt*n=YW}9wqi~>?8%3l%s9s|F8=Ew--*&9L_ductS#M8o>3f|rQ^xJqk@=q#q z%I@w+3Kkq+i1^T=myC1WY3>T`z~o$J?Wc!@tavp9w7 @mt(;ni#RCASXJAK%XtoK4$jU0mJP zCj-8SrO&vyI$QIU!Ym34Mw~rPk>u)}Rf4|jVs&HWZ8iZWOl}@h0l0 |xH2nf#OobkhD`rQl9S3(lyjO#hEhc&bN!QMWlxY7!f z+NXh=0IlNT&=t@!$0^(0sz9rI33|gbuNn|Onsgpzrz4}~aSeN5ZCG~~@BsiYRJ(TL zsmtFmuq406ZGOv~E!zq!O7qdx&DpUD-M&5 5dZ)=c9dzABw?ds?}K+1yT>;Z zOg>Y#4xjKFY#bNTZ);w}3>j19g}2&i5C$3JI=Z*#-&Z`R6Nkahl63|wB`~Kb;aWGh zC&FiMj~(_?;9#=4$tu2?V_CEhA8{FsD#KE5*|~eIDvJJ1>*Zv?RX4Ml=q_k@L+I+H zFL$y4L$BIV?O^-<4=VBFWu!a}_*U{MB&3>%=;l!6 dnz8BTfK_8uY|u(XY>6yk0fkSA%zX zScUFJjtl-QGkYlf@?JVvPng=y*kHMX)&-EoQ^^YG7Vv?DVv_yz(dt zYZdx6 Wydco^5ee4E8><|$|jtt3};BmxqF8euH#fSLnZjbe o!L=CY`5FyNaraHEmmtZOx6n&Q nkK`L2) z_^@iJM%|W{Zz(;@+Gp22To~~IpGX{aSf%>_^m9S%xuclob4)EZ?BKM`^X1Xwz{7xf z|Hq>!iQN0DsN>!+*naPVXOBH?t2>Q6r&~ 9PrNMKh#bzEZ5iFt^n;wl5#L$L4##7mHkK{B0?k+M)wCUlaaB8qvM6R z(6@2cNkEv+SEhZr!cJc8F2xEp9sMycXOkXx*k`)KYVtVbbo`kdGx?q_zg+)a05IEh z4|e4RN${l{9_6gsXzi@co7v&yY_CF1?=_UiO%cUX-8=y_rpfXfgmm^dv#25>kVLjs z6U )_rhrsJvC4DLYXF5M>=F`za!hEZ} z3g5GbOMCQcJnRrn%w^^3e74Zpx6_x?h>6qwXH$VS_G82L) dFOr-p?~r7k}u4ekmnK5-Gaz87q1%x*?E;wSLup|>NnuJMDS!Vy#~#K z2?Pky!%<8+a6mO2&x> p#a7A?8ntvuwpjw;w<5u@&rg4q29+8& Ps%v{pdZnG!0rrF<-D!4(e{)hj2^@|pI#XwFm z4LID-!z-z8Zc`(um4&~MTdGe$5y?XUKu?s_Z80>7Xk~ wWpeD$U1oTpi5j zhbhp=xc-*)r0``aOzYDS>T!96WYn?zg6A#n%dtk!j;wg>HhE%*L`K-jVIsK$L8}R& z);>W5#4PHoloxZjV|7q}twn9I9jnf;9ax~%7pW=Yna;K~-SjTLN>2qT^6|8>CswCr z9~gM&^Yw+x;402$_4D?{`swU^Hl& zZS^p$?z&=oodL3<33%Ja(cIkTKf74>66GL_I2p{cS@mQh+w!=3{Ig>Unw}cBN4cD8 zqb1|%^ZT*B!TPDcN|^HrA7KVj{)52iQFL1{d?S)BQd2`AyL}1^zgGt2_>L^|-5dyO z_Hh_%b|0qRUVqsl(v3=Z{^q*tr$8(D;leQA;ZT8 oktTnR~?s%y8{8v7Z*BpG47kNQMa%Fk5B`r^pmt7~g_;!zUrziamt4I@^ z=*`R2+J!;Su;S(0`&A$GOcnb3KWB5LJE#^!0JloYVT)OkjQv&ScVF%g9cRm&?oEDk zQ~b6VLyU=#GFmx)FkD+ud%rX!{wBYy$aZBo5`286_(`MT1N*VK1;FbF5#?d6noFcY zB>Bv9dUaVp3+Q^2(D`0_ZMuryo$Eczh%)Q#8Jmu(h;M+0PEI`Ay5e6nv${9dt1%wt zTel)`6hP*?C2d-u7HN&(|GW0jELp(9)+fEbI$_xDcI2e|M}!dbja$3Pi6@I5W*&ob z&E@L7BW3n;OZVPN8U29tiq3*L)n4|NU@rpa+!!juH=--amOmO>x9PL&AFEk~?qwZc zml$>hNXQ+J80bVoXo(hy(`^nKOHNyaGQg!{<%NqD^9>;(PI)cL;zOgb^N2*dAtNsz z&6 P3XQ2!WG1($0kuQ{e6XOmcD35)51k9UU^_WXG4Ka6pb(|e^ zmi3K9Ng<* VWNqumKD@A{SgNE-Gcm&Q)9x%U^b90q>?MY-k z`rEPSpzmn2b(Kzfzprx1u;T!21?Idb2 tm*cn;ssyC||BWELsr zQk+;4l6; 5|v09-2PH!?Fh=)YJpN*ycF zh%C` iM6^}d2@#E&ZNgy}RmnmnT z9((t@A0EQWhI&itu!V8K*0qx_5Y^3U{ 3V!H%P{5%Bc`XLyFm(MVa)nq5Q7$fS46oJ*yG=JU0d1~~#9 zg|-XH1!>W#X~{=vHrx^7zkk1G>;BSJo9$~UzySExJ2mrRJqD_CO_?nqR}HVNh3!T| z&3bw5OEPgrD8Q%k=77eJ8%RD^sEgOKGaNkfrHbAbi+Dg9=H#ND-_}P{LGmHDK! j;1bI?&5zNJ 6TyiCrC`FoN1CN%S_ULQG)l1W;-0 0Rf2`ZX1PMKnOHQMrE(~ACJ)v8HCCv|999)m#5O1# zlbU2lT)@j4Cuu9ZUSH{K5XBnKmHQz%xtAu8O{0@S(Xa$OhxMt0P%7ExpZ0vMP5a{v zHnXH{ITl~C<@i1E`u}sngwAN)+rodZ)_eE#&W(F}v_PPlgDipobIvF1#)!n5Nq*^7 z0UQpY<;9fDo^dJL{daQ-*Hlf8R3capPeHFe^0&Rhc58FU4OQ%eV#v^OtB-$&*H~Wk zZTLSVY=k7_7e0M7rJ~rQ_#&m{ukx(#zZ4b{H`#l^?J1SmDK(xye Tg#lMAJnib#`_Nw`j4F{ToFdVnB4+$daJ^R4T#z`EwsB2JOOR{f1Oo ziW?z<^}YHReP=~Q{5~Y>WiBn6J?h223LuLA4#>!m*0b})h&P)p7}aYV;mRKKkBTC{ z(|qr*grUeS boolean; diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector.module.ts b/lib/content-services/src/lib/content-node-selector/content-node-selector.module.ts index 096921b4828..6795339f8cb 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector.module.ts +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector.module.ts @@ -29,7 +29,7 @@ import { CoreModule } from '@alfresco/adf-core'; import { DocumentListModule } from '../document-list/document-list.module'; import { NameLocationCellComponent } from './name-location-cell/name-location-cell.component'; import { UploadModule } from '../upload/upload.module'; -import { SearchQueryBuilderService } from '../search/search-query-builder.service'; +import { SearchQueryBuilderService } from '../search/services/search-query-builder.service'; import { ContentDirectiveModule } from '../directives/content-directive.module'; @NgModule({ diff --git a/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.spec.ts b/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.spec.ts index 26755732fa9..20bff33a15b 100644 --- a/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.spec.ts +++ b/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.spec.ts @@ -21,7 +21,7 @@ import { TranslateModule } from '@ngx-translate/core'; import { SearchService, setupTestBed, DataTableComponent, DataSorting } from '@alfresco/adf-core'; import { ContentTestingModule } from '../../../testing/content.testing.module'; import { SimpleChange } from '@angular/core'; -import { SearchHeaderQueryBuilderService } from './../../../search/search-header-query-builder.service'; +import { SearchHeaderQueryBuilderService } from './../../../search/services/search-header-query-builder.service'; import { SEARCH_QUERY_SERVICE_TOKEN } from './../../../search/search-query-service.token'; import { DocumentListComponent } from './../document-list.component'; import { FilterHeaderComponent } from './filter-header.component'; diff --git a/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts b/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts index 0e25b5f662e..8c348ac6479 100644 --- a/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts +++ b/lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts @@ -19,7 +19,7 @@ import { Component, Inject, OnInit, OnChanges, SimpleChanges, Input, Output, Eve import { PaginationModel, DataSorting } from '@alfresco/adf-core'; import { DocumentListComponent } from '../document-list.component'; import { SEARCH_QUERY_SERVICE_TOKEN } from '../../../search/search-query-service.token'; -import { SearchHeaderQueryBuilderService } from '../../../search/search-header-query-builder.service'; +import { SearchHeaderQueryBuilderService } from '../../../search/services/search-header-query-builder.service'; import { FilterSearch } from './../../../search/models/filter-search.interface'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; diff --git a/lib/content-services/src/lib/i18n/en.json b/lib/content-services/src/lib/i18n/en.json index d0c6687cdf7..54302f26551 100644 --- a/lib/content-services/src/lib/i18n/en.json +++ b/lib/content-services/src/lib/i18n/en.json @@ -223,14 +223,17 @@ }, "FILTER": { "ACTIONS": { + "SEARCH": "Search", "CLEAR": "Clear", "APPLY": "Apply", "CLEAR-ALL": "Clear all", "SHOW-MORE": "Show more", - "SHOW-LESS": "Show less", - "FILTER-CATEGORY": "Filter category" + "SHOW-LESS": "Show less" }, "BUTTONS": { + "CLOSE": "Close", + "REMOVE": "Remove", + "APPLY": "Apply", "CLEAR-ALL": { "LABEL": "Clear all", "TOOLTIP": "This will remove all selections" @@ -290,8 +293,7 @@ } } }, - "FORMS": "Search Forms", - "UNKNOWN_FORM": "Unknown Configuration", + "UNKNOWN_CONFIGURATION": "Unknown Configuration", "SEARCH_HEADER" : { "TITLE":"Filter", "TYPE": "Type", diff --git a/lib/content-services/src/lib/mock/search-filter-mock.ts b/lib/content-services/src/lib/mock/search-filter-mock.ts index 3b492c2585f..d886b5b9618 100644 --- a/lib/content-services/src/lib/mock/search-filter-mock.ts +++ b/lib/content-services/src/lib/mock/search-filter-mock.ts @@ -15,6 +15,8 @@ * limitations under the License. */ +import { SearchCategory } from '../search'; + export const expandableCategories = [ { id: 'cat-1', @@ -68,7 +70,7 @@ export const expandedCategories = [ } ]; -export const simpleCategories = [ +export const simpleCategories: SearchCategory[] = [ { id: 'queryName', name: 'Name', @@ -76,7 +78,9 @@ export const simpleCategories = [ enabled: true, component: { selector: 'text', - settings: {} + settings: { + field: '' + } } }, { @@ -87,7 +91,7 @@ export const simpleCategories = [ component: { selector: 'check-list', settings: { - 'field': null, + 'field': 'check-list', 'pageSize': 5, 'options': [ { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, @@ -624,6 +628,7 @@ export const mockContentSizeResponseBucket = { }; export function getMockSearchResultWithResponseBucket() { - mockSearchResult.list.context.facets[3].buckets.push(mockContentSizeResponseBucket); - return mockSearchResult; + const cloneResult = JSON.parse(JSON.stringify( mockSearchResult)); + cloneResult.list.context.facets[3].buckets.push(mockContentSizeResponseBucket); + return cloneResult; } diff --git a/lib/content-services/src/lib/search/components/reset-search.directive.spec.ts b/lib/content-services/src/lib/search/components/reset-search.directive.spec.ts new file mode 100644 index 00000000000..4d592693c98 --- /dev/null +++ b/lib/content-services/src/lib/search/components/reset-search.directive.spec.ts @@ -0,0 +1,58 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component } from '@angular/core'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { setupTestBed } from '@alfresco/adf-core'; +import { TranslateModule } from '@ngx-translate/core'; +import { ContentTestingModule } from '../../testing/content.testing.module'; +import { SearchFacetFiltersService } from '../services/search-facet-filters.service'; +import { SearchQueryBuilderService } from '../services/search-query-builder.service'; + +@Component({ + template: `` +}) +class TestComponent { +} + +describe('Directive: ResetSearchDirective', () => { + let fixture: ComponentFixture ; + let searchFacetFiltersService: SearchFacetFiltersService; + let queryBuilder: SearchQueryBuilderService; + + setupTestBed({ + imports: [ + TranslateModule.forRoot(), + ContentTestingModule + ], + declarations: [TestComponent] + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TestComponent); + searchFacetFiltersService = TestBed.inject(SearchFacetFiltersService); + queryBuilder = TestBed.inject(SearchQueryBuilderService); + }); + + it('should reset the search on click', () => { + spyOn(queryBuilder, 'resetToDefaults'); + searchFacetFiltersService.responseFacets = [ { type: 'field', label: 'f1' } ] as any; + fixture.nativeElement.querySelector('button').click(); + expect(searchFacetFiltersService.responseFacets).toEqual([]); + expect(queryBuilder.resetToDefaults).toHaveBeenCalled(); + }); +}); diff --git a/lib/content-services/src/lib/search/components/reset-search.directive.ts b/lib/content-services/src/lib/search/components/reset-search.directive.ts new file mode 100644 index 00000000000..f3ca809b975 --- /dev/null +++ b/lib/content-services/src/lib/search/components/reset-search.directive.ts @@ -0,0 +1,31 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Directive, HostListener } from '@angular/core'; +import { SearchFacetFiltersService } from '../services/search-facet-filters.service'; + +@Directive({ + selector: '[adf-reset-search]' +}) +export class ResetSearchDirective { + @HostListener('click') + onClick() { + this.filterService.reset(); + } + + constructor(private filterService: SearchFacetFiltersService) { } +} diff --git a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.html b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.html index c1c0c1ee9a9..e21a26f0461 100644 --- a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.html +++ b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.html @@ -6,8 +6,7 @@ [attr.data-automation-id]="'checkbox-' + (option.name)" (change)="changeHandler($event, option)" class="adf-facet-filter"> - {{ option.name | translate }} @@ -15,9 +14,9 @@- -