@weavix/tracker-components 0.1.4 → 0.1.6

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 (41) hide show
  1. package/build/cjs/components/MetaEntitiesSelect/MetaEntitiesSelect.d.ts +6 -2
  2. package/build/cjs/components/MetaEntitiesSelect/MetaEntitiesSelect.js +5 -0
  3. package/build/cjs/components/MetaEntitiesSelect/MetaEntitiesSelect.js.map +1 -1
  4. package/build/cjs/components/MetaEntitiesSelect/README.md +5 -0
  5. package/build/cjs/components/MetaEntitiesSelect/utils/getMetaEntityDisplay.js +8 -2
  6. package/build/cjs/components/MetaEntitiesSelect/utils/getMetaEntityDisplay.js.map +1 -1
  7. package/build/cjs/components/QueueSelect/QueueSelect.d.ts +1 -1
  8. package/build/cjs/components/QueueSelect/QueueSelect.js +5 -5
  9. package/build/cjs/components/QueueSelect/QueueSelect.js.map +1 -1
  10. package/build/cjs/components/QueueSelect/README.md +4 -6
  11. package/build/cjs/components/Select/MultiSelect.js.map +1 -1
  12. package/build/cjs/components/Select/hooks/useAutocomplete.d.ts +1 -1
  13. package/build/cjs/components/Select/hooks/useAutocomplete.js +23 -22
  14. package/build/cjs/components/Select/hooks/useAutocomplete.js.map +1 -1
  15. package/build/cjs/hooks/useUpdateEffect.d.ts +2 -0
  16. package/build/cjs/hooks/useUpdateEffect.js +26 -0
  17. package/build/cjs/hooks/useUpdateEffect.js.map +1 -0
  18. package/build/cjs/utils/cancellablePromise.d.ts +7 -0
  19. package/build/cjs/utils/cancellablePromise.js +27 -0
  20. package/build/cjs/utils/cancellablePromise.js.map +1 -0
  21. package/build/esm/components/MetaEntitiesSelect/MetaEntitiesSelect.d.ts +6 -2
  22. package/build/esm/components/MetaEntitiesSelect/MetaEntitiesSelect.js +4 -0
  23. package/build/esm/components/MetaEntitiesSelect/MetaEntitiesSelect.js.map +1 -1
  24. package/build/esm/components/MetaEntitiesSelect/README.md +5 -0
  25. package/build/esm/components/MetaEntitiesSelect/utils/getMetaEntityDisplay.js +7 -2
  26. package/build/esm/components/MetaEntitiesSelect/utils/getMetaEntityDisplay.js.map +1 -1
  27. package/build/esm/components/QueueSelect/QueueSelect.d.ts +1 -1
  28. package/build/esm/components/QueueSelect/QueueSelect.js +4 -4
  29. package/build/esm/components/QueueSelect/QueueSelect.js.map +1 -1
  30. package/build/esm/components/QueueSelect/README.md +4 -6
  31. package/build/esm/components/Select/MultiSelect.js.map +1 -1
  32. package/build/esm/components/Select/hooks/useAutocomplete.d.ts +1 -1
  33. package/build/esm/components/Select/hooks/useAutocomplete.js +23 -22
  34. package/build/esm/components/Select/hooks/useAutocomplete.js.map +1 -1
  35. package/build/esm/hooks/useUpdateEffect.d.ts +2 -0
  36. package/build/esm/hooks/useUpdateEffect.js +20 -0
  37. package/build/esm/hooks/useUpdateEffect.js.map +1 -0
  38. package/build/esm/utils/cancellablePromise.d.ts +7 -0
  39. package/build/esm/utils/cancellablePromise.js +20 -0
  40. package/build/esm/utils/cancellablePromise.js.map +1 -0
  41. package/package.json +4 -11
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useUpdateEffect = useUpdateEffect;
7
+ var _react = require("react");
8
+ function useUpdateEffect(effect, deps) {
9
+ var mounted = (0, _react.useRef)(false);
10
+ (0, _react.useEffect)(function () {
11
+ return function () {
12
+ // React StrictMode replays mount effects; skip both mount setups.
13
+ mounted.current = false;
14
+ };
15
+ }, []);
16
+ (0, _react.useEffect)(function () {
17
+ if (mounted.current) {
18
+ return effect();
19
+ }
20
+ mounted.current = true;
21
+ return undefined;
22
+ // The caller controls when this effect runs, just as with useEffect.
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, deps);
25
+ }
26
+ // #sourceMappingURL=useUpdateEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","useUpdateEffect","effect","deps","mounted","useRef","useEffect","current","undefined"],"sources":["useUpdateEffect.ts"],"sourcesContent":["import type {DependencyList, EffectCallback} from 'react';\nimport {useEffect, useRef} from 'react';\n\nexport function useUpdateEffect(effect: EffectCallback, deps: DependencyList) {\n const mounted = useRef(false);\n\n useEffect(\n () => () => {\n // React StrictMode replays mount effects; skip both mount setups.\n mounted.current = false;\n },\n [],\n );\n\n useEffect(() => {\n if (mounted.current) {\n return effect();\n }\n mounted.current = true;\n return undefined;\n // The caller controls when this effect runs, just as with useEffect.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,SAASC,eAAeA,CAACC,MAAsB,EAAEC,IAAoB,EAAE;EAC1E,IAAMC,OAAO,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAE7B,IAAAC,gBAAS,EACL;IAAA,OAAM,YAAM;MACR;MACAF,OAAO,CAACG,OAAO,GAAG,KAAK;IAC3B,CAAC;EAAA,GACD,EACJ,CAAC;EAED,IAAAD,gBAAS,EAAC,YAAM;IACZ,IAAIF,OAAO,CAACG,OAAO,EAAE;MACjB,OAAOL,MAAM,CAAC,CAAC;IACnB;IACAE,OAAO,CAACG,OAAO,GAAG,IAAI;IACtB,OAAOC,SAAS;IAChB;IACA;EACJ,CAAC,EAAEL,IAAI,CAAC;AACZ","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ export interface CancellablePromise<T> extends Promise<T> {
2
+ cancel: () => void;
3
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): CancellablePromise<TResult1 | TResult2>;
4
+ catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): CancellablePromise<T | TResult>;
5
+ finally(onfinally?: (() => void) | null): CancellablePromise<T>;
6
+ }
7
+ export declare function cancellablePromise<T>(promise: Promise<T>, cancel?: () => void): CancellablePromise<T>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.cancellablePromise = cancellablePromise;
7
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+ require("core-js/modules/es.symbol.to-string-tag.js");
9
+ require("core-js/modules/es.json.to-string-tag.js");
10
+ require("core-js/modules/es.math.to-string-tag.js");
11
+ require("core-js/modules/es.object.to-string.js");
12
+ require("core-js/modules/es.promise.js");
13
+ require("core-js/modules/es.promise.finally.js");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ // Structural contract: SDK promises remain assignable without their private fields.
16
+
17
+ function cancellablePromise(promise) {
18
+ var cancel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
19
+ return (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, Symbol.toStringTag, 'CancellablePromise'), "cancel", cancel), "then", function then(onfulfilled, onrejected) {
20
+ return cancellablePromise(promise.then(onfulfilled, onrejected), cancel);
21
+ }), "catch", function _catch(onrejected) {
22
+ return cancellablePromise(promise["catch"](onrejected), cancel);
23
+ }), "finally", function _finally(onfinally) {
24
+ return cancellablePromise(promise["finally"](onfinally), cancel);
25
+ });
26
+ }
27
+ // #sourceMappingURL=cancellablePromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cancellablePromise","promise","cancel","arguments","length","undefined","_defineProperty","Symbol","toStringTag","then","onfulfilled","onrejected","_catch","_finally","onfinally"],"sources":["cancellablePromise.ts"],"sourcesContent":["// Structural contract: SDK promises remain assignable without their private fields.\nexport interface CancellablePromise<T> extends Promise<T> {\n cancel: () => void;\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): CancellablePromise<TResult1 | TResult2>;\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n ): CancellablePromise<T | TResult>;\n finally(onfinally?: (() => void) | null): CancellablePromise<T>;\n}\n\nexport function cancellablePromise<T>(\n promise: Promise<T>,\n cancel: () => void = () => {},\n): CancellablePromise<T> {\n return {\n [Symbol.toStringTag]: 'CancellablePromise',\n cancel,\n then: (onfulfilled, onrejected) =>\n cancellablePromise(promise.then(onfulfilled, onrejected), cancel),\n catch: (onrejected) => cancellablePromise(promise.catch(onrejected), cancel),\n finally: (onfinally) => cancellablePromise(promise.finally(onfinally), cancel),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AAaO,SAASA,kBAAkBA,CAC9BC,OAAmB,EAEE;EAAA,IADrBC,MAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,YAAM,CAAC,CAAC;EAE7B,WAAAG,wBAAA,MAAAA,wBAAA,MAAAA,wBAAA,MAAAA,wBAAA,MAAAA,wBAAA,MACKC,MAAM,CAACC,WAAW,EAAG,oBAAoB,aAC1CN,MAAM,WACA,SAANO,IAAIA,CAAGC,WAAW,EAAEC,UAAU;IAAA,OAC1BX,kBAAkB,CAACC,OAAO,CAACQ,IAAI,CAACC,WAAW,EAAEC,UAAU,CAAC,EAAET,MAAM,CAAC;EAAA,aAC9D,SAAPU,MAAKA,CAAGD,UAAU;IAAA,OAAKX,kBAAkB,CAACC,OAAO,SAAM,CAACU,UAAU,CAAC,EAAET,MAAM,CAAC;EAAA,eACnE,SAATW,QAAOA,CAAGC,SAAS;IAAA,OAAKd,kBAAkB,CAACC,OAAO,WAAQ,CAACa,SAAS,CAAC,EAAEZ,MAAM,CAAC;EAAA;AAEtF","ignoreList":[]}
@@ -1,10 +1,14 @@
1
1
  import type { FC } from 'react';
2
+ import React from 'react';
2
3
  import type { MetaEntityV2 } from '@weavix/tracker-api-types';
3
4
  import type { EntitiesSuggestProps } from './components/EntitiesSuggest/EntitiesSuggest';
4
5
  type EntitiesSuggestPropsToOmit = 'getItemId' | 'getSuggestTextFromClickedItem' | 'renderItem';
5
- export type MetaEntitiesSelectProps = Omit<EntitiesSuggestProps<MetaEntityV2>, EntitiesSuggestPropsToOmit> & {
6
+ type LegacyMetaEntity = MetaEntityV2 & {
7
+ fields: Record<string, Record<string, unknown>>;
8
+ };
9
+ export type MetaEntitiesSelectProps<Entity extends MetaEntityV2 = LegacyMetaEntity> = Omit<EntitiesSuggestProps<Entity>, EntitiesSuggestPropsToOmit> & {
6
10
  className?: string;
7
11
  itemClassName?: string;
8
12
  };
9
- export declare const MetaEntitiesSelect: FC<MetaEntitiesSelectProps>;
13
+ export declare const MetaEntitiesSelect: (<Entity extends MetaEntityV2>(props: MetaEntitiesSelectProps<Entity>) => React.ReactElement) & FC<MetaEntitiesSelectProps>;
10
14
  export {};
@@ -12,7 +12,11 @@ import { EntitiesSuggestItem } from "./components/EntitiesSuggestItem/EntitiesSu
12
12
  import { defaultMessages } from "./i18n";
13
13
  import { getMetaEntityDisplay } from "./utils/getMetaEntityDisplay";
14
14
  import { getMetaEntityId } from "./utils/getMetaEntityId";
15
+
16
+ // Preserve the default callback contract from tracker-api-types 0.0.3.
17
+ // New callers can infer the wider 0.0.6 entity type from their data.
15
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
+ // Keep FC last so ComponentProps and existing wrappers retain the legacy default.
16
20
  export var MetaEntitiesSelect = function MetaEntitiesSelect(_ref) {
17
21
  var className = _ref.className,
18
22
  itemClassName = _ref.itemClassName,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useState","getConfig","MetaEntityIcon","useLocalizedString","cnMetaEntitiesSelect","EntitiesSuggest","EntitiesSuggestItem","defaultMessages","getMetaEntityDisplay","getMetaEntityId","jsx","_jsx","MetaEntitiesSelect","_ref","className","itemClassName","placeholder","initialText","text","onTextChange","suggestProps","_objectWithoutProperties","_excluded","config","_useLocalizedString","lang","t","_useState","_useState2","_slicedToArray","setText","handleTextChange","value","renderItem","entity","entityName","id","name","icon","_objectSpread","getItemsOnMount","showItemsOnNoText","getItemId","getSuggestTextFromClickedItem"],"sources":["MetaEntitiesSelect.tsx"],"sourcesContent":["import type {FC} from 'react';\nimport React, {useCallback, useState} from 'react';\n\nimport {getConfig} from '@gravity-ui/uikit';\nimport type {MetaEntityV2} from '@weavix/tracker-api-types';\n\nimport {MetaEntityIcon} from '~/src/components/Icon/';\nimport {useLocalizedString} from '~/src/hooks/useLocalizedString';\n\nimport {cnMetaEntitiesSelect} from './MetaEntitiesSelect.classname';\nimport {EntitiesSuggest} from './components/EntitiesSuggest/EntitiesSuggest';\nimport type {EntitiesSuggestProps} from './components/EntitiesSuggest/EntitiesSuggest';\nimport {EntitiesSuggestItem} from './components/EntitiesSuggestItem/EntitiesSuggestItem';\nimport {defaultMessages} from './i18n';\nimport {getMetaEntityDisplay} from './utils/getMetaEntityDisplay';\nimport {getMetaEntityId} from './utils/getMetaEntityId';\n\ntype EntitiesSuggestPropsToOmit = 'getItemId' | 'getSuggestTextFromClickedItem' | 'renderItem';\n\nexport type MetaEntitiesSelectProps = Omit<\n EntitiesSuggestProps<MetaEntityV2>,\n EntitiesSuggestPropsToOmit\n> & {\n className?: string;\n itemClassName?: string;\n};\n\nexport const MetaEntitiesSelect: FC<MetaEntitiesSelectProps> = ({\n className,\n itemClassName,\n placeholder,\n text: initialText,\n onTextChange,\n ...suggestProps\n}) => {\n const config = getConfig();\n const {t} = useLocalizedString(defaultMessages, config.lang);\n const [text, setText] = useState(initialText ?? '');\n const handleTextChange = useCallback(\n (value: string) => {\n setText(value);\n onTextChange?.(value);\n },\n [setText, onTextChange],\n );\n\n const renderItem = useCallback(\n (entity: MetaEntityV2) => {\n const entityName = getMetaEntityDisplay(entity);\n return (\n <EntitiesSuggestItem\n key={entity.id}\n id={entity.id}\n name={entityName}\n className={cnMetaEntitiesSelect('item', itemClassName)}\n icon={<MetaEntityIcon entity={entity} />}\n />\n );\n },\n [itemClassName],\n );\n\n return (\n <EntitiesSuggest<MetaEntityV2>\n {...suggestProps}\n className={cnMetaEntitiesSelect(null, className)}\n renderItem={renderItem}\n placeholder={placeholder ?? t('placeholder')}\n getItemsOnMount\n showItemsOnNoText\n getItemId={getMetaEntityId}\n getSuggestTextFromClickedItem={getMetaEntityDisplay}\n text={text}\n onTextChange={handleTextChange}\n />\n );\n};\n"],"mappings":";;;;AACA,OAAOA,KAAK,IAAGC,WAAW,EAAEC,QAAQ,QAAO,OAAO;AAElD,SAAQC,SAAS,QAAO,mBAAmB;AAG3C,SAAQC,cAAc;AACtB,SAAQC,kBAAkB;AAE1B,SAAQC,oBAAoB;AAC5B,SAAQC,eAAe;AAEvB,SAAQC,mBAAmB;AAC3B,SAAQC,eAAe;AACvB,SAAQC,oBAAoB;AAC5B,SAAQC,eAAe;AAAiC,SAAAC,GAAA,IAAAC,IAAA;AAYxD,OAAO,IAAMC,kBAA+C,GAAG,SAAlDA,kBAA+CA,CAAAC,IAAA,EAOtD;EAAA,IANFC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,WAAW,GAAAH,IAAA,CAAXG,WAAW;IACLC,WAAW,GAAAJ,IAAA,CAAjBK,IAAI;IACJC,YAAY,GAAAN,IAAA,CAAZM,YAAY;IACTC,YAAY,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EAEf,IAAMC,MAAM,GAAGtB,SAAS,CAAC,CAAC;EAC1B,IAAAuB,mBAAA,GAAYrB,kBAAkB,CAACI,eAAe,EAAEgB,MAAM,CAACE,IAAI,CAAC;IAArDC,CAAC,GAAAF,mBAAA,CAADE,CAAC;EACR,IAAAC,SAAA,GAAwB3B,QAAQ,CAACiB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,EAAE,CAAC;IAAAW,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAA5CT,IAAI,GAAAU,UAAA;IAAEE,OAAO,GAAAF,UAAA;EACpB,IAAMG,gBAAgB,GAAGhC,WAAW,CAChC,UAACiC,KAAa,EAAK;IACfF,OAAO,CAACE,KAAK,CAAC;IACdb,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGa,KAAK,CAAC;EACzB,CAAC,EACD,CAACF,OAAO,EAAEX,YAAY,CAC1B,CAAC;EAED,IAAMc,UAAU,GAAGlC,WAAW,CAC1B,UAACmC,MAAoB,EAAK;IACtB,IAAMC,UAAU,GAAG3B,oBAAoB,CAAC0B,MAAM,CAAC;IAC/C,oBACIvB,IAAA,CAACL,mBAAmB;MAEhB8B,EAAE,EAAEF,MAAM,CAACE,EAAG;MACdC,IAAI,EAAEF,UAAW;MACjBrB,SAAS,EAAEV,oBAAoB,CAAC,MAAM,EAAEW,aAAa,CAAE;MACvDuB,IAAI,eAAE3B,IAAA,CAACT,cAAc;QAACgC,MAAM,EAAEA;MAAO,CAAE;IAAE,GAJpCA,MAAM,CAACE,EAKf,CAAC;EAEV,CAAC,EACD,CAACrB,aAAa,CAClB,CAAC;EAED,oBACIJ,IAAA,CAACN,eAAe,EAAAkC,aAAA,CAAAA,aAAA,KACRnB,YAAY;IAChBN,SAAS,EAAEV,oBAAoB,CAAC,IAAI,EAAEU,SAAS,CAAE;IACjDmB,UAAU,EAAEA,UAAW;IACvBjB,WAAW,EAAEA,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAIU,CAAC,CAAC,aAAa,CAAE;IAC7Cc,eAAe;IACfC,iBAAiB;IACjBC,SAAS,EAAEjC,eAAgB;IAC3BkC,6BAA6B,EAAEnC,oBAAqB;IACpDU,IAAI,EAAEA,IAAK;IACXC,YAAY,EAAEY;EAAiB,EAClC,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useState","getConfig","MetaEntityIcon","useLocalizedString","cnMetaEntitiesSelect","EntitiesSuggest","EntitiesSuggestItem","defaultMessages","getMetaEntityDisplay","getMetaEntityId","jsx","_jsx","MetaEntitiesSelect","_ref","className","itemClassName","placeholder","initialText","text","onTextChange","suggestProps","_objectWithoutProperties","_excluded","config","_useLocalizedString","lang","t","_useState","_useState2","_slicedToArray","setText","handleTextChange","value","renderItem","entity","entityName","id","name","icon","_objectSpread","getItemsOnMount","showItemsOnNoText","getItemId","getSuggestTextFromClickedItem"],"sources":["MetaEntitiesSelect.tsx"],"sourcesContent":["import type {FC} from 'react';\nimport React, {useCallback, useState} from 'react';\n\nimport {getConfig} from '@gravity-ui/uikit';\nimport type {MetaEntityV2} from '@weavix/tracker-api-types';\n\nimport {MetaEntityIcon} from '~/src/components/Icon/';\nimport {useLocalizedString} from '~/src/hooks/useLocalizedString';\n\nimport {cnMetaEntitiesSelect} from './MetaEntitiesSelect.classname';\nimport {EntitiesSuggest} from './components/EntitiesSuggest/EntitiesSuggest';\nimport type {EntitiesSuggestProps} from './components/EntitiesSuggest/EntitiesSuggest';\nimport {EntitiesSuggestItem} from './components/EntitiesSuggestItem/EntitiesSuggestItem';\nimport {defaultMessages} from './i18n';\nimport {getMetaEntityDisplay} from './utils/getMetaEntityDisplay';\nimport {getMetaEntityId} from './utils/getMetaEntityId';\n\ntype EntitiesSuggestPropsToOmit = 'getItemId' | 'getSuggestTextFromClickedItem' | 'renderItem';\n\n// Preserve the default callback contract from tracker-api-types 0.0.3.\n// New callers can infer the wider 0.0.6 entity type from their data.\ntype LegacyMetaEntity = MetaEntityV2 & {fields: Record<string, Record<string, unknown>>};\n\nexport type MetaEntitiesSelectProps<Entity extends MetaEntityV2 = LegacyMetaEntity> = Omit<\n EntitiesSuggestProps<Entity>,\n EntitiesSuggestPropsToOmit\n> & {\n className?: string;\n itemClassName?: string;\n};\n\n// Keep FC last so ComponentProps and existing wrappers retain the legacy default.\nexport const MetaEntitiesSelect: (<Entity extends MetaEntityV2>(\n props: MetaEntitiesSelectProps<Entity>,\n) => React.ReactElement) &\n FC<MetaEntitiesSelectProps> = <Entity extends MetaEntityV2>({\n className,\n itemClassName,\n placeholder,\n text: initialText,\n onTextChange,\n ...suggestProps\n}: MetaEntitiesSelectProps<Entity>) => {\n const config = getConfig();\n const {t} = useLocalizedString(defaultMessages, config.lang);\n const [text, setText] = useState(initialText ?? '');\n const handleTextChange = useCallback(\n (value: string) => {\n setText(value);\n onTextChange?.(value);\n },\n [setText, onTextChange],\n );\n\n const renderItem = useCallback(\n (entity: Entity) => {\n const entityName = getMetaEntityDisplay(entity);\n return (\n <EntitiesSuggestItem\n key={entity.id}\n id={entity.id}\n name={entityName}\n className={cnMetaEntitiesSelect('item', itemClassName)}\n icon={<MetaEntityIcon entity={entity} />}\n />\n );\n },\n [itemClassName],\n );\n\n return (\n <EntitiesSuggest<Entity>\n {...suggestProps}\n className={cnMetaEntitiesSelect(null, className)}\n renderItem={renderItem}\n placeholder={placeholder ?? t('placeholder')}\n getItemsOnMount\n showItemsOnNoText\n getItemId={getMetaEntityId}\n getSuggestTextFromClickedItem={getMetaEntityDisplay}\n text={text}\n onTextChange={handleTextChange}\n />\n );\n};\n"],"mappings":";;;;AACA,OAAOA,KAAK,IAAGC,WAAW,EAAEC,QAAQ,QAAO,OAAO;AAElD,SAAQC,SAAS,QAAO,mBAAmB;AAG3C,SAAQC,cAAc;AACtB,SAAQC,kBAAkB;AAE1B,SAAQC,oBAAoB;AAC5B,SAAQC,eAAe;AAEvB,SAAQC,mBAAmB;AAC3B,SAAQC,eAAe;AACvB,SAAQC,oBAAoB;AAC5B,SAAQC,eAAe;;AAIvB;AACA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAWA;AACA,OAAO,IAAMC,kBAGkB,GAAG,SAHrBA,kBAGkBA,CAAAC,IAAA,EAOQ;EAAA,IANnCC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,WAAW,GAAAH,IAAA,CAAXG,WAAW;IACLC,WAAW,GAAAJ,IAAA,CAAjBK,IAAI;IACJC,YAAY,GAAAN,IAAA,CAAZM,YAAY;IACTC,YAAY,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EAEf,IAAMC,MAAM,GAAGtB,SAAS,CAAC,CAAC;EAC1B,IAAAuB,mBAAA,GAAYrB,kBAAkB,CAACI,eAAe,EAAEgB,MAAM,CAACE,IAAI,CAAC;IAArDC,CAAC,GAAAF,mBAAA,CAADE,CAAC;EACR,IAAAC,SAAA,GAAwB3B,QAAQ,CAACiB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,EAAE,CAAC;IAAAW,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAA5CT,IAAI,GAAAU,UAAA;IAAEE,OAAO,GAAAF,UAAA;EACpB,IAAMG,gBAAgB,GAAGhC,WAAW,CAChC,UAACiC,KAAa,EAAK;IACfF,OAAO,CAACE,KAAK,CAAC;IACdb,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGa,KAAK,CAAC;EACzB,CAAC,EACD,CAACF,OAAO,EAAEX,YAAY,CAC1B,CAAC;EAED,IAAMc,UAAU,GAAGlC,WAAW,CAC1B,UAACmC,MAAc,EAAK;IAChB,IAAMC,UAAU,GAAG3B,oBAAoB,CAAC0B,MAAM,CAAC;IAC/C,oBACIvB,IAAA,CAACL,mBAAmB;MAEhB8B,EAAE,EAAEF,MAAM,CAACE,EAAG;MACdC,IAAI,EAAEF,UAAW;MACjBrB,SAAS,EAAEV,oBAAoB,CAAC,MAAM,EAAEW,aAAa,CAAE;MACvDuB,IAAI,eAAE3B,IAAA,CAACT,cAAc;QAACgC,MAAM,EAAEA;MAAO,CAAE;IAAE,GAJpCA,MAAM,CAACE,EAKf,CAAC;EAEV,CAAC,EACD,CAACrB,aAAa,CAClB,CAAC;EAED,oBACIJ,IAAA,CAACN,eAAe,EAAAkC,aAAA,CAAAA,aAAA,KACRnB,YAAY;IAChBN,SAAS,EAAEV,oBAAoB,CAAC,IAAI,EAAEU,SAAS,CAAE;IACjDmB,UAAU,EAAEA,UAAW;IACvBjB,WAAW,EAAEA,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAIU,CAAC,CAAC,aAAa,CAAE;IAC7Cc,eAAe;IACfC,iBAAiB;IACjBC,SAAS,EAAEjC,eAAgB;IAC3BkC,6BAA6B,EAAEnC,oBAAqB;IACpDU,IAAI,EAAEA,IAAK;IACXC,YAAY,EAAEY;EAAiB,EAClC,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -76,6 +76,11 @@ import type {MetaEntityV2} from '@weavix/tracker-api-types';
76
76
 
77
77
  ## Types
78
78
 
79
+ `MetaEntitiesSelect` infers the entity type from your data and keeps it in selection callbacks.
80
+ `MetaEntitiesSelectProps<Entity>` also accepts an explicit entity type; its default preserves the
81
+ object-valued fields contract from API types 0.0.3. Use `MetaEntitiesSelectProps<MetaEntityV2>`
82
+ for the wider fields in API types 0.0.6.
83
+
79
84
  ```ts
80
85
  // From @weavix/tracker-api-types
81
86
  type MetaEntityV2 = {
@@ -1,5 +1,10 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
1
2
  export function getMetaEntityDisplay(metaEntity) {
2
- var _metaEntity$fields, _metaEntity$fields2, _metaEntity$fields$su, _metaEntity$fields3;
3
- return typeof ((_metaEntity$fields = metaEntity.fields) === null || _metaEntity$fields === void 0 ? void 0 : _metaEntity$fields.summary) === 'string' ? (_metaEntity$fields2 = metaEntity.fields) === null || _metaEntity$fields2 === void 0 ? void 0 : _metaEntity$fields2.summary : String((_metaEntity$fields$su = (_metaEntity$fields3 = metaEntity.fields) === null || _metaEntity$fields3 === void 0 || (_metaEntity$fields3 = _metaEntity$fields3.summary) === null || _metaEntity$fields3 === void 0 ? void 0 : _metaEntity$fields3.value) !== null && _metaEntity$fields$su !== void 0 ? _metaEntity$fields$su : metaEntity.id);
3
+ var _metaEntity$fields, _ref;
4
+ var summary = (_metaEntity$fields = metaEntity.fields) === null || _metaEntity$fields === void 0 ? void 0 : _metaEntity$fields.summary;
5
+ if (typeof summary === 'string') {
6
+ return summary;
7
+ }
8
+ return String((_ref = summary && _typeof(summary) === 'object' && 'value' in summary ? summary.value : undefined) !== null && _ref !== void 0 ? _ref : metaEntity.id);
4
9
  }
5
10
  // #sourceMappingURL=getMetaEntityDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getMetaEntityDisplay","metaEntity","_metaEntity$fields","_metaEntity$fields2","_metaEntity$fields$su","_metaEntity$fields3","fields","summary","String","value","id"],"sources":["getMetaEntityDisplay.ts"],"sourcesContent":["import type {MetaEntityV2} from '@weavix/tracker-api-types';\n\nexport function getMetaEntityDisplay(metaEntity: MetaEntityV2) {\n return typeof metaEntity.fields?.summary === 'string'\n ? metaEntity.fields?.summary\n : String(metaEntity.fields?.summary?.value ?? metaEntity.id);\n}\n"],"mappings":"AAEA,OAAO,SAASA,oBAAoBA,CAACC,UAAwB,EAAE;EAAA,IAAAC,kBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,mBAAA;EAC3D,OAAO,SAAAH,kBAAA,GAAOD,UAAU,CAACK,MAAM,cAAAJ,kBAAA,uBAAjBA,kBAAA,CAAmBK,OAAO,MAAK,QAAQ,IAAAJ,mBAAA,GAC/CF,UAAU,CAACK,MAAM,cAAAH,mBAAA,uBAAjBA,mBAAA,CAAmBI,OAAO,GAC1BC,MAAM,EAAAJ,qBAAA,IAAAC,mBAAA,GAACJ,UAAU,CAACK,MAAM,cAAAD,mBAAA,gBAAAA,mBAAA,GAAjBA,mBAAA,CAAmBE,OAAO,cAAAF,mBAAA,uBAA1BA,mBAAA,CAA4BI,KAAK,cAAAL,qBAAA,cAAAA,qBAAA,GAAIH,UAAU,CAACS,EAAE,CAAC;AACpE","ignoreList":[]}
1
+ {"version":3,"names":["getMetaEntityDisplay","metaEntity","_metaEntity$fields","_ref","summary","fields","String","_typeof","value","undefined","id"],"sources":["getMetaEntityDisplay.ts"],"sourcesContent":["import type {MetaEntityV2} from '@weavix/tracker-api-types';\n\nexport function getMetaEntityDisplay(metaEntity: MetaEntityV2) {\n const summary = metaEntity.fields?.summary;\n if (typeof summary === 'string') {\n return summary;\n }\n return String(\n (summary && typeof summary === 'object' && 'value' in summary\n ? summary.value\n : undefined) ?? metaEntity.id,\n );\n}\n"],"mappings":";AAEA,OAAO,SAASA,oBAAoBA,CAACC,UAAwB,EAAE;EAAA,IAAAC,kBAAA,EAAAC,IAAA;EAC3D,IAAMC,OAAO,IAAAF,kBAAA,GAAGD,UAAU,CAACI,MAAM,cAAAH,kBAAA,uBAAjBA,kBAAA,CAAmBE,OAAO;EAC1C,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC7B,OAAOA,OAAO;EAClB;EACA,OAAOE,MAAM,EAAAH,IAAA,GACRC,OAAO,IAAIG,OAAA,CAAOH,OAAO,MAAK,QAAQ,IAAI,OAAO,IAAIA,OAAO,GACvDA,OAAO,CAACI,KAAK,GACbC,SAAS,cAAAN,IAAA,cAAAA,IAAA,GAAKF,UAAU,CAACS,EACnC,CAAC;AACL","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { CancellablePromise } from '@gravity-ui/sdk';
3
2
  import type { AutocompleteProps } from '~/src/components/Select/Autocomplete';
3
+ import type { CancellablePromise } from '../../utils/cancellablePromise';
4
4
  import type { QueueInfo } from './types';
5
5
  import './QueueSelect.scss';
6
6
  export type QueueSelectProps = {
@@ -16,13 +16,13 @@ import "core-js/modules/es.iterator.some.js";
16
16
  import "core-js/modules/es.object.to-string.js";
17
17
  import "core-js/modules/es.promise.js";
18
18
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
19
- import { CancellablePromise } from '@gravity-ui/sdk';
20
19
  import { getConfig } from '@gravity-ui/uikit';
21
- import { useUpdateEffect } from 'react-use';
22
20
  import { Autocomplete } from "./../Select/Autocomplete";
23
21
  import { useAutocomplete } from "./../Select/hooks/useAutocomplete";
24
22
  import { useAutoFocus } from "./../../hooks/useAutoFocus";
25
23
  import { useLocalizedString } from "./../../hooks/useLocalizedString";
24
+ import { useUpdateEffect } from "./../../hooks/useUpdateEffect";
25
+ import { cancellablePromise } from "../../utils/cancellablePromise";
26
26
  import { cnQueueSelect } from "./QueueSelect.classname";
27
27
  import { defaultMessages } from "./i18n";
28
28
  import { filterQueues } from "./utils/filterQueues";
@@ -109,10 +109,10 @@ export var QueueSelect = function QueueSelect(_ref) {
109
109
  }, [onChange, queues, defaultQueue, initialEmpty]);
110
110
  var getQueues = useCallback(function (searchText) {
111
111
  if (!onSearch) {
112
- return new CancellablePromise(Promise.resolve([]), function () {});
112
+ return cancellablePromise(Promise.resolve([]), function () {});
113
113
  }
114
114
  var innerPromise = onSearch(searchText);
115
- return new CancellablePromise(innerPromise.then(function (results) {
115
+ return cancellablePromise(innerPromise.then(function (results) {
116
116
  return filterQueues(results, hideQueues);
117
117
  }), function () {
118
118
  var _cancel, _ref2;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","CancellablePromise","getConfig","useUpdateEffect","Autocomplete","useAutocomplete","useAutoFocus","useLocalizedString","cnQueueSelect","defaultMessages","filterQueues","mapQueueToSelectItem","normalizeQueue","renderDisplayValue","jsxs","_jsxs","jsx","_jsx","QueueSelect","_ref","_queues$find","_queue$data2","propsDefaultQueue","defaultQueue","propsQueues","queues","withoutSuggest","onChange","className","controlClassName","hideQueues","_ref$initialEmpty","initialEmpty","_ref$withBorder","withBorder","_ref$size","size","popupWidth","error","id","_ref$withValueIcon","withValueIcon","withArrow","placeholder","disablePortal","confirmUpdate","onSelectClick","renderFilter","_ref$loading","loading","onSearch","_useState","_useState2","_slicedToArray","isOpen","setIsOpen","_useState3","_useState4","delayedIsOpen","setDelayedIsOpen","popupContainerRef","config","_useLocalizedString","lang","t","handleOpenChange","value","requestAnimationFrame","fixedDefaultQueue","fixedQueues","undefined","map","queue","filterQueue","has","key","Array","isArray","length","getQueues","searchText","Promise","resolve","innerPromise","then","results","_cancel","_ref2","cancel","call","handleDisplayRender","_useAutocomplete","filteredQueues","filteredItems","handleFilterChange","loadingQueues","isLoading","_useState5","find","item","_useState6","setQueue","items","queuesItems","_toConsumableArray","some","q","unshift","filter","Boolean","queueItem","_queue$data","data","_queue$data3","handleSelectUpdate","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","queueOption","_queueOption$data","_queueOption$data2","selectedQueue","confirmResult","wrap","_context","prev","next","showDefaultCreationForm","enableCloneMoveForAll","sent","success","abrupt","stop","_x","apply","arguments","containerRef","elementSelector","shouldFocus","renderPopup","_ref4","renderList","ref","children","filterPlaceholder","popupClassName","options","onFilterChange","onUpdate","loadingItems","getOptionHeight","controlProps","title","open","onOpenChange","disableTooltip","name"],"sources":["QueueSelect.tsx"],"sourcesContent":["import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\n\nimport {CancellablePromise} from '@gravity-ui/sdk';\nimport type {SelectOption} from '@gravity-ui/uikit';\nimport {getConfig} from '@gravity-ui/uikit';\nimport {useUpdateEffect} from 'react-use';\n\nimport type {AutocompleteProps} from '~/src/components/Select/Autocomplete';\nimport {Autocomplete} from '~/src/components/Select/Autocomplete';\nimport {useAutocomplete} from '~/src/components/Select/hooks/useAutocomplete';\nimport {useAutoFocus} from '~/src/hooks/useAutoFocus';\nimport {useLocalizedString} from '~/src/hooks/useLocalizedString';\n\nimport {cnQueueSelect} from './QueueSelect.classname';\nimport {defaultMessages} from './i18n';\nimport type {QueueInfo} from './types';\nimport {filterQueues} from './utils/filterQueues';\nimport {mapQueueToSelectItem} from './utils/mapQueueToSelectItem';\nimport {normalizeQueue} from './utils/normalizeQueue';\nimport {renderDisplayValue} from './utils/renderDisplayValue';\n\nimport './QueueSelect.scss';\n\nexport type QueueSelectProps = {\n queues?: QueueInfo[] | string[];\n defaultQueue?: QueueInfo | string;\n loading?: boolean;\n hideQueues?: ReadonlySet<string>;\n onSearch?:\n | ((text: string) => CancellablePromise<QueueInfo[]>)\n | ((text: string) => Promise<QueueInfo[]>);\n onChange?: (queue: QueueInfo) => void;\n onSelectClick?: () => void;\n initialEmpty?: boolean;\n withoutSuggest?: boolean;\n withValueIcon?: boolean;\n confirmUpdate?: () => Promise<{success: boolean}>;\n className?: string;\n withBorder?: boolean;\n size?: AutocompleteProps['size'];\n popupWidth?: AutocompleteProps['popupWidth'];\n error?: AutocompleteProps['error'];\n id?: AutocompleteProps['id'];\n withArrow?: AutocompleteProps['withArrow'];\n placeholder?: AutocompleteProps['placeholder'];\n renderFilter?: AutocompleteProps['renderFilter'];\n controlClassName?: AutocompleteProps['controlClassName'];\n disablePortal?: boolean;\n};\n\nexport const QueueSelect = ({\n defaultQueue: propsDefaultQueue,\n queues: propsQueues,\n withoutSuggest,\n onChange,\n className,\n controlClassName,\n hideQueues,\n initialEmpty = false,\n withBorder = false,\n size = 'm',\n popupWidth,\n error,\n id,\n withValueIcon = false,\n withArrow,\n placeholder,\n disablePortal,\n confirmUpdate,\n onSelectClick,\n renderFilter,\n loading = false,\n onSearch,\n}: QueueSelectProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [delayedIsOpen, setDelayedIsOpen] = useState(false);\n const popupContainerRef = useRef<HTMLDivElement>(null);\n const config = getConfig();\n const {t} = useLocalizedString(defaultMessages, config.lang);\n\n const handleOpenChange = useCallback(\n (value: boolean) => {\n if (value) {\n onSelectClick?.();\n }\n setIsOpen(value);\n requestAnimationFrame(() => {\n setDelayedIsOpen(value);\n });\n },\n [onSelectClick],\n );\n\n const fixedDefaultQueue: QueueInfo | undefined = useMemo(\n () => normalizeQueue(propsDefaultQueue),\n [propsDefaultQueue],\n );\n\n const fixedQueues: QueueInfo[] | undefined = useMemo(() => {\n if (!propsQueues) {\n return undefined;\n }\n return propsQueues.map((queue: QueueInfo | string) => normalizeQueue(queue)!);\n }, [propsQueues]);\n\n const filterQueue = useCallback(\n <TQueue extends QueueInfo | undefined>(queue: TQueue) => {\n if (hideQueues === undefined || queue === undefined) {\n return queue;\n }\n return (hideQueues.has(queue.key) ? undefined : queue) as TQueue;\n },\n [hideQueues],\n );\n\n const queues = useMemo(\n () => filterQueues(fixedQueues || [], hideQueues),\n [fixedQueues, hideQueues],\n );\n\n const defaultQueue =\n filterQueue(fixedDefaultQueue) || filterQueue(fixedQueues?.[0]) || filterQueue(queues[0]);\n\n useEffect(() => {\n if (!initialEmpty && Array.isArray(queues) && queues.length > 0) {\n onChange?.(defaultQueue ?? queues[0]!);\n }\n }, [onChange, queues, defaultQueue, initialEmpty]);\n\n const getQueues = useCallback(\n (searchText: string): CancellablePromise<QueueInfo[]> => {\n if (!onSearch) {\n return new CancellablePromise(Promise.resolve([]), () => {});\n }\n const innerPromise = onSearch(searchText);\n return new CancellablePromise(\n innerPromise.then((results) => filterQueues(results, hideQueues)),\n () => (innerPromise as CancellablePromise<QueueInfo[]>).cancel?.(),\n );\n },\n [onSearch, hideQueues],\n );\n\n const handleDisplayRender = useCallback(\n (value: SelectOption<QueueInfo>[]) =>\n renderDisplayValue(value, withValueIcon, placeholder, size),\n [placeholder, withValueIcon, size],\n );\n\n const {\n filteredItems: filteredQueues,\n handleFilterChange,\n isLoading: loadingQueues,\n } = useAutocomplete<QueueInfo[]>(getQueues);\n\n const [queue, setQueue] = useState<SelectOption<QueueInfo> | undefined>(\n initialEmpty || !defaultQueue\n ? undefined\n : mapQueueToSelectItem(\n queues.find((item) => item.key === defaultQueue.key) ?? defaultQueue,\n true,\n ),\n );\n\n const items = useMemo(() => {\n const queuesItems = filteredQueues ?? (queues.length ? [...queues] : [defaultQueue]);\n\n if (!filteredQueues && !queuesItems.some((q) => q?.key === defaultQueue?.key)) {\n queuesItems.unshift(defaultQueue);\n }\n\n return queuesItems\n .filter(Boolean)\n .map((queueItem) =>\n mapQueueToSelectItem(queueItem, queueItem?.key === queue?.data?.key),\n ) as SelectOption<QueueInfo>[];\n }, [defaultQueue, filteredQueues, queue?.data?.key, queues]);\n\n useUpdateEffect(() => {\n if (!initialEmpty && defaultQueue !== undefined && defaultQueue.key !== queue?.data?.key) {\n setQueue(mapQueueToSelectItem(defaultQueue, true));\n onChange?.(defaultQueue);\n }\n }, [defaultQueue, initialEmpty]);\n\n const handleSelectUpdate = useCallback(\n async (queueOption: SelectOption<QueueInfo>) => {\n const selectedQueue = {\n key: queueOption.value,\n showDefaultCreationForm: queueOption.data?.showDefaultCreationForm,\n enableCloneMoveForAll: queueOption.data?.enableCloneMoveForAll,\n };\n\n if (confirmUpdate) {\n const confirmResult = await confirmUpdate();\n if (!confirmResult.success) return;\n }\n\n onChange?.(selectedQueue);\n setQueue(mapQueueToSelectItem(queueOption.data, true));\n },\n [confirmUpdate, onChange],\n );\n\n useAutoFocus({\n containerRef: popupContainerRef,\n elementSelector: 'input',\n shouldFocus: delayedIsOpen,\n });\n\n const renderPopup = useCallback<NonNullable<AutocompleteProps['renderPopup']>>(\n ({renderList, renderFilter}) => (\n <div className={cnQueueSelect('popup-content')} ref={popupContainerRef}>\n {renderFilter()}\n {renderList()}\n </div>\n ),\n [],\n );\n\n return (\n <div className={cnQueueSelect({'with-border': withBorder, loading}, className)}>\n <Autocomplete\n disablePortal={disablePortal}\n filterPlaceholder={t('filter-placeholder')}\n className={cnQueueSelect('control')}\n popupClassName={cnQueueSelect('popup')}\n controlClassName={cnQueueSelect('control-block', controlClassName)}\n id={id}\n size={size}\n options={items}\n onFilterChange={withoutSuggest ? undefined : handleFilterChange}\n onUpdate={handleSelectUpdate}\n value={queue}\n loading={loading}\n loadingItems={loadingQueues}\n popupWidth={popupWidth}\n getOptionHeight={() => 48}\n error={error}\n withArrow={withArrow}\n placeholder={placeholder}\n renderFilter={renderFilter}\n controlProps={{'aria-label': t('select-queue')}}\n title={t('queue')}\n renderDisplayValue={handleDisplayRender}\n open={isOpen}\n onOpenChange={handleOpenChange}\n disableTooltip\n name=\"queue-input\"\n renderPopup={renderPopup}\n />\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","getConfig","Autocomplete","useAutocomplete","useAutoFocus","useLocalizedString","useUpdateEffect","cancellablePromise","cnQueueSelect","defaultMessages","filterQueues","mapQueueToSelectItem","normalizeQueue","renderDisplayValue","jsxs","_jsxs","jsx","_jsx","QueueSelect","_ref","_queues$find","_queue$data2","propsDefaultQueue","defaultQueue","propsQueues","queues","withoutSuggest","onChange","className","controlClassName","hideQueues","_ref$initialEmpty","initialEmpty","_ref$withBorder","withBorder","_ref$size","size","popupWidth","error","id","_ref$withValueIcon","withValueIcon","withArrow","placeholder","disablePortal","confirmUpdate","onSelectClick","renderFilter","_ref$loading","loading","onSearch","_useState","_useState2","_slicedToArray","isOpen","setIsOpen","_useState3","_useState4","delayedIsOpen","setDelayedIsOpen","popupContainerRef","config","_useLocalizedString","lang","t","handleOpenChange","value","requestAnimationFrame","fixedDefaultQueue","fixedQueues","undefined","map","queue","filterQueue","has","key","Array","isArray","length","getQueues","searchText","Promise","resolve","innerPromise","then","results","_cancel","_ref2","cancel","call","handleDisplayRender","_useAutocomplete","filteredQueues","filteredItems","handleFilterChange","loadingQueues","isLoading","_useState5","find","item","_useState6","setQueue","items","queuesItems","_toConsumableArray","some","q","unshift","filter","Boolean","queueItem","_queue$data","data","_queue$data3","handleSelectUpdate","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","queueOption","_queueOption$data","_queueOption$data2","selectedQueue","confirmResult","wrap","_context","prev","next","showDefaultCreationForm","enableCloneMoveForAll","sent","success","abrupt","stop","_x","apply","arguments","containerRef","elementSelector","shouldFocus","renderPopup","_ref4","renderList","ref","children","filterPlaceholder","popupClassName","options","onFilterChange","onUpdate","loadingItems","getOptionHeight","controlProps","title","open","onOpenChange","disableTooltip","name"],"sources":["QueueSelect.tsx"],"sourcesContent":["import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\n\nimport type {SelectOption} from '@gravity-ui/uikit';\nimport {getConfig} from '@gravity-ui/uikit';\n\nimport type {AutocompleteProps} from '~/src/components/Select/Autocomplete';\nimport {Autocomplete} from '~/src/components/Select/Autocomplete';\nimport {useAutocomplete} from '~/src/components/Select/hooks/useAutocomplete';\nimport {useAutoFocus} from '~/src/hooks/useAutoFocus';\nimport {useLocalizedString} from '~/src/hooks/useLocalizedString';\nimport {useUpdateEffect} from '~/src/hooks/useUpdateEffect';\n\nimport type {CancellablePromise} from '../../utils/cancellablePromise';\nimport {cancellablePromise} from '../../utils/cancellablePromise';\n\nimport {cnQueueSelect} from './QueueSelect.classname';\nimport {defaultMessages} from './i18n';\nimport type {QueueInfo} from './types';\nimport {filterQueues} from './utils/filterQueues';\nimport {mapQueueToSelectItem} from './utils/mapQueueToSelectItem';\nimport {normalizeQueue} from './utils/normalizeQueue';\nimport {renderDisplayValue} from './utils/renderDisplayValue';\n\nimport './QueueSelect.scss';\n\nexport type QueueSelectProps = {\n queues?: QueueInfo[] | string[];\n defaultQueue?: QueueInfo | string;\n loading?: boolean;\n hideQueues?: ReadonlySet<string>;\n onSearch?:\n | ((text: string) => CancellablePromise<QueueInfo[]>)\n | ((text: string) => Promise<QueueInfo[]>);\n onChange?: (queue: QueueInfo) => void;\n onSelectClick?: () => void;\n initialEmpty?: boolean;\n withoutSuggest?: boolean;\n withValueIcon?: boolean;\n confirmUpdate?: () => Promise<{success: boolean}>;\n className?: string;\n withBorder?: boolean;\n size?: AutocompleteProps['size'];\n popupWidth?: AutocompleteProps['popupWidth'];\n error?: AutocompleteProps['error'];\n id?: AutocompleteProps['id'];\n withArrow?: AutocompleteProps['withArrow'];\n placeholder?: AutocompleteProps['placeholder'];\n renderFilter?: AutocompleteProps['renderFilter'];\n controlClassName?: AutocompleteProps['controlClassName'];\n disablePortal?: boolean;\n};\n\nexport const QueueSelect = ({\n defaultQueue: propsDefaultQueue,\n queues: propsQueues,\n withoutSuggest,\n onChange,\n className,\n controlClassName,\n hideQueues,\n initialEmpty = false,\n withBorder = false,\n size = 'm',\n popupWidth,\n error,\n id,\n withValueIcon = false,\n withArrow,\n placeholder,\n disablePortal,\n confirmUpdate,\n onSelectClick,\n renderFilter,\n loading = false,\n onSearch,\n}: QueueSelectProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [delayedIsOpen, setDelayedIsOpen] = useState(false);\n const popupContainerRef = useRef<HTMLDivElement>(null);\n const config = getConfig();\n const {t} = useLocalizedString(defaultMessages, config.lang);\n\n const handleOpenChange = useCallback(\n (value: boolean) => {\n if (value) {\n onSelectClick?.();\n }\n setIsOpen(value);\n requestAnimationFrame(() => {\n setDelayedIsOpen(value);\n });\n },\n [onSelectClick],\n );\n\n const fixedDefaultQueue: QueueInfo | undefined = useMemo(\n () => normalizeQueue(propsDefaultQueue),\n [propsDefaultQueue],\n );\n\n const fixedQueues: QueueInfo[] | undefined = useMemo(() => {\n if (!propsQueues) {\n return undefined;\n }\n return propsQueues.map((queue: QueueInfo | string) => normalizeQueue(queue)!);\n }, [propsQueues]);\n\n const filterQueue = useCallback(\n <TQueue extends QueueInfo | undefined>(queue: TQueue) => {\n if (hideQueues === undefined || queue === undefined) {\n return queue;\n }\n return (hideQueues.has(queue.key) ? undefined : queue) as TQueue;\n },\n [hideQueues],\n );\n\n const queues = useMemo(\n () => filterQueues(fixedQueues || [], hideQueues),\n [fixedQueues, hideQueues],\n );\n\n const defaultQueue =\n filterQueue(fixedDefaultQueue) || filterQueue(fixedQueues?.[0]) || filterQueue(queues[0]);\n\n useEffect(() => {\n if (!initialEmpty && Array.isArray(queues) && queues.length > 0) {\n onChange?.(defaultQueue ?? queues[0]!);\n }\n }, [onChange, queues, defaultQueue, initialEmpty]);\n\n const getQueues = useCallback(\n (searchText: string): CancellablePromise<QueueInfo[]> => {\n if (!onSearch) {\n return cancellablePromise(Promise.resolve([]), () => {});\n }\n const innerPromise = onSearch(searchText);\n return cancellablePromise(\n innerPromise.then((results) => filterQueues(results, hideQueues)),\n () => (innerPromise as CancellablePromise<QueueInfo[]>).cancel?.(),\n );\n },\n [onSearch, hideQueues],\n );\n\n const handleDisplayRender = useCallback(\n (value: SelectOption<QueueInfo>[]) =>\n renderDisplayValue(value, withValueIcon, placeholder, size),\n [placeholder, withValueIcon, size],\n );\n\n const {\n filteredItems: filteredQueues,\n handleFilterChange,\n isLoading: loadingQueues,\n } = useAutocomplete<QueueInfo[]>(getQueues);\n\n const [queue, setQueue] = useState<SelectOption<QueueInfo> | undefined>(\n initialEmpty || !defaultQueue\n ? undefined\n : mapQueueToSelectItem(\n queues.find((item) => item.key === defaultQueue.key) ?? defaultQueue,\n true,\n ),\n );\n\n const items = useMemo(() => {\n const queuesItems = filteredQueues ?? (queues.length ? [...queues] : [defaultQueue]);\n\n if (!filteredQueues && !queuesItems.some((q) => q?.key === defaultQueue?.key)) {\n queuesItems.unshift(defaultQueue);\n }\n\n return queuesItems\n .filter(Boolean)\n .map((queueItem) =>\n mapQueueToSelectItem(queueItem, queueItem?.key === queue?.data?.key),\n ) as SelectOption<QueueInfo>[];\n }, [defaultQueue, filteredQueues, queue?.data?.key, queues]);\n\n useUpdateEffect(() => {\n if (!initialEmpty && defaultQueue !== undefined && defaultQueue.key !== queue?.data?.key) {\n setQueue(mapQueueToSelectItem(defaultQueue, true));\n onChange?.(defaultQueue);\n }\n }, [defaultQueue, initialEmpty]);\n\n const handleSelectUpdate = useCallback(\n async (queueOption: SelectOption<QueueInfo>) => {\n const selectedQueue = {\n key: queueOption.value,\n showDefaultCreationForm: queueOption.data?.showDefaultCreationForm,\n enableCloneMoveForAll: queueOption.data?.enableCloneMoveForAll,\n };\n\n if (confirmUpdate) {\n const confirmResult = await confirmUpdate();\n if (!confirmResult.success) return;\n }\n\n onChange?.(selectedQueue);\n setQueue(mapQueueToSelectItem(queueOption.data, true));\n },\n [confirmUpdate, onChange],\n );\n\n useAutoFocus({\n containerRef: popupContainerRef,\n elementSelector: 'input',\n shouldFocus: delayedIsOpen,\n });\n\n const renderPopup = useCallback<NonNullable<AutocompleteProps['renderPopup']>>(\n ({renderList, renderFilter}) => (\n <div className={cnQueueSelect('popup-content')} ref={popupContainerRef}>\n {renderFilter()}\n {renderList()}\n </div>\n ),\n [],\n );\n\n return (\n <div className={cnQueueSelect({'with-border': withBorder, loading}, className)}>\n <Autocomplete\n disablePortal={disablePortal}\n filterPlaceholder={t('filter-placeholder')}\n className={cnQueueSelect('control')}\n popupClassName={cnQueueSelect('popup')}\n controlClassName={cnQueueSelect('control-block', controlClassName)}\n id={id}\n size={size}\n options={items}\n onFilterChange={withoutSuggest ? undefined : handleFilterChange}\n onUpdate={handleSelectUpdate}\n value={queue}\n loading={loading}\n loadingItems={loadingQueues}\n popupWidth={popupWidth}\n getOptionHeight={() => 48}\n error={error}\n withArrow={withArrow}\n placeholder={placeholder}\n renderFilter={renderFilter}\n controlProps={{'aria-label': t('select-queue')}}\n title={t('queue')}\n renderDisplayValue={handleDisplayRender}\n open={isOpen}\n onOpenChange={handleOpenChange}\n disableTooltip\n name=\"queue-input\"\n renderPopup={renderPopup}\n />\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -53,9 +53,10 @@ const queues: QueueInfo[] = [
53
53
  /**
54
54
  * Async callback invoked when the user types in the search filter.
55
55
  * Should return a promise resolving to a list of matching QueueInfo objects.
56
+ * An optional cancel method aborts superseded requests (SDK promises are supported).
56
57
  * When provided, the component fetches suggestions on each filter change.
57
58
  */
58
- onSearch?: (text: string) => Promise<QueueInfo[]> | CancellablePromise<QueueInfo[]>;
59
+ onSearch?: (text: string) => Promise<QueueInfo[]> & {cancel?: () => void};
59
60
 
60
61
  /**
61
62
  * Callback fired when the selected queue changes.
@@ -216,7 +217,6 @@ The example below loads queues once on mount (Flow 1) and switches to the sugges
216
217
 
217
218
  ```tsx
218
219
  import React, {useEffect, useState} from 'react';
219
- import {CancellablePromise} from '@gravity-ui/sdk';
220
220
  import {QueueSelect} from '@weavix/tracker-components';
221
221
  import type {QueueInfo} from '@weavix/tracker-components';
222
222
 
@@ -238,12 +238,10 @@ export const QueueSelectWithApi: React.FC<Props> = ({trackerApi, onChange}) => {
238
238
  }, [trackerApi]);
239
239
 
240
240
  // Flow 2 — suggest queues when the user types
241
- const handleSearch = (text: string): CancellablePromise<QueueInfo[]> => {
242
- const promise = trackerApi.v3
241
+ const handleSearch = (text: string): Promise<QueueInfo[]> => {
242
+ return trackerApi.v3
243
243
  .get['/queues/_suggest']({queryParams: {input: text, fields: []}})
244
244
  .then((result) => result.data);
245
-
246
- return new CancellablePromise(promise, () => {});
247
245
  };
248
246
 
249
247
  return (
@@ -1 +1 @@
1
- {"version":3,"names":["React","Fragment","forwardRef","useCallback","useEffect","useMemo","useRef","ChevronDown","ChevronRight","ActionTooltip","Button","Select","CommonSelect","Icon","Loader","Text","TextInput","getConfig","useLocalizedString","cnSelect","defaultMessages","filterOption","getValueOption","isGroupOption","renderOption","jsx","_jsx","jsxs","_jsxs","_Fragment","MultiSelect","_ref","ref","id","loading","loadingItems","disabled","providedRenderControl","renderControl","className","options","value","width","size","name","placeholder","popupClassName","_ref$renderOption","providedRenderOption","renderSelectedOption","renderDisplayValue","controlProps","controlClassName","_ref$withArrow","withArrow","title","icon","validationState","selectSize","_ref$chevronView","chevronView","open","filterable","disablePortal","providedFilterOption","providedRenderFilter","renderFilter","autoFocus","filterPlaceholder","withSpecialNoOptions","onOpenChange","disableTooltip","props","_objectWithoutProperties","_excluded","config","_useLocalizedString","lang","t","inputRef","renderControlProps","triggerProps","hasError","children","placement","_objectSpread","view","error","platform","data","valueOptions","length","_iterator","_createForOfIteratorHelper","_step","s","n","done","valueItem","valueOption","push","err","e","f","empty","Boolean","map","item","index","text","content","renderPopup","_ref2","renderList","_ref3","_props$defaultValue$l","_props$defaultValue","inputProps","hasDefaultValue","defaultValue","role","controlRef","optionsWithLoading","color","variant","withGroups","some","timer","current","setTimeout","_inputRef$current","focus","preventScroll","clearTimeout","multiple","displayName"],"sources":["MultiSelect.tsx"],"sourcesContent":["import type {ReactNode, Ref} from 'react';\nimport React, {Fragment, forwardRef, useCallback, useEffect, useMemo, useRef} from 'react';\n\nimport {ChevronDown, ChevronRight} from '@gravity-ui/icons';\nimport type {\n ButtonButtonProps,\n SelectProps as CommonSelectProps,\n SelectOption,\n} from '@gravity-ui/uikit';\nimport {\n ActionTooltip,\n Button,\n Select as CommonSelect,\n Icon,\n Loader,\n Text,\n TextInput,\n getConfig,\n} from '@gravity-ui/uikit';\n\nimport {useLocalizedString} from '~/src/hooks/useLocalizedString';\n\nimport {cnSelect} from './Select.classname';\nimport {defaultMessages} from './i18n';\nimport {filterOption} from './utils/filterOption';\nimport {getValueOption} from './utils/getValueOption';\nimport {isGroupOption} from './utils/isGroupOption';\nimport {renderOption} from './utils/renderOption';\n\nimport './Select.scss';\n\nexport type MultiSelectProps = CommonSelectProps & {\n id?: string;\n loading?: boolean;\n loadingItems?: boolean;\n controlProps?: ButtonButtonProps;\n withArrow?: boolean;\n title?: string;\n icon?: ReactNode;\n selectSize?: CommonSelectProps['size'];\n renderDisplayValue?: (value: SelectOption[]) => ReactNode;\n chevronView?: 'desktop' | 'touch';\n autoFocus?: boolean;\n withSpecialNoOptions?: boolean;\n disablePortal?: boolean;\n disableTooltip?: boolean;\n filterOption?: (option: SelectOption, filter: string) => boolean;\n};\n\nexport const MultiSelect: React.ForwardRefExoticComponent<\n MultiSelectProps & React.RefAttributes<HTMLButtonElement>\n> = forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n id,\n loading,\n loadingItems,\n disabled,\n renderControl: providedRenderControl,\n className,\n options,\n value,\n width,\n size,\n name,\n placeholder,\n popupClassName,\n renderOption: providedRenderOption = renderOption,\n renderSelectedOption,\n renderDisplayValue,\n controlProps,\n controlClassName,\n withArrow = true,\n title,\n icon,\n validationState,\n selectSize,\n chevronView = 'desktop',\n open,\n filterable,\n disablePortal,\n filterOption: providedFilterOption,\n renderFilter: providedRenderFilter,\n autoFocus,\n filterPlaceholder,\n withSpecialNoOptions,\n onOpenChange,\n disableTooltip,\n ...props\n },\n ref,\n ) => {\n const config = getConfig();\n const {t} = useLocalizedString(defaultMessages, config.lang);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const renderControl = useCallback<NonNullable<CommonSelectProps['renderControl']>>(\n (renderControlProps, config) => {\n const {triggerProps, ref, open} = renderControlProps;\n const hasError = validationState === 'invalid';\n\n if (loading) {\n return (\n <div\n ref={ref as Ref<HTMLDivElement>}\n className={cnSelect('button-wrapper')}\n >\n <ActionTooltip\n title={title ?? ''}\n disabled={disableTooltip || !title}\n placement=\"bottom\"\n >\n <Button\n view=\"outlined\"\n size={size}\n disabled\n width=\"max\"\n name={name}\n className={cnSelect(\n 'button',\n {\n loading: true,\n error: hasError,\n platform: 'desktop',\n },\n controlClassName,\n )}\n {...controlProps}\n id={id}\n >\n <Loader className={cnSelect('loader')} />\n {withArrow && (\n <Icon\n data={\n chevronView === 'touch' ? ChevronRight : ChevronDown\n }\n />\n )}\n </Button>\n </ActionTooltip>\n </div>\n );\n }\n\n if (providedRenderControl) {\n return providedRenderControl(renderControlProps, config);\n }\n\n const valueOptions: SelectOption[] = [];\n\n if (value && value.length) {\n for (const valueItem of value) {\n const valueOption = getValueOption(options ?? [], valueItem);\n\n if (valueOption) {\n valueOptions.push(valueOption);\n }\n }\n }\n\n return (\n <div ref={ref as Ref<HTMLDivElement>} className={cnSelect('button-wrapper')}>\n <ActionTooltip\n title={title ?? ''}\n disabled={disableTooltip || !title}\n placement=\"bottom\"\n >\n <Button\n view=\"outlined\"\n size={size}\n {...triggerProps}\n name={name}\n aria-haspopup=\"listbox\"\n width=\"max\"\n disabled={disabled}\n className={cnSelect(\n 'button',\n {\n empty: valueOptions.length === 0,\n 'with-icon': Boolean(icon),\n error: hasError,\n platform: 'desktop',\n },\n controlClassName,\n )}\n {...controlProps}\n id={id}\n >\n {icon}\n {renderDisplayValue ? (\n renderDisplayValue(valueOptions)\n ) : (\n <>\n {valueOptions.length === 0 && (placeholder || '—')}\n {valueOptions.map((item, index) => (\n <Fragment key={item.value}>\n {renderSelectedOption\n ? renderSelectedOption(item, index)\n : item.text || item.content}\n {index < valueOptions.length - 1 && ', '}\n </Fragment>\n ))}\n </>\n )}\n {withArrow && (\n <Icon\n size={chevronView === 'touch' ? 24 : 16}\n data={chevronView === 'touch' ? ChevronRight : ChevronDown}\n className={cnSelect('chevron', {\n open,\n })}\n />\n )}\n </Button>\n </ActionTooltip>\n </div>\n );\n },\n [\n validationState,\n loading,\n providedRenderControl,\n value,\n title,\n disableTooltip,\n id,\n size,\n name,\n disabled,\n icon,\n controlClassName,\n controlProps,\n renderDisplayValue,\n placeholder,\n withArrow,\n chevronView,\n options,\n renderSelectedOption,\n ],\n );\n\n const renderPopup = useCallback<NonNullable<CommonSelectProps['renderPopup']>>(\n ({renderFilter, renderList}) => (\n <>\n {renderFilter()}\n {renderList()}\n </>\n ),\n [],\n );\n\n const renderFilter = useCallback<NonNullable<CommonSelectProps['renderFilter']>>(\n ({inputProps}) => {\n const hasDefaultValue = (props.defaultValue?.length ?? 0) > 0;\n\n const controlProps = {\n role: 'combobox',\n 'aria-activedescendant': inputProps['aria-activedescendant'],\n 'aria-controls': inputProps['aria-controls'],\n 'aria-label': inputProps['aria-label'],\n };\n\n return (\n <TextInput\n autoFocus={autoFocus && !hasDefaultValue}\n className={cnSelect('filter')}\n {...inputProps}\n controlProps={controlProps}\n controlRef={inputRef}\n size={selectSize}\n name={name}\n />\n );\n },\n [autoFocus, props.defaultValue, selectSize, name],\n );\n\n const optionsWithLoading = useMemo(() => {\n if (!loadingItems) {\n if (!options?.length) {\n return [\n {\n value: '',\n disabled: true,\n content: withSpecialNoOptions ? (\n <div className={cnSelect('no-options')}>\n <Text color=\"primary\" variant=\"subheader-3\">\n {t('no-options-title')}\n </Text>\n <Text variant=\"body-2\">{t('no-options-description')}</Text>\n </div>\n ) : (\n <div className={cnSelect('no-options')}>{t('no-options')}</div>\n ),\n },\n ];\n }\n\n return options;\n }\n\n return [\n {\n value: '',\n disabled: true,\n content: (\n <div className={cnSelect('items-loader')}>\n <Loader size=\"m\" />\n </div>\n ),\n },\n ];\n }, [loadingItems, options, t, withSpecialNoOptions]);\n\n const withGroups = options?.some(isGroupOption);\n\n useEffect(() => {\n let timer: NodeJS.Timeout | undefined;\n\n if (open && inputRef.current) {\n timer = setTimeout(() => inputRef.current?.focus({preventScroll: true}), 0);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- inputRef.current must be in list\n }, [open && inputRef.current]);\n\n return (\n <CommonSelect\n disablePortal={disablePortal}\n disabled={disabled || loading}\n options={optionsWithLoading}\n value={value}\n renderControl={renderControl}\n multiple\n renderOption={\n loadingItems || !options?.length ? renderOption : providedRenderOption\n }\n ref={ref}\n filterPlaceholder={filterPlaceholder ?? t('search')}\n popupClassName={cnSelect(\n 'popup',\n {\n 'with-groups': withGroups,\n filterable,\n },\n popupClassName,\n )}\n filterOption={providedFilterOption ?? filterOption}\n width={width}\n className={cnSelect(null, className)}\n size={size}\n validationState={validationState}\n renderPopup={renderPopup}\n open={open}\n renderFilter={providedRenderFilter ?? renderFilter}\n filterable={filterable}\n onOpenChange={onOpenChange}\n {...props}\n />\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","forwardRef","useCallback","useEffect","useMemo","useRef","ChevronDown","ChevronRight","ActionTooltip","Button","Select","CommonSelect","Icon","Loader","Text","TextInput","getConfig","useLocalizedString","cnSelect","defaultMessages","filterOption","getValueOption","isGroupOption","renderOption","jsx","_jsx","jsxs","_jsxs","_Fragment","MultiSelect","_ref","ref","id","loading","loadingItems","disabled","providedRenderControl","renderControl","className","options","value","width","size","name","placeholder","popupClassName","_ref$renderOption","providedRenderOption","renderSelectedOption","renderDisplayValue","controlProps","controlClassName","_ref$withArrow","withArrow","title","icon","validationState","selectSize","_ref$chevronView","chevronView","open","filterable","disablePortal","providedFilterOption","providedRenderFilter","renderFilter","autoFocus","filterPlaceholder","withSpecialNoOptions","onOpenChange","disableTooltip","props","_objectWithoutProperties","_excluded","config","_useLocalizedString","lang","t","inputRef","renderControlProps","triggerProps","hasError","children","placement","_objectSpread","view","error","platform","data","valueOptions","length","_iterator","_createForOfIteratorHelper","_step","s","n","done","valueItem","valueOption","push","err","e","f","empty","Boolean","map","item","index","text","content","renderPopup","_ref2","renderList","_ref3","_props$defaultValue$l","_props$defaultValue","inputProps","hasDefaultValue","defaultValue","role","controlRef","optionsWithLoading","color","variant","withGroups","some","timer","current","setTimeout","_inputRef$current","focus","preventScroll","clearTimeout","multiple","displayName"],"sources":["MultiSelect.tsx"],"sourcesContent":["import type {ReactNode, Ref} from 'react';\nimport React, {Fragment, forwardRef, useCallback, useEffect, useMemo, useRef} from 'react';\n\nimport {ChevronDown, ChevronRight} from '@gravity-ui/icons';\nimport type {\n ButtonButtonProps,\n SelectProps as CommonSelectProps,\n SelectOption,\n} from '@gravity-ui/uikit';\nimport {\n ActionTooltip,\n Button,\n Select as CommonSelect,\n Icon,\n Loader,\n Text,\n TextInput,\n getConfig,\n} from '@gravity-ui/uikit';\n\nimport {useLocalizedString} from '~/src/hooks/useLocalizedString';\n\nimport {cnSelect} from './Select.classname';\nimport {defaultMessages} from './i18n';\nimport {filterOption} from './utils/filterOption';\nimport {getValueOption} from './utils/getValueOption';\nimport {isGroupOption} from './utils/isGroupOption';\nimport {renderOption} from './utils/renderOption';\n\nimport './Select.scss';\n\nexport type MultiSelectProps = CommonSelectProps & {\n id?: string;\n loading?: boolean;\n loadingItems?: boolean;\n controlProps?: ButtonButtonProps;\n withArrow?: boolean;\n title?: string;\n icon?: ReactNode;\n selectSize?: CommonSelectProps['size'];\n renderDisplayValue?: (value: SelectOption[]) => ReactNode;\n chevronView?: 'desktop' | 'touch';\n autoFocus?: boolean;\n withSpecialNoOptions?: boolean;\n disablePortal?: boolean;\n disableTooltip?: boolean;\n filterOption?: (option: SelectOption, filter: string) => boolean;\n};\n\nexport const MultiSelect: React.ForwardRefExoticComponent<\n MultiSelectProps & React.RefAttributes<HTMLButtonElement>\n> = forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n id,\n loading,\n loadingItems,\n disabled,\n renderControl: providedRenderControl,\n className,\n options,\n value,\n width,\n size,\n name,\n placeholder,\n popupClassName,\n renderOption: providedRenderOption = renderOption,\n renderSelectedOption,\n renderDisplayValue,\n controlProps,\n controlClassName,\n withArrow = true,\n title,\n icon,\n validationState,\n selectSize,\n chevronView = 'desktop',\n open,\n filterable,\n disablePortal,\n filterOption: providedFilterOption,\n renderFilter: providedRenderFilter,\n autoFocus,\n filterPlaceholder,\n withSpecialNoOptions,\n onOpenChange,\n disableTooltip,\n ...props\n },\n ref,\n ) => {\n const config = getConfig();\n const {t} = useLocalizedString(defaultMessages, config.lang);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const renderControl = useCallback<NonNullable<CommonSelectProps['renderControl']>>(\n (renderControlProps, config) => {\n const {triggerProps, ref, open} = renderControlProps;\n const hasError = validationState === 'invalid';\n\n if (loading) {\n return (\n <div\n ref={ref as Ref<HTMLDivElement>}\n className={cnSelect('button-wrapper')}\n >\n <ActionTooltip\n title={title ?? ''}\n disabled={disableTooltip || !title}\n placement=\"bottom\"\n >\n <Button\n view=\"outlined\"\n size={size}\n disabled\n width=\"max\"\n name={name}\n className={cnSelect(\n 'button',\n {\n loading: true,\n error: hasError,\n platform: 'desktop',\n },\n controlClassName,\n )}\n {...controlProps}\n id={id}\n >\n <Loader className={cnSelect('loader')} />\n {withArrow && (\n <Icon\n data={\n chevronView === 'touch' ? ChevronRight : ChevronDown\n }\n />\n )}\n </Button>\n </ActionTooltip>\n </div>\n );\n }\n\n if (providedRenderControl) {\n return providedRenderControl(renderControlProps, config);\n }\n\n const valueOptions: SelectOption[] = [];\n\n if (value && value.length) {\n for (const valueItem of value) {\n const valueOption = getValueOption(options ?? [], valueItem);\n\n if (valueOption) {\n valueOptions.push(valueOption);\n }\n }\n }\n\n return (\n <div ref={ref as Ref<HTMLDivElement>} className={cnSelect('button-wrapper')}>\n <ActionTooltip\n title={title ?? ''}\n disabled={disableTooltip || !title}\n placement=\"bottom\"\n >\n <Button\n view=\"outlined\"\n size={size}\n {...triggerProps}\n name={name}\n aria-haspopup=\"listbox\"\n width=\"max\"\n disabled={disabled}\n className={cnSelect(\n 'button',\n {\n empty: valueOptions.length === 0,\n 'with-icon': Boolean(icon),\n error: hasError,\n platform: 'desktop',\n },\n controlClassName,\n )}\n {...controlProps}\n id={id}\n >\n {icon}\n {renderDisplayValue ? (\n renderDisplayValue(valueOptions)\n ) : (\n <>\n {valueOptions.length === 0 && (placeholder || '—')}\n {valueOptions.map((item, index) => (\n <Fragment key={item.value}>\n {renderSelectedOption\n ? renderSelectedOption(item, index)\n : item.text || item.content}\n {index < valueOptions.length - 1 && ', '}\n </Fragment>\n ))}\n </>\n )}\n {withArrow && (\n <Icon\n size={chevronView === 'touch' ? 24 : 16}\n data={chevronView === 'touch' ? ChevronRight : ChevronDown}\n className={cnSelect('chevron', {\n open,\n })}\n />\n )}\n </Button>\n </ActionTooltip>\n </div>\n );\n },\n [\n validationState,\n loading,\n providedRenderControl,\n value,\n title,\n disableTooltip,\n id,\n size,\n name,\n disabled,\n icon,\n controlClassName,\n controlProps,\n renderDisplayValue,\n placeholder,\n withArrow,\n chevronView,\n options,\n renderSelectedOption,\n ],\n );\n\n const renderPopup = useCallback<NonNullable<CommonSelectProps['renderPopup']>>(\n ({renderFilter, renderList}) => (\n <>\n {renderFilter()}\n {renderList()}\n </>\n ),\n [],\n );\n\n const renderFilter = useCallback<NonNullable<CommonSelectProps['renderFilter']>>(\n ({inputProps}) => {\n const hasDefaultValue = (props.defaultValue?.length ?? 0) > 0;\n\n const controlProps = {\n role: 'combobox',\n 'aria-activedescendant': inputProps['aria-activedescendant'],\n 'aria-controls': inputProps['aria-controls'],\n 'aria-label': inputProps['aria-label'],\n };\n\n return (\n <TextInput\n autoFocus={autoFocus && !hasDefaultValue}\n className={cnSelect('filter')}\n {...inputProps}\n controlProps={controlProps}\n controlRef={inputRef}\n size={selectSize}\n name={name}\n />\n );\n },\n [autoFocus, props.defaultValue, selectSize, name],\n );\n\n const optionsWithLoading = useMemo(() => {\n if (!loadingItems) {\n if (!options?.length) {\n return [\n {\n value: '',\n disabled: true,\n content: withSpecialNoOptions ? (\n <div className={cnSelect('no-options')}>\n <Text color=\"primary\" variant=\"subheader-3\">\n {t('no-options-title')}\n </Text>\n <Text variant=\"body-2\">{t('no-options-description')}</Text>\n </div>\n ) : (\n <div className={cnSelect('no-options')}>{t('no-options')}</div>\n ),\n },\n ];\n }\n\n return options;\n }\n\n return [\n {\n value: '',\n disabled: true,\n content: (\n <div className={cnSelect('items-loader')}>\n <Loader size=\"m\" />\n </div>\n ),\n },\n ];\n }, [loadingItems, options, t, withSpecialNoOptions]);\n\n const withGroups = options?.some(isGroupOption);\n\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n if (open && inputRef.current) {\n timer = setTimeout(() => inputRef.current?.focus({preventScroll: true}), 0);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- inputRef.current must be in list\n }, [open && inputRef.current]);\n\n return (\n <CommonSelect\n disablePortal={disablePortal}\n disabled={disabled || loading}\n options={optionsWithLoading}\n value={value}\n renderControl={renderControl}\n multiple\n renderOption={\n loadingItems || !options?.length ? renderOption : providedRenderOption\n }\n ref={ref}\n filterPlaceholder={filterPlaceholder ?? t('search')}\n popupClassName={cnSelect(\n 'popup',\n {\n 'with-groups': withGroups,\n filterable,\n },\n popupClassName,\n )}\n filterOption={providedFilterOption ?? filterOption}\n width={width}\n className={cnSelect(null, className)}\n size={size}\n validationState={validationState}\n renderPopup={renderPopup}\n open={open}\n renderFilter={providedRenderFilter ?? renderFilter}\n filterable={filterable}\n onOpenChange={onOpenChange}\n {...props}\n />\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { CancellablePromise } from '@gravity-ui/sdk';
1
+ import type { CancellablePromise } from '../../../utils/cancellablePromise';
2
2
  export declare function useAutocomplete<T>(getData: (search: string) => CancellablePromise<T>, searchDelay?: number, useBoostedValues?: boolean): {
3
3
  filteredItems: T | undefined;
4
4
  resetFilteredItems: () => void;
@@ -4,7 +4,6 @@ import "core-js/modules/es.promise.js";
4
4
  import "core-js/modules/es.promise.finally.js";
5
5
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
6
  import debounce from 'lodash/debounce';
7
- import { useUnmount } from 'react-use';
8
7
  export function useAutocomplete(getData) {
9
8
  var searchDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;
10
9
  var useBoostedValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
@@ -24,42 +23,44 @@ export function useAutocomplete(getData) {
24
23
  var searchDebounced = useMemo(function () {
25
24
  return debounce(function (search) {
26
25
  setSearchText(search);
27
- searchRequestRef.current = getData(search).then(function (items) {
28
- setFilteredItems(items);
26
+ var request = getData(search).then(function (items) {
27
+ if (searchRequestRef.current === request) {
28
+ setFilteredItems(items);
29
+ }
29
30
  })["catch"](function (error) {
30
- if (!error.isCancelled) {
31
+ if (searchRequestRef.current === request && !(error !== null && error !== void 0 && error.isCancelled)) {
31
32
  console.error(error);
32
33
  }
33
34
  })["finally"](function () {
34
- setIsLoading(false);
35
+ if (searchRequestRef.current === request) {
36
+ setIsLoading(false);
37
+ }
35
38
  });
39
+ searchRequestRef.current = request;
36
40
  }, searchDelay);
37
41
  }, [getData, searchDelay]);
42
+ var cancelSearch = useCallback(function () {
43
+ var request = searchRequestRef.current;
44
+ searchRequestRef.current = undefined;
45
+ request === null || request === void 0 || request.cancel();
46
+ searchDebounced.cancel();
47
+ }, [searchDebounced]);
38
48
  useEffect(function () {
49
+ setIsLoading(false);
39
50
  if (useBoostedValues) {
40
51
  setIsLoading(true);
41
52
  searchDebounced('');
42
53
  }
43
- }, [useBoostedValues, searchDebounced]);
44
- useUnmount(function () {
45
- if (searchRequestRef !== null && searchRequestRef !== void 0 && searchRequestRef.current && 'cancel' in searchRequestRef.current) {
46
- searchRequestRef.current.cancel();
47
- }
48
- searchDebounced === null || searchDebounced === void 0 || searchDebounced.cancel();
49
- });
54
+ // Also dispose the old debounce/request when getData or searchDelay changes.
55
+ return cancelSearch;
56
+ }, [useBoostedValues, searchDebounced, cancelSearch]);
50
57
  var resetFilteredItems = useCallback(function () {
51
- if (searchRequestRef.current && 'cancel' in searchRequestRef.current) {
52
- searchRequestRef.current.cancel();
53
- }
54
- searchDebounced.cancel();
58
+ cancelSearch();
55
59
  setFilteredItems(undefined);
56
60
  setIsLoading(false);
57
- }, [searchDebounced]);
61
+ }, [cancelSearch]);
58
62
  var handleFilterChange = useCallback(function (search, force) {
59
- if (searchRequestRef.current && 'cancel' in searchRequestRef.current) {
60
- searchRequestRef.current.cancel();
61
- }
62
- searchDebounced.cancel();
63
+ cancelSearch();
63
64
  if (!search && !useBoostedValues && !force) {
64
65
  setSearchText('');
65
66
  resetFilteredItems();
@@ -67,7 +68,7 @@ export function useAutocomplete(getData) {
67
68
  }
68
69
  setIsLoading(true);
69
70
  searchDebounced(search);
70
- }, [resetFilteredItems, searchDebounced, useBoostedValues]);
71
+ }, [cancelSearch, resetFilteredItems, searchDebounced, useBoostedValues]);
71
72
  var emitFilterChange = useCallback(function () {
72
73
  handleFilterChange(searchText, true);
73
74
  }, [handleFilterChange, searchText]);