diff --git a/src/app/+search-page/search-filters/search-filters.component.scss b/src/app/+search-page/search-filters/search-filters.component.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/app/core/data/relationship.service.ts b/src/app/core/data/relationship.service.ts index 8281d29cca..3673a6c94f 100644 --- a/src/app/core/data/relationship.service.ts +++ b/src/app/core/data/relationship.service.ts @@ -318,13 +318,15 @@ export class RelationshipService extends DataService { }) ) ), + tap(() => this.removeRelationshipItemsFromCache(item1)), + tap(() => this.removeRelationshipItemsFromCache(item2)), switchMap((relationshipAndType: { relation: Relationship, type: RelationshipType }) => { const { relation, type } = relationshipAndType; let updatedRelationship; if (relationshipLabel === type.leftwardType) { - updatedRelationship = Object.assign(new Relationship(), relation, { leftwardValue: nameVariant }); - } else { updatedRelationship = Object.assign(new Relationship(), relation, { rightwardValue: nameVariant }); + } else { + updatedRelationship = Object.assign(new Relationship(), relation, { leftwardValue: nameVariant }); } return this.update(updatedRelationship); }) diff --git a/src/app/core/shared/metadata.models.ts b/src/app/core/shared/metadata.models.ts index 9c7e30dcb4..085cdb4504 100644 --- a/src/app/core/shared/metadata.models.ts +++ b/src/app/core/shared/metadata.models.ts @@ -81,6 +81,9 @@ export interface MetadataValueFilter { /** The value constraint. */ value?: string; + /** The authority constraint. */ + authority?: string; + /** Whether the value constraint should match without regard to case. */ ignoreCase?: boolean; diff --git a/src/app/core/shared/metadata.utils.spec.ts b/src/app/core/shared/metadata.utils.spec.ts index 1e1d7f86d5..f4b3517649 100644 --- a/src/app/core/shared/metadata.utils.spec.ts +++ b/src/app/core/shared/metadata.utils.spec.ts @@ -8,8 +8,8 @@ import { } from './metadata.models'; import { Metadata } from './metadata.utils'; -const mdValue = (value: string, language?: string): MetadataValue => { - return Object.assign(new MetadataValue(), { uuid: uuidv4(), value: value, language: isUndefined(language) ? null : language, place: 0, authority: undefined, confidence: undefined }); +const mdValue = (value: string, language?: string, authority?: string): MetadataValue => { + return Object.assign(new MetadataValue(), { uuid: uuidv4(), value: value, language: isUndefined(language) ? null : language, place: 0, authority: isUndefined(authority) ? null : authority, confidence: undefined }); }; const dcDescription = mdValue('Some description'); @@ -184,6 +184,8 @@ describe('Metadata', () => { testValueMatches(mdValue('a'), true, { language: null }); testValueMatches(mdValue('a'), false, { language: 'en_US' }); testValueMatches(mdValue('a', 'en_US'), true, { language: 'en_US' }); + testValueMatches(mdValue('a', undefined, '4321'), true, { authority: '4321' }); + testValueMatches(mdValue('a', undefined, '4321'), false, { authority: '1234' }); }); describe('toViewModelList method', () => { diff --git a/src/app/core/shared/metadata.utils.ts b/src/app/core/shared/metadata.utils.ts index 62a1957e22..334c430968 100644 --- a/src/app/core/shared/metadata.utils.ts +++ b/src/app/core/shared/metadata.utils.ts @@ -127,6 +127,8 @@ export class Metadata { return true; } else if (filter.language && filter.language !== mdValue.language) { return false; + } else if (filter.authority && filter.authority !== mdValue.authority) { + return false; } else if (filter.value) { let fValue = filter.value; let mValue = mdValue.value; diff --git a/src/app/core/shared/search/search-configuration.service.ts b/src/app/core/shared/search/search-configuration.service.ts index 83073d6822..8ae0855cae 100644 --- a/src/app/core/shared/search/search-configuration.service.ts +++ b/src/app/core/shared/search/search-configuration.service.ts @@ -12,7 +12,7 @@ import { DSpaceObjectType } from '../dspace-object-type.model'; import { SortDirection, SortOptions } from '../../cache/models/sort-options.model'; import { RouteService } from '../../services/route.service'; import { getSucceededRemoteData } from '../operators'; -import { hasNoValue, hasValue, isNotEmpty } from '../../../shared/empty.util'; +import { hasNoValue, hasValue, isNotEmpty, isNotEmptyOperator } from '../../../shared/empty.util'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils'; /** @@ -195,6 +195,13 @@ export class SearchConfigurationService implements OnDestroy { })); } + /** + * @returns {Observable} Emits the current fixed filter as a string + */ + getCurrentFixedFilter(): Observable { + return this.routeService.getRouteParameterValue('fixedFilterQuery'); + } + /** * @returns {Observable} Emits the current active filters with their values as they are displayed in the frontend URL */ @@ -214,6 +221,7 @@ export class SearchConfigurationService implements OnDestroy { this.getQueryPart(defaults.query), this.getDSOTypePart(), this.getFiltersPart(), + this.getFixedFilterPart() ).subscribe((update) => { const currentValue: SearchOptions = this.searchOptions.getValue(); const updatedValue: SearchOptions = Object.assign(new PaginatedSearchOptions({}), currentValue, update); @@ -235,6 +243,7 @@ export class SearchConfigurationService implements OnDestroy { this.getQueryPart(defaults.query), this.getDSOTypePart(), this.getFiltersPart(), + this.getFixedFilterPart() ).subscribe((update) => { const currentValue: PaginatedSearchOptions = this.paginatedSearchOptions.getValue(); const updatedValue: PaginatedSearchOptions = Object.assign(new PaginatedSearchOptions({}), currentValue, update); @@ -331,4 +340,16 @@ export class SearchConfigurationService implements OnDestroy { return { filters } })); } + + /** + * @returns {Observable} Emits the current fixed filter as a partial SearchOptions object + */ + private getFixedFilterPart(): Observable { + return this.getCurrentFixedFilter().pipe( + isNotEmptyOperator(), + map((fixedFilter) => { + return { fixedFilter } + }), + ); + } } diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html index 8dafe396db..df93c2f4f3 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html @@ -1,8 +1,8 @@ -
-
+
+
-
+
- diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.scss b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.scss index e69de29bb2..8fc6d2138d 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.scss +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.scss @@ -0,0 +1,7 @@ +@import '../../../../../../styles/variables'; + +$submission-relationship-thumbnail-width: 80px; + +.person-thumbnail { + width: $submission-relationship-thumbnail-width; +} \ No newline at end of file diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.scss b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.scss new file mode 100644 index 0000000000..8301e12c5f --- /dev/null +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.scss @@ -0,0 +1,18 @@ +form { + z-index: 1; + &:before { + position: absolute; + font-weight: 900; + font-family: "Font Awesome 5 Free"; + content: "\f0d7"; + top: 7px; + right: 0; + height: 20px; + width: 20px; + z-index: -1; + } + + input.suggestion_input { + background: transparent; + } +} \ No newline at end of file diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.ts index 5154c168df..a1802ce1a7 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-suggestions/person-input-suggestions.component.ts @@ -1,11 +1,10 @@ import { Component, forwardRef, Input, OnInit } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; -import { InputSuggestion } from '../../../../../../shared/input-suggestions/input-suggestions.model'; import { InputSuggestionsComponent } from '../../../../../../shared/input-suggestions/input-suggestions.component'; @Component({ selector: 'ds-person-input-suggestions', - styleUrls: ['./../../../../../../shared/input-suggestions/input-suggestions.component.scss'], + styleUrls: ['./person-input-suggestions.component.scss', './../../../../../../shared/input-suggestions/input-suggestions.component.scss'], templateUrl: './person-input-suggestions.component.html', providers: [ { diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html index 1208eebf17..c5b7668141 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html @@ -56,13 +56,15 @@
  • - - - + + + + +
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts index a2ba71f101..25708eb90f 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts @@ -70,7 +70,9 @@ import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-a import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components'; import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './models/relation-group/dynamic-relation-group.model'; import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component'; -import { map, switchMap, tap } from 'rxjs/operators'; +import { map, switchMap, take, tap } from 'rxjs/operators'; +import { zip as observableZip } from 'rxjs'; +import { combineLatest as observableCombineLatest } from 'rxjs'; import { SelectableListState } from '../../../object-list/selectable-list/selectable-list.reducer'; import { Observable } from 'rxjs'; import { SearchResult } from '../../../search/search-result.model'; @@ -81,7 +83,7 @@ import { SelectableListService } from '../../../object-list/selectable-list/sele import { DsDynamicDisabledComponent } from './models/disabled/dynamic-disabled.component'; import { DYNAMIC_FORM_CONTROL_TYPE_DISABLED } from './models/disabled/dynamic-disabled.model'; import { DsDynamicLookupRelationModalComponent } from './relation-lookup-modal/dynamic-lookup-relation-modal.component'; -import { getRemoteDataPayload, getSucceededRemoteData } from '../../../../core/shared/operators'; +import { getAllSucceededRemoteData, getRemoteDataPayload, getSucceededRemoteData } from '../../../../core/shared/operators'; import { RemoteData } from '../../../../core/data/remote-data'; import { Item } from '../../../../core/shared/item.model'; import { ItemDataService } from '../../../../core/data/item-data.service'; @@ -92,6 +94,9 @@ import { SubmissionObjectDataService } from '../../../../core/submission/submiss import { SubmissionObject } from '../../../../core/submission/models/submission-object.model'; import { PaginatedList } from '../../../../core/data/paginated-list'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; +import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model'; +import { MetadataValue } from '../../../../core/shared/metadata.models'; +import * as uuidv4 from 'uuid/v4'; export function dsDynamicFormControlMapFn(model: DynamicFormControlModel): Type | null { switch (model.type) { @@ -181,6 +186,8 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo item$: Observable; listId: string; searchConfig: string; + modelValueMDRepresentation; + /* tslint:disable:no-output-rename */ @Output('dfBlur') blur: EventEmitter = new EventEmitter(); @Output('dfChange') change: EventEmitter = new EventEmitter(); @@ -213,6 +220,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo } ngOnInit(): void { + const q = uuidv4(); this.hasRelationLookup = hasValue(this.model.relationship); if (this.hasRelationLookup) { this.listId = 'list-' + this.model.relationship.relationshipType; @@ -220,9 +228,9 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo .findById(this.model.submissionId).pipe( getSucceededRemoteData(), getRemoteDataPayload(), - switchMap((submissionObject: SubmissionObject) => (submissionObject.item as Observable>).pipe(getSucceededRemoteData(), getRemoteDataPayload()))); - + switchMap((submissionObject: SubmissionObject) => (submissionObject.item as Observable>).pipe(getAllSucceededRemoteData(), getRemoteDataPayload()))); this.item$.pipe( + take(1), switchMap((item: Item) => this.relationService.getRelatedItemsByLabel(item, this.model.relationship.relationshipType)), map((items: RemoteData>) => items.payload.page.map((item) => Object.assign(new ItemSearchResult(), { indexableObject: item }))), ).subscribe((relatedItems: SearchResult[]) => this.selectableListService.select(this.listId, relatedItems)); @@ -230,6 +238,23 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo this.relationships$ = this.selectableListService.getSelectableList(this.listId).pipe( map((listState: SelectableListState) => hasValue(listState) && hasValue(listState.selection) ? listState.selection : []), ) as Observable[]>; + this.modelValueMDRepresentation = + observableCombineLatest(this.item$, this.relationships$).pipe( + map(([item, relatedItems]: [Item, SearchResult[]]) => + relatedItems + .map((element: SearchResult) => { + const relationMD: MetadataValue = item.firstMetadata(this.model.relationship.metadataField, { value: element.indexableObject.uuid }); + if (hasValue(relationMD)) { + const metadataRepresentationMD: MetadataValue = item.firstMetadata(this.model.metadataFields, { authority: relationMD.authority }); + return Object.assign( + new ItemMetadataRepresentation(metadataRepresentationMD), + element.indexableObject + ) + } + }) + ) + ); + } } @@ -275,16 +300,16 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo } openLookup() { + this.modalRef = this.modalService.open(DsDynamicLookupRelationModalComponent, { size: 'lg', centered: true }); + const modalComp = this.modalRef.componentInstance; + modalComp.repeatable = this.model.repeatable; + modalComp.listId = this.listId; + modalComp.relationshipOptions = this.model.relationship; + modalComp.label = this.model.label; + modalComp.metadataFields = this.model.metadataFields; this.item$.subscribe((item: Item) => { - this.modalRef = this.modalService.open(DsDynamicLookupRelationModalComponent, { size: 'lg', centered: true}); - const modalComp = this.modalRef.componentInstance; - modalComp.repeatable = this.model.repeatable; - modalComp.listId = this.listId; - modalComp.relationshipOptions = this.model.relationship; - modalComp.label = this.model.label; modalComp.item = item; - modalComp.metadataFields = this.model.metadataFields; - }) + }); } removeSelection(object: SearchResult) { diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts index 9ac8e93f58..c2e075549f 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts @@ -113,9 +113,9 @@ export class RelationshipEffects { mergeMap((type: RelationshipType) => { const isSwitched = type.rightwardType === relationshipType; if (isSwitched) { - return this.relationshipService.addRelationship(type.id, item2, item1, undefined, nameVariant); + return this.relationshipService.addRelationship(type.id, item2, item1, nameVariant, undefined); } else { - return this.relationshipService.addRelationship(type.id, item1, item2, nameVariant, undefined); + return this.relationshipService.addRelationship(type.id, item1, item2, undefined, nameVariant); } } ) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.ts index 270e2d88fa..4a9755fd63 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.ts @@ -80,7 +80,7 @@ export class DsDynamicLookupRelationSearchTabComponent implements OnInit, OnDest /* TODO: in Rxjs 6.4.0 and up, we can replace this with takeWhile(predicate, true) - see https://stackoverflow.com/a/44644237 */ multicast( () => new ReplaySubject(1), - subject => subject.pipe( + (subject) => subject.pipe( takeWhile((rd: RemoteData>>) => rd.isLoading), concat(subject.pipe(take(1))) ) @@ -146,7 +146,7 @@ export class DsDynamicLookupRelationSearchTabComponent implements OnInit, OnDest this.allSelected = false; this.selection$ .pipe(take(1)) - .subscribe((selection: SearchResult[]) => this.deselectObject.emit(...selection)); + .subscribe((selection: Array>) => this.deselectObject.emit(...selection)); this.selectableListService.deselectAll(this.listId); } @@ -155,4 +155,4 @@ export class DsDynamicLookupRelationSearchTabComponent implements OnInit, OnDest this.subscription.unsubscribe(); } } -} \ No newline at end of file +} diff --git a/src/app/shared/form/builder/models/relationship-options.model.ts b/src/app/shared/form/builder/models/relationship-options.model.ts index 62caedb06e..87b84cc1d5 100644 --- a/src/app/shared/form/builder/models/relationship-options.model.ts +++ b/src/app/shared/form/builder/models/relationship-options.model.ts @@ -1,6 +1,12 @@ -export interface RelationshipOptions { +const RELATION_METADATA_PREFIX = "relation." + +export class RelationshipOptions { relationshipType: string; filter: string; searchConfiguration: string; nameVariants: boolean; + + get metadataField() { + return RELATION_METADATA_PREFIX + this.relationshipType + } } diff --git a/src/app/shared/form/builder/parsers/field-parser.ts b/src/app/shared/form/builder/parsers/field-parser.ts index 1f10410614..f7bf12353c 100644 --- a/src/app/shared/form/builder/parsers/field-parser.ts +++ b/src/app/shared/form/builder/parsers/field-parser.ts @@ -13,10 +13,11 @@ import { DynamicFormControlLayout } from '@ng-dynamic-forms/core'; import { setLayout } from './parser.utils'; import { AuthorityOptions } from '../../../../core/integration/models/authority-options.model'; import { ParserOptions } from './parser-options'; +import { RelationshipOptions } from '../models/relationship-options.model'; export const SUBMISSION_ID: InjectionToken = new InjectionToken('submissionId'); export const CONFIG_DATA: InjectionToken = new InjectionToken('configData'); -export const INIT_FORM_VALUES:InjectionToken = new InjectionToken('initFormValues'); +export const INIT_FORM_VALUES: InjectionToken = new InjectionToken('initFormValues'); export const PARSER_OPTIONS: InjectionToken = new InjectionToken('parserOptions'); export abstract class FieldParser { @@ -28,7 +29,8 @@ export abstract class FieldParser { @Inject(CONFIG_DATA) protected configData: FormFieldModel, @Inject(INIT_FORM_VALUES) protected initFormValues: any, @Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions - ) {} + ) { + } public abstract modelFactory(fieldValue?: FormFieldMetadataValueObject, label?: boolean): any; @@ -196,7 +198,9 @@ export abstract class FieldParser { // Set read only option controlModel.readOnly = this.parserOptions.readOnly; controlModel.disabled = this.parserOptions.readOnly; - controlModel.relationship = this.configData.selectableRelationship; + if (hasValue(this.configData.selectableRelationship)) { + controlModel.relationship = Object.assign(new RelationshipOptions(), this.configData.selectableRelationship); + } controlModel.repeatable = this.configData.repeatable; controlModel.metadataFields = isNotEmpty(this.configData.selectableMetadata) ? this.configData.selectableMetadata.map((metadataObject) => metadataObject.metadata) : []; controlModel.submissionId = this.submissionId; @@ -220,14 +224,14 @@ export abstract class FieldParser { if (this.configData.languageCodes && this.configData.languageCodes.length > 0) { (controlModel as DsDynamicInputModel).languageCodes = this.configData.languageCodes; } -/* (controlModel as DsDynamicInputModel).languageCodes = [{ - display: 'English', - code: 'en_US' - }, - { - display: 'Italian', - code: 'it_IT' - }];*/ + /* (controlModel as DsDynamicInputModel).languageCodes = [{ + display: 'English', + code: 'en_US' + }, + { + display: 'Italian', + code: 'it_IT' + }];*/ return controlModel; } @@ -238,21 +242,21 @@ export abstract class FieldParser { protected addPatternValidator(controlModel) { const regex = new RegExp(this.configData.input.regex); - controlModel.validators = Object.assign({}, controlModel.validators, {pattern: regex}); + controlModel.validators = Object.assign({}, controlModel.validators, { pattern: regex }); controlModel.errorMessages = Object.assign( {}, controlModel.errorMessages, - {pattern: 'error.validation.pattern'}); + { pattern: 'error.validation.pattern' }); } protected markAsRequired(controlModel) { controlModel.required = true; - controlModel.validators = Object.assign({}, controlModel.validators, {required: null}); + controlModel.validators = Object.assign({}, controlModel.validators, { required: null }); controlModel.errorMessages = Object.assign( {}, controlModel.errorMessages, - {required: this.configData.mandatoryMessage}); + { required: this.configData.mandatoryMessage }); } protected setLabel(controlModel, label = true, labelEmpty = false) { @@ -269,7 +273,7 @@ export abstract class FieldParser { if (key === 0) { controlModel.value = option.metadata; } - controlModel.options.push({label: option.label, value: option.metadata}); + controlModel.options.push({ label: option.label, value: option.metadata }); }); } } diff --git a/themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss b/themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss deleted file mode 100644 index 42b8e0205b..0000000000 --- a/themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import 'src/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss'; - -::ng-deep .noUi-connect { - background: $info; -} diff --git a/themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html b/themes/mantis/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html similarity index 100% rename from themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html rename to themes/mantis/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html diff --git a/themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html b/themes/mantis/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html similarity index 100% rename from themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html rename to themes/mantis/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html diff --git a/themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.html b/themes/mantis/app/shared/search/search-filters/search-filter/search-filter.component.html similarity index 100% rename from themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.html rename to themes/mantis/app/shared/search/search-filters/search-filter/search-filter.component.html diff --git a/themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss b/themes/mantis/app/shared/search/search-filters/search-filter/search-filter.component.scss similarity index 61% rename from themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss rename to themes/mantis/app/shared/search/search-filters/search-filter/search-filter.component.scss index 8e9b1d32b1..4d2d29ae41 100644 --- a/themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss +++ b/themes/mantis/app/shared/search/search-filters/search-filter/search-filter.component.scss @@ -1,4 +1,4 @@ -@import 'src/app/+search-page/search-filters/search-filter/search-filter.component.scss'; +@import 'src/app/shared/search/search-filters/search-filter/search-filter.component.scss'; .facet-filter { background-color: map-get($theme-colors, light); diff --git a/themes/mantis/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.scss b/themes/mantis/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.scss new file mode 100644 index 0000000000..7edcb8f063 --- /dev/null +++ b/themes/mantis/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.scss @@ -0,0 +1,5 @@ +@import 'src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.scss'; + +::ng-deep .noUi-connect { + background: $info; +} diff --git a/themes/mantis/app/+search-page/search-filters/search-filters.component.html b/themes/mantis/app/shared/search/search-filters/search-filters.component.html similarity index 100% rename from themes/mantis/app/+search-page/search-filters/search-filters.component.html rename to themes/mantis/app/shared/search/search-filters/search-filters.component.html diff --git a/themes/mantis/app/+search-page/search-settings/search-settings.component.html b/themes/mantis/app/shared/search/search-settings/search-settings.component.html similarity index 100% rename from themes/mantis/app/+search-page/search-settings/search-settings.component.html rename to themes/mantis/app/shared/search/search-settings/search-settings.component.html diff --git a/themes/mantis/app/+search-page/search-settings/search-settings.component.scss b/themes/mantis/app/shared/search/search-settings/search-settings.component.scss similarity index 65% rename from themes/mantis/app/+search-page/search-settings/search-settings.component.scss rename to themes/mantis/app/shared/search/search-settings/search-settings.component.scss index 602c8ca4c3..073039dae8 100644 --- a/themes/mantis/app/+search-page/search-settings/search-settings.component.scss +++ b/themes/mantis/app/shared/search/search-settings/search-settings.component.scss @@ -1,4 +1,4 @@ -@import 'src/app/+search-page/search-settings/search-settings.component.scss'; +@import 'src/app/shared/search/search-settings/search-settings.component.scss'; .setting-option { background-color: map-get($theme-colors, light);