@fluid-topics/ft-search-selected-facets 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/build/ft-search-selected-facets.css.d.ts +4 -0
- package/build/ft-search-selected-facets.css.js +13 -0
- package/build/ft-search-selected-facets.d.ts +16 -0
- package/build/ft-search-selected-facets.js +75 -0
- package/build/ft-search-selected-facets.light.js +742 -0
- package/build/ft-search-selected-facets.min.js +869 -0
- package/build/ft-search-selected-facets.properties.d.ts +2 -0
- package/build/ft-search-selected-facets.properties.js +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.js +6 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
List of selected facets in a designed search page context
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```shell
|
|
6
|
+
npm install @fluid-topics/ft-search-selected-facets
|
|
7
|
+
yarn add @fluid-topics/ft-search-selected-facets
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { html } from "lit"
|
|
14
|
+
import "@fluid-topics/ft-search-selected-facets"
|
|
15
|
+
|
|
16
|
+
function render() {
|
|
17
|
+
return html` <ft-search-selected-facets></ft-search-selected-facets> `
|
|
18
|
+
}
|
|
19
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
import { FtCssVariableFactory } from "@fluid-topics/ft-wc-utils";
|
|
3
|
+
export const FtSearchSelectedFacetsCssVariables = {
|
|
4
|
+
spacing: FtCssVariableFactory.create("--ft-search-selected-facets-spacing", "SIZE", "8px")
|
|
5
|
+
};
|
|
6
|
+
// language=CSS
|
|
7
|
+
export const styles = css `
|
|
8
|
+
.ft-search-selected-facets--container {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-wrap: wrap;
|
|
11
|
+
gap: ${FtSearchSelectedFacetsCssVariables.spacing};
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { nothing } from "lit";
|
|
2
|
+
import { ElementDefinitionsMap } from "@fluid-topics/ft-wc-utils";
|
|
3
|
+
import { FtSearchSelectedFacetsProperties } from "./ft-search-selected-facets.properties";
|
|
4
|
+
import { FtSearchComponent } from "@fluid-topics/ft-search-context/build/registration";
|
|
5
|
+
import { FtSearchFacet } from "@fluid-topics/public-api";
|
|
6
|
+
export declare class FtSearchSelectedFacets extends FtSearchComponent implements FtSearchSelectedFacetsProperties {
|
|
7
|
+
static elementDefinitions: ElementDefinitionsMap;
|
|
8
|
+
static styles: import("lit").CSSResult;
|
|
9
|
+
facets?: Array<FtSearchFacet>;
|
|
10
|
+
protected render(): typeof nothing | import("lit-html").TemplateResult<1>;
|
|
11
|
+
private getSelectedValues;
|
|
12
|
+
private getLabelFromValue;
|
|
13
|
+
private getBreadcrumbFromValue;
|
|
14
|
+
private quote;
|
|
15
|
+
private unquote;
|
|
16
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, nothing } from "lit";
|
|
8
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
9
|
+
import { flatDeep, redux } from "@fluid-topics/ft-wc-utils";
|
|
10
|
+
import { styles } from "./ft-search-selected-facets.css";
|
|
11
|
+
import { FtSearchComponent } from "@fluid-topics/ft-search-context/build/registration";
|
|
12
|
+
import { FtChip } from "@fluid-topics/ft-chip";
|
|
13
|
+
import { FtTooltip } from "@fluid-topics/ft-tooltip";
|
|
14
|
+
class FtSearchSelectedFacets extends FtSearchComponent {
|
|
15
|
+
render() {
|
|
16
|
+
if (this.facets == null || this.facets.length === 0) {
|
|
17
|
+
return nothing;
|
|
18
|
+
}
|
|
19
|
+
return html `
|
|
20
|
+
|
|
21
|
+
<div class="ft-search-selected-facets--container">
|
|
22
|
+
${repeat(this.facets, facet => facet.key, facet => {
|
|
23
|
+
const values = this.getSelectedValues(facet);
|
|
24
|
+
return repeat(values, value => facet.key + "-" + value, value => {
|
|
25
|
+
let label = facet.label + ": " + this.getBreadcrumbFromValue(value);
|
|
26
|
+
const keyWithNoColumn = facet.key.replace(":", "-");
|
|
27
|
+
return html `
|
|
28
|
+
<ft-tooltip inline text="${label}"
|
|
29
|
+
part="tooltips tooltip-${keyWithNoColumn}">
|
|
30
|
+
<ft-chip
|
|
31
|
+
part="ft-search-selected-facets ft-search-selected-facet-${keyWithNoColumn}"
|
|
32
|
+
removable
|
|
33
|
+
label="${label}"
|
|
34
|
+
@icon-click=${() => { var _a; return (_a = this.stateManager) === null || _a === void 0 ? void 0 : _a.setFilter(facet.key, values.filter(v => v !== value)); }}
|
|
35
|
+
data-key="${facet.key}"
|
|
36
|
+
data-value="${value}">
|
|
37
|
+
${this.getLabelFromValue(value)}
|
|
38
|
+
</ft-chip>
|
|
39
|
+
</ft-tooltip>
|
|
40
|
+
`;
|
|
41
|
+
});
|
|
42
|
+
})}
|
|
43
|
+
</div>
|
|
44
|
+
`;
|
|
45
|
+
}
|
|
46
|
+
getSelectedValues(facet) {
|
|
47
|
+
return flatDeep(facet.rootNodes, n => n.selected ? [] : n.childNodes)
|
|
48
|
+
.filter(n => n.selected)
|
|
49
|
+
.map(n => n.value);
|
|
50
|
+
}
|
|
51
|
+
getLabelFromValue(value) {
|
|
52
|
+
return this.unquote(value).split("|").pop();
|
|
53
|
+
}
|
|
54
|
+
getBreadcrumbFromValue(value) {
|
|
55
|
+
return this.unquote(value).split("|").join(" > ");
|
|
56
|
+
}
|
|
57
|
+
quote(value) {
|
|
58
|
+
return `"${value}"`;
|
|
59
|
+
}
|
|
60
|
+
unquote(value) {
|
|
61
|
+
if (value.startsWith("\"") && value.endsWith("\"")) {
|
|
62
|
+
return value.replace(/(^"+)|("+$)/g, "");
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
FtSearchSelectedFacets.elementDefinitions = {
|
|
68
|
+
"ft-chip": FtChip,
|
|
69
|
+
"ft-tooltip": FtTooltip,
|
|
70
|
+
};
|
|
71
|
+
FtSearchSelectedFacets.styles = styles;
|
|
72
|
+
__decorate([
|
|
73
|
+
redux()
|
|
74
|
+
], FtSearchSelectedFacets.prototype, "facets", void 0);
|
|
75
|
+
export { FtSearchSelectedFacets };
|