@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 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,4 @@
1
+ export declare const FtSearchSelectedFacetsCssVariables: {
2
+ spacing: import("@fluid-topics/ft-wc-utils").FtCssVariable;
3
+ };
4
+ export declare const styles: import("lit").CSSResult;
@@ -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 };