@redocly/theme 0.41.0-rc.4 → 0.41.0

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.
Files changed (103) hide show
  1. package/lib/components/CodeBlock/CodeBlockControls.js +2 -1
  2. package/lib/components/Dropdown/DropdownMenu.d.ts +0 -2
  3. package/lib/components/Dropdown/DropdownMenu.js +1 -3
  4. package/lib/components/Search/Search.js +1 -1
  5. package/lib/components/Search/SearchDialog.js +26 -103
  6. package/lib/components/Search/SearchHighlight.d.ts +1 -1
  7. package/lib/components/Search/SearchHighlight.js +5 -28
  8. package/lib/components/Search/SearchInput.d.ts +2 -3
  9. package/lib/components/Search/SearchInput.js +3 -11
  10. package/lib/components/Search/SearchItem.d.ts +2 -2
  11. package/lib/components/Search/SearchItem.js +15 -23
  12. package/lib/components/Search/variables.js +2 -48
  13. package/lib/components/Segmented/Segmented.d.ts +5 -2
  14. package/lib/components/Select/Select.d.ts +36 -2
  15. package/lib/components/Select/Select.js +98 -134
  16. package/lib/components/Select/variables.js +1 -11
  17. package/lib/components/Tag/Tag.d.ts +2 -4
  18. package/lib/components/Tag/Tag.js +4 -40
  19. package/lib/components/Tag/variables.dark.js +5 -20
  20. package/lib/components/Tag/variables.js +17 -49
  21. package/lib/components/VersionPicker/VersionPicker.d.ts +3 -2
  22. package/lib/components/VersionPicker/VersionPicker.js +30 -13
  23. package/lib/core/hooks/__mocks__/index.d.ts +1 -1
  24. package/lib/core/hooks/__mocks__/index.js +1 -1
  25. package/lib/core/hooks/__mocks__/use-theme-hooks.d.ts +1 -1
  26. package/lib/core/hooks/__mocks__/use-theme-hooks.js +1 -1
  27. package/lib/core/hooks/index.d.ts +1 -2
  28. package/lib/core/hooks/index.js +1 -2
  29. package/lib/core/hooks/search/use-recent-searches.js +0 -2
  30. package/lib/core/hooks/{search/use-search-dialog.d.ts → use-search.d.ts} +1 -1
  31. package/lib/core/hooks/{search/use-search-dialog.js → use-search.js} +5 -5
  32. package/lib/core/types/hooks.d.ts +4 -16
  33. package/lib/core/types/index.d.ts +1 -1
  34. package/lib/core/types/index.js +1 -1
  35. package/lib/core/types/l10n.d.ts +2 -1
  36. package/lib/core/types/search.d.ts +2 -43
  37. package/lib/core/types/select-option.d.ts +4 -0
  38. package/lib/core/types/{select.js → select-option.js} +1 -1
  39. package/lib/index.d.ts +1 -7
  40. package/lib/index.js +1 -7
  41. package/package.json +2 -2
  42. package/src/components/CodeBlock/CodeBlockControls.tsx +1 -1
  43. package/src/components/Dropdown/DropdownMenu.tsx +1 -2
  44. package/src/components/Filter/FilterSelect.tsx +3 -3
  45. package/src/components/Search/Search.tsx +2 -2
  46. package/src/components/Search/SearchDialog.tsx +42 -168
  47. package/src/components/Search/SearchHighlight.tsx +2 -29
  48. package/src/components/Search/SearchInput.tsx +3 -17
  49. package/src/components/Search/SearchItem.tsx +24 -38
  50. package/src/components/Search/variables.ts +2 -48
  51. package/src/components/Segmented/Segmented.tsx +2 -2
  52. package/src/components/Select/Select.tsx +157 -200
  53. package/src/components/Select/variables.ts +1 -11
  54. package/src/components/Tag/Tag.tsx +6 -57
  55. package/src/components/Tag/variables.dark.ts +5 -20
  56. package/src/components/Tag/variables.ts +17 -49
  57. package/src/components/VersionPicker/VersionPicker.tsx +39 -15
  58. package/src/core/hooks/__mocks__/index.ts +1 -1
  59. package/src/core/hooks/__mocks__/use-theme-hooks.ts +1 -1
  60. package/src/core/hooks/index.ts +1 -2
  61. package/src/core/hooks/search/use-recent-searches.ts +0 -3
  62. package/src/core/hooks/{search/use-search-dialog.ts → use-search.ts} +1 -1
  63. package/src/core/types/hooks.ts +4 -24
  64. package/src/core/types/index.ts +1 -1
  65. package/src/core/types/l10n.ts +37 -7
  66. package/src/core/types/search.ts +2 -54
  67. package/src/core/types/select-option.ts +4 -0
  68. package/src/index.ts +1 -7
  69. package/lib/components/Loaders/SpinnerLoader.d.ts +0 -5
  70. package/lib/components/Loaders/SpinnerLoader.js +0 -32
  71. package/lib/components/Search/FilterFields/SearchFilterFieldSelect.d.ts +0 -12
  72. package/lib/components/Search/FilterFields/SearchFilterFieldSelect.js +0 -113
  73. package/lib/components/Search/FilterFields/SearchFilterFieldTags.d.ts +0 -10
  74. package/lib/components/Search/FilterFields/SearchFilterFieldTags.js +0 -37
  75. package/lib/components/Search/SearchFilter.d.ts +0 -11
  76. package/lib/components/Search/SearchFilter.js +0 -71
  77. package/lib/components/Search/SearchFilterField.d.ts +0 -11
  78. package/lib/components/Search/SearchFilterField.js +0 -43
  79. package/lib/components/Search/SearchGroups.d.ts +0 -9
  80. package/lib/components/Search/SearchGroups.js +0 -69
  81. package/lib/components/Select/SelectInput.d.ts +0 -23
  82. package/lib/components/Select/SelectInput.js +0 -129
  83. package/lib/core/hooks/search/use-search-filter.d.ts +0 -9
  84. package/lib/core/hooks/search/use-search-filter.js +0 -50
  85. package/lib/core/types/select.d.ts +0 -30
  86. package/lib/icons/ResetIcon/ResetIcon.d.ts +0 -9
  87. package/lib/icons/ResetIcon/ResetIcon.js +0 -22
  88. package/lib/icons/SettingsIcon/SettingsIcon.d.ts +0 -9
  89. package/lib/icons/SettingsIcon/SettingsIcon.js +0 -23
  90. package/src/components/Loaders/SpinnerLoader.tsx +0 -31
  91. package/src/components/Search/FilterFields/SearchFilterFieldSelect.tsx +0 -134
  92. package/src/components/Search/FilterFields/SearchFilterFieldTags.tsx +0 -61
  93. package/src/components/Search/SearchFilter.tsx +0 -90
  94. package/src/components/Search/SearchFilterField.tsx +0 -84
  95. package/src/components/Search/SearchGroups.tsx +0 -80
  96. package/src/components/Select/SelectInput.tsx +0 -201
  97. package/src/core/hooks/search/use-search-filter.ts +0 -57
  98. package/src/core/types/select.ts +0 -32
  99. package/src/icons/ResetIcon/ResetIcon.tsx +0 -26
  100. package/src/icons/SettingsIcon/SettingsIcon.tsx +0 -30
  101. /package/lib/components/{Loaders → Loading}/Loading.d.ts +0 -0
  102. /package/lib/components/{Loaders → Loading}/Loading.js +0 -0
  103. /package/src/components/{Loaders → Loading}/Loading.tsx +0 -0
@@ -1,113 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.SearchFilterFieldSelect = void 0;
30
- const react_1 = __importStar(require("react"));
31
- const styled_components_1 = __importDefault(require("styled-components"));
32
- const hooks_1 = require("../../../core/hooks");
33
- const Select_1 = require("../../../components/Select/Select");
34
- const CounterTag_1 = require("../../../components/Tags/CounterTag");
35
- function SearchFilterFieldSelect({ facet, filter, query, selectedValues, onChange, }) {
36
- const MAX_SELECT_OPTIONS = 20;
37
- const { useFacetQuery, useTranslate } = (0, hooks_1.useThemeHooks)();
38
- const { translate } = useTranslate();
39
- const { searchFacet, setSearchFacet, setSearchFacetQuery } = useFacetQuery(facet.field);
40
- const [selectOptions, setSelectOptions] = (0, react_1.useState)([]);
41
- const isMultiple = facet.type === 'multi-select';
42
- (0, react_1.useEffect)(() => {
43
- setSelectOptions(getSelectOptions());
44
- // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, [searchFacet, facet]);
46
- const onSearch = (value) => {
47
- if (value === null) {
48
- setSearchFacet(null);
49
- setSearchFacetQuery(null);
50
- }
51
- else if (typeof value === 'string') {
52
- setSearchFacetQuery({
53
- query,
54
- filter,
55
- facetQuery: value,
56
- });
57
- }
58
- };
59
- const getSelectOptions = () => {
60
- return searchFacet
61
- ? searchFacet.values.map(facetValueToSelectOption)
62
- : facet.values.map(facetValueToSelectOption);
63
- };
64
- const facetValueToSelectOption = (facetValue) => {
65
- if (!facetValue) {
66
- return { element: null, value: '' };
67
- }
68
- if (typeof facetValue === 'string') {
69
- return {
70
- element: (react_1.default.createElement(FilterSelectOptionWrapper, null,
71
- react_1.default.createElement(FilterSelectOptionText, null, facetValue))),
72
- value: facetValue,
73
- };
74
- }
75
- else {
76
- const { value, count, isCounterVisible } = facetValue;
77
- return {
78
- element: (react_1.default.createElement(FilterSelectOptionWrapper, null,
79
- react_1.default.createElement(FilterSelectOptionText, null, value),
80
- isCounterVisible && react_1.default.createElement(CounterTag_1.CounterTag, null, count))),
81
- value: value,
82
- };
83
- }
84
- };
85
- return (react_1.default.createElement(Select_1.Select, { value: selectedValues.length
86
- ? isMultiple
87
- ? selectedValues.map((value) => facetValueToSelectOption(value))
88
- : facetValueToSelectOption(selectedValues[0])
89
- : undefined, options: selectOptions, onChange: onChange, placeholder: `${translate('theme.search.filter.field.placeholder', 'Search')} ${facet.name.toLowerCase()}...`, alignment: "start", multiple: isMultiple, searchable: true, footer: selectOptions.length === MAX_SELECT_OPTIONS ? (react_1.default.createElement(FilterSelectFooter, null, "Search to show more items...")) : null, onSearch: onSearch }));
90
- }
91
- exports.SearchFilterFieldSelect = SearchFilterFieldSelect;
92
- const FilterSelectOptionWrapper = styled_components_1.default.div `
93
- width: 100%;
94
- display: flex;
95
- justify-content: space-between;
96
- align-items: center;
97
- gap: var(--search-filter-field-select-option-gap);
98
- `;
99
- const FilterSelectOptionText = styled_components_1.default.span `
100
- overflow: hidden;
101
- text-overflow: ellipsis;
102
- white-space: nowrap;
103
- width: 100%;
104
- padding: var(--search-filter-field-select-option-text-padding);
105
- `;
106
- const FilterSelectFooter = styled_components_1.default.div `
107
- display: flex;
108
- align-items: center;
109
- justify-content: center;
110
- padding: var(--search-filter-field-select-footer-padding);
111
- color: var(--search-filter-field-select-footer-text-color);
112
- `;
113
- //# sourceMappingURL=SearchFilterFieldSelect.js.map
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import type { SearchFacet } from '../../../core/types';
3
- type SearchFilterFieldTagsProps = {
4
- className?: string;
5
- facet: SearchFacet;
6
- selectedValues: string[];
7
- onChange: (value: string | string[]) => void;
8
- };
9
- export declare function SearchFilterFieldTags({ className, facet, selectedValues, onChange, }: SearchFilterFieldTagsProps): React.JSX.Element;
10
- export {};
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SearchFilterFieldTags = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const styled_components_1 = __importDefault(require("styled-components"));
9
- const Tag_1 = require("../../../components/Tag/Tag");
10
- function SearchFilterFieldTags({ className, facet, selectedValues, onChange, }) {
11
- return (react_1.default.createElement(FilterTagsWrapper, { "data-component-name": "Search/FilterFields/SearchFilterFieldTags", className: className }, facet.values.map((facetCount, index) => {
12
- const { value, count, isCounterVisible } = facetCount;
13
- const active = selectedValues.includes(value);
14
- return (react_1.default.createElement(FilterTagWrapper, { key: `${count}-${index}`, color: value, onClick: () => {
15
- const values = active
16
- ? selectedValues.filter((item) => item !== value)
17
- : [...selectedValues, value];
18
- onChange(values);
19
- }, active: active, borderless: true },
20
- value,
21
- " ",
22
- isCounterVisible && react_1.default.createElement("span", null, count)));
23
- })));
24
- }
25
- exports.SearchFilterFieldTags = SearchFilterFieldTags;
26
- const FilterTagsWrapper = styled_components_1.default.div `
27
- display: flex;
28
- flex-wrap: wrap;
29
- gap: var(--search-filter-field-tags-gap);
30
- `;
31
- const FilterTagWrapper = (0, styled_components_1.default)(Tag_1.Tag) `
32
- text-transform: uppercase;
33
- cursor: pointer;
34
- ${({ color }) => color && `background-color: var(--tag-operation-bg-color-${color});`}
35
- margin: var(--search-filter-field-tags-tag-margin);
36
- `;
37
- //# sourceMappingURL=SearchFilterFieldTags.js.map
@@ -1,11 +0,0 @@
1
- import type { SearchFilterItem, SearchFacet } from '../../core/types';
2
- export type SearchFilterProps = {
3
- className?: string;
4
- facets: SearchFacet[];
5
- filter: SearchFilterItem[];
6
- query: string;
7
- onFilterChange: (field: string, value: string | string[], isTop?: boolean) => void;
8
- onFilterReset: () => void;
9
- onFacetReset: (field: string) => void;
10
- };
11
- export declare function SearchFilter({ className, facets, filter, query, onFilterChange, onFilterReset, onFacetReset, }: SearchFilterProps): JSX.Element;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.SearchFilter = void 0;
30
- const React = __importStar(require("react"));
31
- const styled_components_1 = __importDefault(require("styled-components"));
32
- const Button_1 = require("../../components/Button/Button");
33
- const CleanIcon_1 = require("../../icons/CleanIcon/CleanIcon");
34
- const SearchFilterField_1 = require("../../components/Search/SearchFilterField");
35
- const hooks_1 = require("../../core/hooks");
36
- function SearchFilter({ className, facets, filter, query, onFilterChange, onFilterReset, onFacetReset, }) {
37
- const { useTranslate } = (0, hooks_1.useThemeHooks)();
38
- const { translate } = useTranslate();
39
- return (React.createElement(SearchFilterWrapper, { "data-component-name": "Search/SearchFilter", className: className },
40
- React.createElement(SearchFilterHeader, null,
41
- React.createElement("span", { "data-translation-key": "theme.search.filter.title" }, translate('theme.search.filter.title', 'Advanced filter')),
42
- React.createElement(Button_1.Button, { "data-translation-key": "theme.search.filter.reset", onClick: onFilterReset, variant: "ghost", icon: React.createElement(CleanIcon_1.CleanIcon, null) }, translate('theme.search.filter.reset', 'Reset filters'))),
43
- React.createElement(SearchFilterFields, null, facets.map((facet, index) => (React.createElement(SearchFilterField_1.SearchFilterField, { key: `${facet.field}-${index}`, facet: facet, onFilterChange: onFilterChange, onFacetReset: onFacetReset, filter: filter, query: query }))))));
44
- }
45
- exports.SearchFilter = SearchFilter;
46
- const SearchFilterWrapper = styled_components_1.default.div `
47
- width: var(--search-filter-width);
48
- display: flex;
49
- flex-direction: column;
50
- padding: var(--search-filter-padding);
51
- font-size: var(--search-filter-font-size);
52
- font-weight: var(--search-filter-font-weight);
53
- line-height: var(--search-filter-line-height);
54
- `;
55
- const SearchFilterHeader = styled_components_1.default.div `
56
- position: sticky;
57
- top: 0px;
58
- display: flex;
59
- justify-content: space-between;
60
- align-items: center;
61
- padding: var(--search-filter-header-padding);
62
- color: var(--search-filter-header-text-color);
63
- background-color: var(--search-filter-bg-color);
64
- z-index: var(--search-filter-header-z-index);
65
- `;
66
- const SearchFilterFields = styled_components_1.default.div `
67
- display: flex;
68
- flex-direction: column;
69
- gap: var(--search-filter-fields-gap);
70
- `;
71
- //# sourceMappingURL=SearchFilter.js.map
@@ -1,11 +0,0 @@
1
- import type { SearchFacet, SearchFilterItem } from '../../core/types';
2
- type SearchFilterFieldProps = {
3
- className?: string;
4
- facet: SearchFacet;
5
- filter: SearchFilterItem[];
6
- query: string;
7
- onFilterChange: (field: string, value: string | string[], isTop?: boolean) => void;
8
- onFacetReset: (filed: string) => void;
9
- };
10
- export declare function SearchFilterField({ className, facet, filter, query, onFilterChange, onFacetReset, }: SearchFilterFieldProps): JSX.Element;
11
- export {};
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SearchFilterField = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const styled_components_1 = __importDefault(require("styled-components"));
9
- const Button_1 = require("../../components/Button/Button");
10
- const ResetIcon_1 = require("../../icons/ResetIcon/ResetIcon");
11
- const core_1 = require("../../core");
12
- const SearchFilterFieldSelect_1 = require("../../components/Search/FilterFields/SearchFilterFieldSelect");
13
- const SearchFilterFieldTags_1 = require("../../components/Search/FilterFields/SearchFilterFieldTags");
14
- function SearchFilterField({ className, facet, filter, query, onFilterChange, onFacetReset, }) {
15
- var _a;
16
- const { useTranslate } = (0, core_1.useThemeHooks)();
17
- const { translate } = useTranslate();
18
- const selectedValues = ((_a = filter.find((item) => item.field === facet.field)) === null || _a === void 0 ? void 0 : _a.values) || [];
19
- const onChange = (value) => {
20
- onFilterChange(facet.field, value, facet.isTop);
21
- };
22
- const onReset = () => {
23
- onFacetReset(facet.field);
24
- };
25
- return (react_1.default.createElement(FilterFieldWrapper, { "data-component-name": "Search/SearchFilterField", className: className },
26
- react_1.default.createElement(FilterFieldLabel, null,
27
- facet.name,
28
- selectedValues.length > 0 && (react_1.default.createElement(Button_1.Button, { "data-translation-key": "theme.search.filter.field.reset", icon: react_1.default.createElement(ResetIcon_1.ResetIcon, null), variant: "ghost", size: "small", onClick: onReset }, translate('theme.search.filter.field.reset', 'Reset')))),
29
- ['select', 'multi-select'].includes(facet.type) && (react_1.default.createElement(SearchFilterFieldSelect_1.SearchFilterFieldSelect, { facet: facet, filter: filter, query: query, selectedValues: selectedValues, onChange: onChange })),
30
- facet.type === 'tags' && (react_1.default.createElement(SearchFilterFieldTags_1.SearchFilterFieldTags, { facet: facet, selectedValues: selectedValues, onChange: onChange }))));
31
- }
32
- exports.SearchFilterField = SearchFilterField;
33
- const FilterFieldWrapper = styled_components_1.default.div `
34
- display: flex;
35
- flex-direction: column;
36
- gap: 4px;
37
- `;
38
- const FilterFieldLabel = styled_components_1.default.div `
39
- display: flex;
40
- justify-content: space-between;
41
- align-items: center;
42
- `;
43
- //# sourceMappingURL=SearchFilterField.js.map
@@ -1,9 +0,0 @@
1
- import { type SearchFacet, type SearchFilterItem } from '../../index.js';
2
- type SearchGroupsProps = {
3
- facets: SearchFacet[];
4
- searchFilter: SearchFilterItem[];
5
- onFilterChange: (field: string, value: string[], isTop?: boolean) => void;
6
- onTopFacetsReset: () => void;
7
- };
8
- export declare function SearchGroups({ facets, searchFilter, onFilterChange, onTopFacetsReset, }: SearchGroupsProps): JSX.Element;
9
- export {};
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.SearchGroups = void 0;
30
- const React = __importStar(require("react"));
31
- const styled_components_1 = __importDefault(require("styled-components"));
32
- const Tag_1 = require("../../components/Tag/Tag");
33
- function SearchGroups({ facets, searchFilter, onFilterChange, onTopFacetsReset, }) {
34
- const groupFacets = facets.filter((facet) => facet.isTop);
35
- const handleGroupTagClick = (value, fieldId, active, currentValues) => {
36
- const values = active
37
- ? currentValues.filter((item) => item !== value)
38
- : [...currentValues, value];
39
- onFilterChange(fieldId, values, true);
40
- };
41
- return (React.createElement(SearchGroupsWrapper, null,
42
- React.createElement(GroupTag, { borderless: true, active: !searchFilter.some((item) => item.isTop), onClick: () => searchFilter.some((item) => item.isTop) && onTopFacetsReset() }, "All"),
43
- React.createElement(Divider, null),
44
- groupFacets.flatMap((facet) => facet.values.map((facetCount, index) => {
45
- var _a;
46
- const { value, count, isCounterVisible } = facetCount;
47
- const currentValues = ((_a = searchFilter.find((item) => item.field === facet.field)) === null || _a === void 0 ? void 0 : _a.values) || [];
48
- const active = currentValues === null || currentValues === void 0 ? void 0 : currentValues.includes(value);
49
- return (React.createElement(GroupTag, { key: `${facet.field}-${index}`, onClick: () => handleGroupTagClick(value, facet.field, active, currentValues), active: active, borderless: true },
50
- value,
51
- " ",
52
- isCounterVisible && React.createElement("span", null, count)));
53
- }))));
54
- }
55
- exports.SearchGroups = SearchGroups;
56
- const SearchGroupsWrapper = styled_components_1.default.div `
57
- display: flex;
58
- gap: 4px;
59
- padding: var(--spacing-md);
60
- `;
61
- const GroupTag = (0, styled_components_1.default)(Tag_1.Tag) `
62
- cursor: pointer;
63
- gap: 4px;
64
- `;
65
- const Divider = styled_components_1.default.div `
66
- border-right: 1px solid var(--border-color-secondary);
67
- margin: 5px 5px 5px 0;
68
- `;
69
- //# sourceMappingURL=SearchGroups.js.map
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- import type { SelectOption } from '../../core/types/select';
3
- type SelectInputProps<T> = {
4
- id?: string;
5
- selectedOptions: SelectOption<T>[];
6
- searchValue: any;
7
- stickyValue: any;
8
- onlyIcon?: boolean;
9
- icon?: React.ReactNode;
10
- customIcon?: React.ReactNode;
11
- placeholder?: string;
12
- multiple?: boolean;
13
- searchable?: boolean;
14
- clearable?: boolean;
15
- clearHandler?: (value?: any) => void;
16
- inputBlurHandler?: (e?: any) => void;
17
- inputFocusHandler?: (e?: any) => void;
18
- searchHandler?: (e?: any) => void;
19
- clickHandler?: (e?: any) => void;
20
- };
21
- export declare function SelectInput<T>(props: SelectInputProps<T>): React.ReactNode;
22
- export declare const SelectInputWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
23
- export {};
@@ -1,129 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.SelectInputWrapper = exports.SelectInput = void 0;
30
- const styled_components_1 = __importDefault(require("styled-components"));
31
- const react_1 = __importStar(require("react"));
32
- const Tag_1 = require("../../components/Tag/Tag");
33
- const CloseIcon_1 = require("../../icons/CloseIcon/CloseIcon");
34
- const Button_1 = require("../../components/Button/Button");
35
- function SelectInput(props) {
36
- const { id, onlyIcon, icon, customIcon, selectedOptions, placeholder, stickyValue, multiple, searchable, clearable, clearHandler, searchHandler, clickHandler, searchValue, inputBlurHandler, inputFocusHandler, } = props;
37
- const inputRef = (0, react_1.useRef)(null);
38
- const onChangeHandler = (e) => {
39
- var _a;
40
- searchHandler === null || searchHandler === void 0 ? void 0 : searchHandler(e);
41
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
42
- };
43
- const onKeyDownHandler = (e) => {
44
- var _a;
45
- e.stopPropagation();
46
- if (e.key === 'Backspace' && !searchValue && selectedOptions.length) {
47
- clearHandler === null || clearHandler === void 0 ? void 0 : clearHandler(selectedOptions[selectedOptions.length - 1]);
48
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
49
- }
50
- };
51
- const onClickHandler = (e) => {
52
- clickHandler === null || clickHandler === void 0 ? void 0 : clickHandler(e);
53
- };
54
- const onFocusHandler = (e) => {
55
- var _a;
56
- inputFocusHandler === null || inputFocusHandler === void 0 ? void 0 : inputFocusHandler(e);
57
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
58
- };
59
- const onBlurHandler = (e) => {
60
- inputBlurHandler === null || inputBlurHandler === void 0 ? void 0 : inputBlurHandler(e);
61
- };
62
- const onClearAllHandler = (e) => {
63
- e.stopPropagation();
64
- clearHandler === null || clearHandler === void 0 ? void 0 : clearHandler();
65
- };
66
- const selectTags = selectedOptions.map((option, index) => (react_1.default.createElement(SelectInputTag, { closable: true, key: index, onClose: () => {
67
- var _a;
68
- clearHandler === null || clearHandler === void 0 ? void 0 : clearHandler(option);
69
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
70
- } }, option.label || option.value || option.element)));
71
- const selectInput = (react_1.default.createElement(SelectInternalInput, { value: searchValue ||
72
- (!multiple && !stickyValue && selectedOptions.length
73
- ? selectedOptions[0].label || selectedOptions[0].value
74
- : ''), placeholder: searchValue || (multiple && selectedOptions.length) ? '' : stickyValue || placeholder, onChange: onChangeHandler, onKeyDown: onKeyDownHandler, onBlur: onBlurHandler, ref: inputRef, width: multiple ? (!searchValue && selectedOptions.length ? '10px' : 'auto') : '100%' }));
75
- const simpleValue = selectedOptions.length ? (selectedOptions[0].label || selectedOptions[0].element || selectedOptions[0].value) : (react_1.default.createElement(SelectInternalInputPlaceholder, null, placeholder));
76
- const multipleValues = selectedOptions.length ? (selectTags) : (react_1.default.createElement(SelectInternalInputPlaceholder, null, placeholder));
77
- return (react_1.default.createElement(exports.SelectInputWrapper, Object.assign({}, props, { id: id, onFocus: onFocusHandler, onClick: onClickHandler }),
78
- !onlyIcon && (react_1.default.createElement(react_1.default.Fragment, null,
79
- react_1.default.createElement(SelectInputValue, null, multiple ? (searchable ? (react_1.default.createElement(react_1.default.Fragment, null,
80
- selectTags,
81
- selectInput)) : (multipleValues)) : searchable ? (selectInput) : (simpleValue)),
82
- !!(clearable && selectedOptions.length) && (react_1.default.createElement(Button_1.Button, { size: "small", variant: "text", icon: react_1.default.createElement(CloseIcon_1.CloseIcon, null), onClick: onClearAllHandler })))),
83
- customIcon || icon));
84
- }
85
- exports.SelectInput = SelectInput;
86
- exports.SelectInputWrapper = styled_components_1.default.div `
87
- width: 100%;
88
- display: flex;
89
- align-items: center;
90
- justify-content: space-between;
91
- border-radius: var(--select-input-border-radius);
92
- padding: var(--select-input-padding);
93
- cursor: pointer;
94
- gap: var(--select-input-gap);
95
- `;
96
- const SelectInputValue = styled_components_1.default.div `
97
- width: calc(100% - 20px);
98
- display: flex;
99
- min-width: 0;
100
- text-overflow: ellipsis;
101
- overflow: hidden;
102
- flex-wrap: wrap;
103
- gap: var(--select-input-value-gap);
104
- `;
105
- const SelectInputTag = (0, styled_components_1.default)(Tag_1.Tag) `
106
- --tag-content-padding: 0;
107
- `;
108
- const SelectInternalInput = styled_components_1.default.input.attrs(() => ({
109
- type: 'text',
110
- })) `
111
- outline: none;
112
- border-radius: var(--select-input-border-radius);
113
- border: none;
114
- font-size: var(--select-input-font-size);
115
- font-weight: var(--select-input-font-weight);
116
- line-height: var(--select-input-line-height);
117
- background-color: var(--select-input-bg-color);
118
-
119
- &::placeholder {
120
- color: var(--select-input-placeholder-color);
121
- }
122
-
123
- width: ${({ width }) => width || 'auto'};
124
- `;
125
- const SelectInternalInputPlaceholder = styled_components_1.default.div `
126
- color: var(--select-input-placeholder-color);
127
- padding-left: 8px;
128
- `;
129
- //# sourceMappingURL=SelectInput.js.map
@@ -1,9 +0,0 @@
1
- import type { SearchFilterItem } from '../../../core/types';
2
- export declare function useSearchFilter(filter: SearchFilterItem[], setFilter: React.Dispatch<React.SetStateAction<SearchFilterItem[]>>): {
3
- onFacetReset: (field: string) => void;
4
- onTopFacetsReset: () => void;
5
- onFilterChange: (field: string, value: string | string[] | undefined, isTop?: boolean) => void;
6
- onFilterReset: () => void;
7
- onFilterToggle: () => void;
8
- isFilterOpen: boolean;
9
- };
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSearchFilter = void 0;
4
- const react_1 = require("react");
5
- function useSearchFilter(filter, setFilter) {
6
- const [isFilterOpen, setIsFilterOpen] = (0, react_1.useState)(false);
7
- const onFilterToggle = (0, react_1.useCallback)(() => {
8
- setIsFilterOpen(!isFilterOpen);
9
- }, [isFilterOpen]);
10
- const onFilterChange = (field, value, isTop) => {
11
- const values = value ? (Array.isArray(value) ? value : [value]) : [];
12
- const _filter = [...filter];
13
- const fieldIndex = _filter.findIndex((filter) => filter.field === field);
14
- if (fieldIndex > -1) {
15
- // filter field already exists
16
- _filter[fieldIndex].values = values;
17
- }
18
- else {
19
- if (!values.length)
20
- return;
21
- _filter.push({ field, values, isTop });
22
- }
23
- setFilter(_filter.filter((item) => item.values.length));
24
- };
25
- const onFilterReset = () => {
26
- setFilter([]);
27
- };
28
- const onTopFacetsReset = () => {
29
- const _filter = [...filter];
30
- setFilter(_filter.filter((item) => !item.isTop));
31
- };
32
- const onFacetReset = (field) => {
33
- const _filter = [...filter];
34
- const fieldIndex = _filter.findIndex((filter) => filter.field === field);
35
- if (fieldIndex !== -1) {
36
- _filter[fieldIndex].values = [];
37
- }
38
- setFilter(_filter.filter((item) => item.values.length));
39
- };
40
- return {
41
- onFacetReset,
42
- onTopFacetsReset,
43
- onFilterChange,
44
- onFilterReset,
45
- onFilterToggle,
46
- isFilterOpen,
47
- };
48
- }
49
- exports.useSearchFilter = useSearchFilter;
50
- //# sourceMappingURL=use-search-filter.js.map
@@ -1,30 +0,0 @@
1
- import type React from 'react';
2
- export type SelectOption<T> = {
3
- value: T;
4
- element?: React.ReactNode | JSX.Element | string;
5
- label?: string;
6
- };
7
- export type SelectProps<T = any> = {
8
- value?: SelectOption<T> | SelectOption<T>[] | T | T[];
9
- options: SelectOption<T>[];
10
- multiple?: boolean;
11
- searchable?: boolean;
12
- clearable?: boolean;
13
- dataAttributes?: Record<string, string>;
14
- className?: string;
15
- withArrow?: boolean;
16
- triggerEvent?: 'click' | 'hover';
17
- placement?: 'top' | 'bottom';
18
- alignment?: 'start' | 'end';
19
- onlyIcon?: boolean;
20
- placeholder?: string;
21
- disabled?: boolean;
22
- hideCheckmarkIcon?: boolean;
23
- dataTestId?: string;
24
- icon?: React.ReactNode;
25
- footer?: React.ReactNode;
26
- onChange?: (value: T | T[]) => void;
27
- renderInput?: () => React.ReactElement;
28
- renderDivider?: () => React.ReactElement;
29
- onSearch?: (value: T | null) => void;
30
- };
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import type { IconProps } from '../../icons/types';
3
- export declare const ResetIcon: import("styled-components").StyledComponent<(props: IconProps) => React.JSX.Element, any, {
4
- 'data-component-name': string;
5
- } & {
6
- color?: string | undefined;
7
- size?: string | undefined;
8
- className?: string | undefined;
9
- } & React.SVGProps<SVGSVGElement>, "data-component-name">;