@gravity-ui/blog-constructor 11.0.0 → 11.0.1-alpha.1
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/build/cjs/components/FeedHeader/components/FilterControl/FilterControl.js +8 -1
- package/build/cjs/components/FeedHeader/components/FilterControl/FilterControl.js.map +1 -1
- package/build/esm/components/FeedHeader/components/FilterControl/FilterControl.js +8 -1
- package/build/esm/components/FeedHeader/components/FilterControl/FilterControl.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,6 +17,10 @@ const addAnalyticsEventPostfix = (analyticsEvents, postfix) => {
|
|
|
17
17
|
? analyticsEvents.map(addPostfix)
|
|
18
18
|
: addPostfix(analyticsEvents);
|
|
19
19
|
};
|
|
20
|
+
const getSelectedOptionNames = (selectedValues, options) => selectedValues.map((selectedValue) => {
|
|
21
|
+
const selectedOption = options.find((option) => option.value === selectedValue);
|
|
22
|
+
return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.content) || selectedValue;
|
|
23
|
+
});
|
|
20
24
|
const FilterControl = ({ filter, initialValue, onChange }) => {
|
|
21
25
|
const handleAnalytics = (0, page_constructor_1.useAnalytics)();
|
|
22
26
|
const { hasLikes } = React.useContext(LikesContext_1.LikesContext);
|
|
@@ -43,7 +47,10 @@ const FilterControl = ({ filter, initialValue, onChange }) => {
|
|
|
43
47
|
}
|
|
44
48
|
const { queryParamName, multiple, filterable, hasClear, placeholder, options, allLabel, qa } = filter;
|
|
45
49
|
return ((0, jsx_runtime_1.jsx)("div", { className: b(), children: (0, jsx_runtime_1.jsx)(SelectFilter_1.SelectFilter, { multiple: multiple, filterable: filterable, hasClear: hasClear, placeholder: placeholder, options: options, allLabel: allLabel, qa: qa, initialValue: initialValue, onChange: (value) => handleChange({ [queryParamName]: value }), onOpen: () => handleFilterAnalytics('CLICK'), onClose: ({ selectedValues, changesCount }) => handleFilterAnalytics('CLOSE', {
|
|
46
|
-
selected_values: selectedValues.length
|
|
50
|
+
selected_values: selectedValues.length
|
|
51
|
+
? getSelectedOptionNames(selectedValues, options)
|
|
52
|
+
: null,
|
|
53
|
+
selected_ids: selectedValues.length ? selectedValues : null,
|
|
47
54
|
changes_count: changesCount,
|
|
48
55
|
count_filters: selectedValues.length,
|
|
49
56
|
}) }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterControl.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/FilterControl/FilterControl.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAG/B,mEAA0D;AAE1D,uEAA+D;AAQ/D,gDAA2C;AAC3C,2EAAmE;AACnE,kEAA0D;AAC1D,kEAA0D;AAI1D,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,gBAAgB,CAAC,CAAC;AAElC,MAAM,wBAAwB,GAAG,CAC7B,eAAoC,EACpC,OAAe,EACI,EAAE;IACrB,MAAM,UAAU,GAAG,CAAC,KAAqB,EAAkB,EAAE,CAAC,iCACvD,KAAK,KACR,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,IAClC,CAAC;IAEH,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QACjC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterControl.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/FilterControl/FilterControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport type {AnalyticsEvent, AnalyticsEventsProp} from '@gravity-ui/page-constructor';\nimport {useAnalytics} from '@gravity-ui/page-constructor';\n\nimport {LikesContext} from '../../../../contexts/LikesContext';\nimport {\n FilterConfig,\n Query,\n SavedOnlyFilterConfig,\n SearchFilterConfig,\n SelectFilterConfig,\n} from '../../../../models/common';\nimport {block} from '../../../../utils/cn';\nimport {SavedOnlyFilter} from '../SavedOnlyFilter/SavedOnlyFilter';\nimport {SearchFilter} from '../SearchFilter/SearchFilter';\nimport {SelectFilter} from '../SelectFilter/SelectFilter';\n\nimport './FilterControl.scss';\n\nconst b = block('filter-control');\n\nconst addAnalyticsEventPostfix = (\n analyticsEvents: AnalyticsEventsProp,\n postfix: string,\n): AnalyticsEventsProp => {\n const addPostfix = (event: AnalyticsEvent): AnalyticsEvent => ({\n ...event,\n name: `${event.name}_${postfix}`,\n });\n\n return Array.isArray(analyticsEvents)\n ? analyticsEvents.map(addPostfix)\n : addPostfix(analyticsEvents);\n};\n\nconst getSelectedOptionNames = (selectedValues: string[], options: SelectFilterConfig['options']) =>\n selectedValues.map((selectedValue) => {\n const selectedOption = options.find((option) => option.value === selectedValue);\n\n return selectedOption?.content || selectedValue;\n });\n\nexport type FilterControlProps = {\n filter: FilterConfig;\n initialValue: string | number | null | undefined;\n onChange: (query: Query) => void;\n};\n\nexport const FilterControl = ({filter, initialValue, onChange}: FilterControlProps) => {\n const handleAnalytics = useAnalytics();\n const {hasLikes} = React.useContext(LikesContext);\n\n const handleFilterAnalytics = React.useCallback(\n (postfix: string, params?: Record<string, unknown>) => {\n if (filter.analyticsEvents) {\n handleAnalytics(\n addAnalyticsEventPostfix(filter.analyticsEvents, postfix),\n params as Record<string, string>,\n );\n }\n },\n [filter.analyticsEvents, handleAnalytics],\n );\n\n const handleChange = React.useCallback((query: Query) => onChange(query), [onChange]);\n\n if (filter.type === 'search') {\n const {queryParamName, placeholder} = filter as SearchFilterConfig;\n\n return (\n <div className={b()}>\n <SearchFilter\n placeholder={placeholder}\n initialValue={initialValue as string | undefined}\n onChange={(value) => handleChange({[queryParamName]: value} as Query)}\n onClick={() => handleFilterAnalytics('CLICK')}\n />\n </div>\n );\n }\n\n if (filter.type === 'savedOnly') {\n const {queryParamName} = filter as SavedOnlyFilterConfig;\n\n if (!hasLikes) {\n return null;\n }\n\n const handleSavedOnlyChange = (value: boolean) => {\n handleFilterAnalytics('CLICK', {state: value ? 'on' : 'off'});\n handleChange({[queryParamName]: value ? 'true' : '', search: ''} as Query);\n };\n\n return (\n <div className={b({'width-auto': true})}>\n <SavedOnlyFilter\n initialValue={initialValue === 'true'}\n onChange={handleSavedOnlyChange}\n />\n </div>\n );\n }\n\n const {queryParamName, multiple, filterable, hasClear, placeholder, options, allLabel, qa} =\n filter as SelectFilterConfig;\n\n return (\n <div className={b()}>\n <SelectFilter\n multiple={multiple}\n filterable={filterable}\n hasClear={hasClear}\n placeholder={placeholder as string | undefined}\n options={options}\n allLabel={allLabel}\n qa={qa}\n initialValue={initialValue}\n onChange={(value) => handleChange({[queryParamName]: value} as Query)}\n onOpen={() => handleFilterAnalytics('CLICK')}\n onClose={({selectedValues, changesCount}) =>\n handleFilterAnalytics('CLOSE', {\n selected_values: selectedValues.length\n ? getSelectedOptionNames(selectedValues, options)\n : null,\n selected_ids: selectedValues.length ? selectedValues : null,\n changes_count: changesCount,\n count_filters: selectedValues.length,\n })\n }\n />\n </div>\n );\n};\n"]}
|
|
@@ -14,6 +14,10 @@ const addAnalyticsEventPostfix = (analyticsEvents, postfix) => {
|
|
|
14
14
|
? analyticsEvents.map(addPostfix)
|
|
15
15
|
: addPostfix(analyticsEvents);
|
|
16
16
|
};
|
|
17
|
+
const getSelectedOptionNames = (selectedValues, options) => selectedValues.map((selectedValue) => {
|
|
18
|
+
const selectedOption = options.find((option) => option.value === selectedValue);
|
|
19
|
+
return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.content) || selectedValue;
|
|
20
|
+
});
|
|
17
21
|
export const FilterControl = ({ filter, initialValue, onChange }) => {
|
|
18
22
|
const handleAnalytics = useAnalytics();
|
|
19
23
|
const { hasLikes } = React.useContext(LikesContext);
|
|
@@ -40,7 +44,10 @@ export const FilterControl = ({ filter, initialValue, onChange }) => {
|
|
|
40
44
|
}
|
|
41
45
|
const { queryParamName, multiple, filterable, hasClear, placeholder, options, allLabel, qa } = filter;
|
|
42
46
|
return (_jsx("div", { className: b(), children: _jsx(SelectFilter, { multiple: multiple, filterable: filterable, hasClear: hasClear, placeholder: placeholder, options: options, allLabel: allLabel, qa: qa, initialValue: initialValue, onChange: (value) => handleChange({ [queryParamName]: value }), onOpen: () => handleFilterAnalytics('CLICK'), onClose: ({ selectedValues, changesCount }) => handleFilterAnalytics('CLOSE', {
|
|
43
|
-
selected_values: selectedValues.length
|
|
47
|
+
selected_values: selectedValues.length
|
|
48
|
+
? getSelectedOptionNames(selectedValues, options)
|
|
49
|
+
: null,
|
|
50
|
+
selected_ids: selectedValues.length ? selectedValues : null,
|
|
44
51
|
changes_count: changesCount,
|
|
45
52
|
count_filters: selectedValues.length,
|
|
46
53
|
}) }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterControl.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/FilterControl/FilterControl.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAQ/D,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAC3C,OAAO,EAAC,eAAe,EAAC,8CAA2C;AACnE,OAAO,EAAC,YAAY,EAAC,wCAAqC;AAC1D,OAAO,EAAC,YAAY,EAAC,wCAAqC;AAE1D,OAAO,qBAAqB,CAAC;AAE7B,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAElC,MAAM,wBAAwB,GAAG,CAC7B,eAAoC,EACpC,OAAe,EACI,EAAE;IACrB,MAAM,UAAU,GAAG,CAAC,KAAqB,EAAkB,EAAE,CAAC,iCACvD,KAAK,KACR,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,IAClC,CAAC;IAEH,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QACjC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterControl.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/FilterControl/FilterControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport type {AnalyticsEvent, AnalyticsEventsProp} from '@gravity-ui/page-constructor';\nimport {useAnalytics} from '@gravity-ui/page-constructor';\n\nimport {LikesContext} from '../../../../contexts/LikesContext';\nimport {\n FilterConfig,\n Query,\n SavedOnlyFilterConfig,\n SearchFilterConfig,\n SelectFilterConfig,\n} from '../../../../models/common';\nimport {block} from '../../../../utils/cn';\nimport {SavedOnlyFilter} from '../SavedOnlyFilter/SavedOnlyFilter';\nimport {SearchFilter} from '../SearchFilter/SearchFilter';\nimport {SelectFilter} from '../SelectFilter/SelectFilter';\n\nimport './FilterControl.scss';\n\nconst b = block('filter-control');\n\nconst addAnalyticsEventPostfix = (\n analyticsEvents: AnalyticsEventsProp,\n postfix: string,\n): AnalyticsEventsProp => {\n const addPostfix = (event: AnalyticsEvent): AnalyticsEvent => ({\n ...event,\n name: `${event.name}_${postfix}`,\n });\n\n return Array.isArray(analyticsEvents)\n ? analyticsEvents.map(addPostfix)\n : addPostfix(analyticsEvents);\n};\n\nconst getSelectedOptionNames = (selectedValues: string[], options: SelectFilterConfig['options']) =>\n selectedValues.map((selectedValue) => {\n const selectedOption = options.find((option) => option.value === selectedValue);\n\n return selectedOption?.content || selectedValue;\n });\n\nexport type FilterControlProps = {\n filter: FilterConfig;\n initialValue: string | number | null | undefined;\n onChange: (query: Query) => void;\n};\n\nexport const FilterControl = ({filter, initialValue, onChange}: FilterControlProps) => {\n const handleAnalytics = useAnalytics();\n const {hasLikes} = React.useContext(LikesContext);\n\n const handleFilterAnalytics = React.useCallback(\n (postfix: string, params?: Record<string, unknown>) => {\n if (filter.analyticsEvents) {\n handleAnalytics(\n addAnalyticsEventPostfix(filter.analyticsEvents, postfix),\n params as Record<string, string>,\n );\n }\n },\n [filter.analyticsEvents, handleAnalytics],\n );\n\n const handleChange = React.useCallback((query: Query) => onChange(query), [onChange]);\n\n if (filter.type === 'search') {\n const {queryParamName, placeholder} = filter as SearchFilterConfig;\n\n return (\n <div className={b()}>\n <SearchFilter\n placeholder={placeholder}\n initialValue={initialValue as string | undefined}\n onChange={(value) => handleChange({[queryParamName]: value} as Query)}\n onClick={() => handleFilterAnalytics('CLICK')}\n />\n </div>\n );\n }\n\n if (filter.type === 'savedOnly') {\n const {queryParamName} = filter as SavedOnlyFilterConfig;\n\n if (!hasLikes) {\n return null;\n }\n\n const handleSavedOnlyChange = (value: boolean) => {\n handleFilterAnalytics('CLICK', {state: value ? 'on' : 'off'});\n handleChange({[queryParamName]: value ? 'true' : '', search: ''} as Query);\n };\n\n return (\n <div className={b({'width-auto': true})}>\n <SavedOnlyFilter\n initialValue={initialValue === 'true'}\n onChange={handleSavedOnlyChange}\n />\n </div>\n );\n }\n\n const {queryParamName, multiple, filterable, hasClear, placeholder, options, allLabel, qa} =\n filter as SelectFilterConfig;\n\n return (\n <div className={b()}>\n <SelectFilter\n multiple={multiple}\n filterable={filterable}\n hasClear={hasClear}\n placeholder={placeholder as string | undefined}\n options={options}\n allLabel={allLabel}\n qa={qa}\n initialValue={initialValue}\n onChange={(value) => handleChange({[queryParamName]: value} as Query)}\n onOpen={() => handleFilterAnalytics('CLICK')}\n onClose={({selectedValues, changesCount}) =>\n handleFilterAnalytics('CLOSE', {\n selected_values: selectedValues.length\n ? getSelectedOptionNames(selectedValues, options)\n : null,\n selected_ids: selectedValues.length ? selectedValues : null,\n changes_count: changesCount,\n count_filters: selectedValues.length,\n })\n }\n />\n </div>\n );\n};\n"]}
|