@redneckz/wildless-cms-uni-blocks 0.14.909 → 0.14.911

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 (201) hide show
  1. package/bundle/Env.d.ts +2 -0
  2. package/bundle/bundle.umd.js +97 -74
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/Footer/LinkList.d.ts +1 -0
  5. package/bundle/ui-kit/Select/Select.d.ts +6 -0
  6. package/bundle/ui-kit/Select/SelectPopup.d.ts +1 -0
  7. package/bundle/ui-kit/Select/filterOptions.d.ts +1 -1
  8. package/bundle/ui-kit/Select/renderIcon.d.ts +2 -0
  9. package/bundle/ui-kit/Select/renderOptionText.d.ts +9 -0
  10. package/bundle/ui-kit/Select/renderSearchInput.d.ts +9 -0
  11. package/bundle/ui-kit/Select/renderSelectContainer.d.ts +15 -0
  12. package/bundle/ui-kit/Select/useSelectPopup.d.ts +2 -1
  13. package/dist/Env.d.ts +2 -0
  14. package/dist/Env.js.map +1 -1
  15. package/dist/components/Footer/LinkList.d.ts +1 -0
  16. package/dist/components/Footer/LinkList.js +2 -2
  17. package/dist/components/Footer/LinkList.js.map +1 -1
  18. package/dist/services/search/tokenize.js +4 -1
  19. package/dist/services/search/tokenize.js.map +1 -1
  20. package/dist/ui-kit/FormField/Fields/InnDadataField.js +5 -2
  21. package/dist/ui-kit/FormField/Fields/InnDadataField.js.map +1 -1
  22. package/dist/ui-kit/SearchDialog/SearchDialog.js +5 -1
  23. package/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  24. package/dist/ui-kit/Select/Select.d.ts +6 -0
  25. package/dist/ui-kit/Select/Select.js +31 -40
  26. package/dist/ui-kit/Select/Select.js.map +1 -1
  27. package/dist/ui-kit/Select/SelectPopup.d.ts +1 -0
  28. package/dist/ui-kit/Select/SelectPopup.js +1 -1
  29. package/dist/ui-kit/Select/SelectPopup.js.map +1 -1
  30. package/dist/ui-kit/Select/filterOptions.d.ts +1 -1
  31. package/dist/ui-kit/Select/filterOptions.js +2 -2
  32. package/dist/ui-kit/Select/filterOptions.js.map +1 -1
  33. package/dist/ui-kit/Select/renderIcon.d.ts +2 -0
  34. package/dist/ui-kit/Select/renderIcon.js +8 -0
  35. package/dist/ui-kit/Select/renderIcon.js.map +1 -0
  36. package/dist/ui-kit/Select/renderOptionText.d.ts +9 -0
  37. package/dist/ui-kit/Select/renderOptionText.js +11 -0
  38. package/dist/ui-kit/Select/renderOptionText.js.map +1 -0
  39. package/dist/ui-kit/Select/renderSearchInput.d.ts +9 -0
  40. package/dist/ui-kit/Select/renderSearchInput.js +7 -0
  41. package/dist/ui-kit/Select/renderSearchInput.js.map +1 -0
  42. package/dist/ui-kit/Select/renderSelectContainer.d.ts +15 -0
  43. package/dist/ui-kit/Select/renderSelectContainer.js +18 -0
  44. package/dist/ui-kit/Select/renderSelectContainer.js.map +1 -0
  45. package/dist/ui-kit/Select/useSelectPopup.d.ts +2 -1
  46. package/dist/ui-kit/Select/useSelectPopup.js +6 -5
  47. package/dist/ui-kit/Select/useSelectPopup.js.map +1 -1
  48. package/dist/ui-kit/Sitemap/Sitemap.js +5 -1
  49. package/dist/ui-kit/Sitemap/Sitemap.js.map +1 -1
  50. package/lib/Env.d.ts +2 -0
  51. package/lib/Env.js.map +1 -1
  52. package/lib/common.css +1 -1
  53. package/lib/components/Footer/LinkList.d.ts +1 -0
  54. package/lib/components/Footer/LinkList.js +2 -2
  55. package/lib/components/Footer/LinkList.js.map +1 -1
  56. package/lib/services/search/tokenize.js +4 -1
  57. package/lib/services/search/tokenize.js.map +1 -1
  58. package/lib/ui-kit/FormField/Fields/InnDadataField.js +5 -2
  59. package/lib/ui-kit/FormField/Fields/InnDadataField.js.map +1 -1
  60. package/lib/ui-kit/SearchDialog/SearchDialog.fixture.d.ts +2 -0
  61. package/lib/ui-kit/SearchDialog/SearchDialog.js +5 -1
  62. package/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  63. package/lib/ui-kit/Select/Select.d.ts +6 -0
  64. package/lib/ui-kit/Select/Select.js +32 -41
  65. package/lib/ui-kit/Select/Select.js.map +1 -1
  66. package/lib/ui-kit/Select/SelectPopup.d.ts +1 -0
  67. package/lib/ui-kit/Select/SelectPopup.js +1 -1
  68. package/lib/ui-kit/Select/SelectPopup.js.map +1 -1
  69. package/lib/ui-kit/Select/filterOptions.d.ts +1 -1
  70. package/lib/ui-kit/Select/filterOptions.js +2 -2
  71. package/lib/ui-kit/Select/filterOptions.js.map +1 -1
  72. package/lib/ui-kit/Select/renderIcon.d.ts +2 -0
  73. package/lib/ui-kit/Select/renderIcon.js +5 -0
  74. package/lib/ui-kit/Select/renderIcon.js.map +1 -0
  75. package/lib/ui-kit/Select/renderOptionText.d.ts +9 -0
  76. package/lib/ui-kit/Select/renderOptionText.js +8 -0
  77. package/lib/ui-kit/Select/renderOptionText.js.map +1 -0
  78. package/lib/ui-kit/Select/renderSearchInput.d.ts +9 -0
  79. package/lib/ui-kit/Select/renderSearchInput.js +4 -0
  80. package/lib/ui-kit/Select/renderSearchInput.js.map +1 -0
  81. package/lib/ui-kit/Select/renderSelectContainer.d.ts +15 -0
  82. package/lib/ui-kit/Select/renderSelectContainer.js +15 -0
  83. package/lib/ui-kit/Select/renderSelectContainer.js.map +1 -0
  84. package/lib/ui-kit/Select/useSelectPopup.d.ts +2 -1
  85. package/lib/ui-kit/Select/useSelectPopup.js +6 -5
  86. package/lib/ui-kit/Select/useSelectPopup.js.map +1 -1
  87. package/lib/ui-kit/Sitemap/Sitemap.js +5 -1
  88. package/lib/ui-kit/Sitemap/Sitemap.js.map +1 -1
  89. package/mobile/bundle/Env.d.ts +2 -0
  90. package/mobile/bundle/bundle.umd.js +87 -71
  91. package/mobile/bundle/bundle.umd.min.js +1 -1
  92. package/mobile/bundle/components/Footer/LinkList.d.ts +1 -0
  93. package/mobile/bundle/ui-kit/Select/Select.d.ts +6 -0
  94. package/mobile/bundle/ui-kit/Select/SelectPopup.d.ts +1 -0
  95. package/mobile/bundle/ui-kit/Select/filterOptions.d.ts +1 -1
  96. package/mobile/bundle/ui-kit/Select/renderIcon.d.ts +2 -0
  97. package/mobile/bundle/ui-kit/Select/renderOptionText.d.ts +9 -0
  98. package/mobile/bundle/ui-kit/Select/renderSearchInput.d.ts +9 -0
  99. package/mobile/bundle/ui-kit/Select/renderSelectContainer.d.ts +15 -0
  100. package/mobile/bundle/ui-kit/Select/useSelectPopup.d.ts +2 -1
  101. package/mobile/dist/Env.d.ts +2 -0
  102. package/mobile/dist/Env.js.map +1 -1
  103. package/mobile/dist/components/Footer/LinkList.d.ts +1 -0
  104. package/mobile/dist/components/Footer/LinkList.js +2 -2
  105. package/mobile/dist/components/Footer/LinkList.js.map +1 -1
  106. package/mobile/dist/services/search/tokenize.js +4 -1
  107. package/mobile/dist/services/search/tokenize.js.map +1 -1
  108. package/mobile/dist/ui-kit/FormField/Fields/InnDadataField.js +5 -2
  109. package/mobile/dist/ui-kit/FormField/Fields/InnDadataField.js.map +1 -1
  110. package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js +5 -1
  111. package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  112. package/mobile/dist/ui-kit/Select/Select.d.ts +6 -0
  113. package/mobile/dist/ui-kit/Select/Select.js +31 -40
  114. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  115. package/mobile/dist/ui-kit/Select/SelectPopup.d.ts +1 -0
  116. package/mobile/dist/ui-kit/Select/SelectPopup.js +1 -1
  117. package/mobile/dist/ui-kit/Select/SelectPopup.js.map +1 -1
  118. package/mobile/dist/ui-kit/Select/filterOptions.d.ts +1 -1
  119. package/mobile/dist/ui-kit/Select/filterOptions.js +2 -2
  120. package/mobile/dist/ui-kit/Select/filterOptions.js.map +1 -1
  121. package/mobile/dist/ui-kit/Select/renderIcon.d.ts +2 -0
  122. package/mobile/dist/ui-kit/Select/renderIcon.js +8 -0
  123. package/mobile/dist/ui-kit/Select/renderIcon.js.map +1 -0
  124. package/mobile/dist/ui-kit/Select/renderOptionText.d.ts +9 -0
  125. package/mobile/dist/ui-kit/Select/renderOptionText.js +11 -0
  126. package/mobile/dist/ui-kit/Select/renderOptionText.js.map +1 -0
  127. package/mobile/dist/ui-kit/Select/renderSearchInput.d.ts +9 -0
  128. package/mobile/dist/ui-kit/Select/renderSearchInput.js +7 -0
  129. package/mobile/dist/ui-kit/Select/renderSearchInput.js.map +1 -0
  130. package/mobile/dist/ui-kit/Select/renderSelectContainer.d.ts +15 -0
  131. package/mobile/dist/ui-kit/Select/renderSelectContainer.js +18 -0
  132. package/mobile/dist/ui-kit/Select/renderSelectContainer.js.map +1 -0
  133. package/mobile/dist/ui-kit/Select/useSelectPopup.d.ts +2 -1
  134. package/mobile/dist/ui-kit/Select/useSelectPopup.js +6 -5
  135. package/mobile/dist/ui-kit/Select/useSelectPopup.js.map +1 -1
  136. package/mobile/lib/Env.d.ts +2 -0
  137. package/mobile/lib/Env.js.map +1 -1
  138. package/mobile/lib/common.css +1 -1
  139. package/mobile/lib/components/Footer/LinkList.d.ts +1 -0
  140. package/mobile/lib/components/Footer/LinkList.js +2 -2
  141. package/mobile/lib/components/Footer/LinkList.js.map +1 -1
  142. package/mobile/lib/services/search/tokenize.js +4 -1
  143. package/mobile/lib/services/search/tokenize.js.map +1 -1
  144. package/mobile/lib/ui-kit/FormField/Fields/InnDadataField.js +5 -2
  145. package/mobile/lib/ui-kit/FormField/Fields/InnDadataField.js.map +1 -1
  146. package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js +5 -1
  147. package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  148. package/mobile/lib/ui-kit/Select/Select.d.ts +6 -0
  149. package/mobile/lib/ui-kit/Select/Select.js +32 -41
  150. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  151. package/mobile/lib/ui-kit/Select/SelectPopup.d.ts +1 -0
  152. package/mobile/lib/ui-kit/Select/SelectPopup.js +1 -1
  153. package/mobile/lib/ui-kit/Select/SelectPopup.js.map +1 -1
  154. package/mobile/lib/ui-kit/Select/filterOptions.d.ts +1 -1
  155. package/mobile/lib/ui-kit/Select/filterOptions.js +2 -2
  156. package/mobile/lib/ui-kit/Select/filterOptions.js.map +1 -1
  157. package/mobile/lib/ui-kit/Select/renderIcon.d.ts +2 -0
  158. package/mobile/lib/ui-kit/Select/renderIcon.js +5 -0
  159. package/mobile/lib/ui-kit/Select/renderIcon.js.map +1 -0
  160. package/mobile/lib/ui-kit/Select/renderOptionText.d.ts +9 -0
  161. package/mobile/lib/ui-kit/Select/renderOptionText.js +8 -0
  162. package/mobile/lib/ui-kit/Select/renderOptionText.js.map +1 -0
  163. package/mobile/lib/ui-kit/Select/renderSearchInput.d.ts +9 -0
  164. package/mobile/lib/ui-kit/Select/renderSearchInput.js +4 -0
  165. package/mobile/lib/ui-kit/Select/renderSearchInput.js.map +1 -0
  166. package/mobile/lib/ui-kit/Select/renderSelectContainer.d.ts +15 -0
  167. package/mobile/lib/ui-kit/Select/renderSelectContainer.js +15 -0
  168. package/mobile/lib/ui-kit/Select/renderSelectContainer.js.map +1 -0
  169. package/mobile/lib/ui-kit/Select/useSelectPopup.d.ts +2 -1
  170. package/mobile/lib/ui-kit/Select/useSelectPopup.js +6 -5
  171. package/mobile/lib/ui-kit/Select/useSelectPopup.js.map +1 -1
  172. package/mobile/src/Env.ts +2 -0
  173. package/mobile/src/components/Footer/LinkList.tsx +3 -2
  174. package/mobile/src/services/search/tokenize.ts +8 -1
  175. package/mobile/src/ui-kit/FormField/Fields/InnDadataField.tsx +7 -2
  176. package/mobile/src/ui-kit/SearchDialog/SearchDialog.tsx +11 -1
  177. package/mobile/src/ui-kit/Select/Select.tsx +46 -105
  178. package/mobile/src/ui-kit/Select/SelectPopup.tsx +12 -2
  179. package/mobile/src/ui-kit/Select/filterOptions.ts +6 -2
  180. package/mobile/src/ui-kit/Select/renderIcon.tsx +13 -0
  181. package/mobile/src/ui-kit/Select/renderOptionText.tsx +22 -0
  182. package/mobile/src/ui-kit/Select/renderSearchInput.tsx +28 -0
  183. package/mobile/src/ui-kit/Select/renderSelectContainer.tsx +60 -0
  184. package/mobile/src/ui-kit/Select/useSelectPopup.tsx +11 -7
  185. package/package.json +1 -1
  186. package/src/Env.ts +2 -0
  187. package/src/components/Footer/LinkList.tsx +3 -2
  188. package/src/icons/IconName.ts +4 -4
  189. package/src/services/search/tokenize.ts +8 -1
  190. package/src/ui-kit/FormField/Fields/InnDadataField.tsx +7 -2
  191. package/src/ui-kit/SearchDialog/SearchDialog.fixture.tsx +782 -0
  192. package/src/ui-kit/SearchDialog/SearchDialog.tsx +11 -1
  193. package/src/ui-kit/Select/Select.tsx +46 -105
  194. package/src/ui-kit/Select/SelectPopup.tsx +12 -2
  195. package/src/ui-kit/Select/filterOptions.ts +6 -2
  196. package/src/ui-kit/Select/renderIcon.tsx +13 -0
  197. package/src/ui-kit/Select/renderOptionText.tsx +22 -0
  198. package/src/ui-kit/Select/renderSearchInput.tsx +28 -0
  199. package/src/ui-kit/Select/renderSelectContainer.tsx +60 -0
  200. package/src/ui-kit/Select/useSelectPopup.tsx +11 -7
  201. package/src/ui-kit/Sitemap/Sitemap.tsx +25 -7
package/bundle/Env.d.ts CHANGED
@@ -2,6 +2,8 @@ export interface Env {
2
2
  SITE_URL?: string;
3
3
  SUB_PORTALS?: string;
4
4
  MOBILE?: string;
5
+ SINGLE_SEARCH_INDEX?: string;
6
+ SEARCH_LANG?: string;
5
7
  }
6
8
  export declare const env: Env & {
7
9
  _: Env;
@@ -1886,8 +1886,6 @@
1886
1886
  return debouncedCallback;
1887
1887
  };
1888
1888
 
1889
- const formatOption = (_) => _?.text || _?.key || '';
1890
-
1891
1889
  function useEventListener(target, type, listener, options) {
1892
1890
  useEffect(() => {
1893
1891
  if (!target || !listener) {
@@ -1911,16 +1909,59 @@
1911
1909
  return targetRef;
1912
1910
  }
1913
1911
 
1912
+ const InputWrapper = JSX(({ className, label, value = '', error, errors, type, isInteger, placeholder, maxLength, inputRef, isOpen, onOpen, onClose, onChange = noop, ...rest }) => {
1913
+ const popupRef = useOutsideClick(onClose);
1914
+ const handleChange = useCallback((v) => {
1915
+ const isOverMax = maxLength && v.length > maxLength;
1916
+ !isOpen && onOpen();
1917
+ if (!isOverMax) {
1918
+ onChange(normalizeInteger(v, isInteger));
1919
+ }
1920
+ }, [isOpen, onChange]);
1921
+ return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: onClose, onFocus: onOpen, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getRequiredLabel({ label, errors }), valid: Boolean(!error), onChange: handleChange, placeholder: getPlaceholder({ placeholder, errors, label }), value: value, ...rest }) }), renderErrorText(error)] }));
1922
+ });
1923
+ const normalizeInteger = (val = '', isInteger = false) => isInteger && val ? val.replace(/[^\d]+/g, '') : val;
1924
+ const getPlaceholder = ({ placeholder, errors, label }) => errors && !label ? `${placeholder}*` : placeholder;
1925
+
1926
+ const InputControl = JSX((props) => {
1927
+ const [isOpen, { setFalse: close, setTrue: open }] = useBool();
1928
+ return jsx(InputWrapper, { isOpen: isOpen, onOpen: open, onClose: close, ...props });
1929
+ });
1930
+
1931
+ const renderSearchInput = ({ query, isDisabled, onChangeQuery, inputProps, }) => (jsx("div", { className: "absolute top-0 w-full z-20", children: jsx(InputControl, { type: "text", value: query, autoFocus: true, disabled: isDisabled, onChange: (value) => onChangeQuery(value), maxLength: inputProps?.maxLength, isInteger: inputProps?.isInteger ?? false }) }));
1932
+
1933
+ const renderIcon$1 = (isOpen, iconVersion) => (jsx(Icon, { className: style('absolute right-0 flex self-center', { 'rotate-180': !isOpen }), iconVersion: iconVersion, name: "ArrowUpIcon", width: "16", height: "16" }));
1934
+
1935
+ const formatOption = (_) => _?.text || _?.key || '';
1936
+
1937
+ const renderOptionText = ({ isManualInput, query, value, placeholder, }) => {
1938
+ if (isManualInput && query) {
1939
+ return query;
1940
+ }
1941
+ return formatOption(value) || placeholder;
1942
+ };
1943
+
1944
+ const renderSelectContainer = ({ isBorder = true, valid = true, isDisabled = false, isOpen = false, onOpen, onClose, isManualInput = false, query = '', value, placeholder = '', iconVersion = 'black', options = [], }) => {
1945
+ const isIconHidden = getIconHidden(isManualInput, options, query);
1946
+ return (jsxs("div", { className: style({ 'border rounded-md': isBorder }, { 'hover:border-primary-hover': isBorder && !isDisabled }, isDisabled ? 'bg-main-divider' : 'cursor-pointer ', valid ? 'border-gray' : 'border-error', 'h-14 [&>*]:p-m pr-6 text-l flex items-center justify-between text-primary-text relative z-10 overflow-hidden'), onClick: isOpen ? onClose : onOpen, children: [jsx("p", { className: "line-clamp-2 text-ellipsis", children: renderOptionText({ isManualInput, query, value, placeholder }) }), isIconHidden ? '' : renderIcon$1(isOpen, iconVersion)] }));
1947
+ };
1948
+ const getIconHidden = (isManualInput, options, query) => {
1949
+ if (isManualInput && query?.length) {
1950
+ return true;
1951
+ }
1952
+ return isManualInput && !options.length;
1953
+ };
1954
+
1914
1955
  const usePopupManager = () => useEmitterWithActions(defaultEventBus.emitter, 'popup');
1915
1956
 
1916
- const filterOptions = (options, query) => {
1917
- if (!options?.length || !query?.trim()) {
1957
+ const filterOptions = (options, query, disableFilterOptions) => {
1958
+ if (!options?.length || !query?.trim() || disableFilterOptions) {
1918
1959
  return options;
1919
1960
  }
1920
1961
  return options.filter((_) => _.text?.toLocaleLowerCase().includes(query?.trim().toLocaleLowerCase()));
1921
1962
  };
1922
1963
 
1923
- const SelectPopup = JSX(({ popupRef, options, value, query, onChange, iconVersion, onChangeQuery }) => options?.length ? (jsx("div", { className: "bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md shadow-2xl", role: "list", ref: popupRef, children: filterOptions(options, query).map((option) => (jsxs("div", { className: "flex px-m py-s cursor-pointer hover:bg-main-divider pr-5xl relative", role: "listitem", "aria-selected": option.key === value?.key, onClick: (e) => {
1964
+ const SelectPopup = JSX(({ popupRef, options, value, query, iconVersion, disableFilterOptions, onChange, onChangeQuery, }) => options?.length ? (jsx("div", { className: "bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md shadow-2xl", role: "list", ref: popupRef, children: filterOptions(options, query, disableFilterOptions).map((option) => (jsxs("div", { className: "flex px-m py-s cursor-pointer hover:bg-main-divider pr-5xl relative", role: "listitem", "aria-selected": option.key === value?.key, onClick: (e) => {
1924
1965
  e.stopPropagation();
1925
1966
  if (onChange) {
1926
1967
  onChangeQuery?.('');
@@ -1930,16 +1971,16 @@
1930
1971
  hidden: option.key !== value?.key,
1931
1972
  }) })] }, option.key))) })) : null);
1932
1973
 
1933
- function useSelectPopup({ isOpen, options, value, query, onChange, onClose, iconVersion, onChangeQuery, }) {
1974
+ function useSelectPopup({ isOpen, options, value, query, onChange = noop, onClose = noop, iconVersion, disableFilterOptions = false, onChangeQuery = noop, }) {
1934
1975
  const popup = usePopupManager();
1935
1976
  const close = useCallback(() => {
1936
1977
  popup.close();
1937
- onClose && onClose();
1978
+ onClose();
1938
1979
  }, [onClose]);
1939
1980
  const handleChange = useCallback((option) => {
1940
1981
  close();
1941
- onChange && onChange(option);
1942
- onChangeQuery && onChangeQuery('');
1982
+ onChange(option);
1983
+ onChangeQuery('');
1943
1984
  }, [close, onChange]);
1944
1985
  const inputRef = useRef(null);
1945
1986
  const popupRef = useOutsideClick(close);
@@ -1950,7 +1991,7 @@
1950
1991
  const inputElement = inputRef.current;
1951
1992
  const { top, left, width, height } = inputElement.getBoundingClientRect();
1952
1993
  popup.open({
1953
- popup: (jsx(SelectPopup, { popupRef: popupRef, options: options, value: value, query: query, onChange: handleChange, iconVersion: iconVersion, onChangeQuery: onChangeQuery })),
1994
+ popup: (jsx(SelectPopup, { popupRef: popupRef, options: options, value: value, query: query, iconVersion: iconVersion, disableFilterOptions: disableFilterOptions, onChange: handleChange, onChangeQuery: onChangeQuery })),
1954
1995
  top: top + window.scrollY + height,
1955
1996
  left,
1956
1997
  width,
@@ -1959,56 +2000,47 @@
1959
2000
  return inputRef;
1960
2001
  }
1961
2002
 
1962
- const Select = JSX(({ className, label, options = [], value, valid = true, isBorder = true, placeholder = '', isSearch = false, isManualInput = false, disabled = false, iconVersion = 'black', onChange, onSearchQuery, }) => {
2003
+ const Select = JSX(({ className, label, options = [], value, isSearch = false, isManualInput = false, disabled = false, iconVersion = 'black', onChange, onSearchQuery = noop, inputProps, disableFilterOptions = false, ...rest }) => {
1963
2004
  const [isOpen, { setFalse: close, setTrue: open }] = useBool();
1964
2005
  const [query, setQuery] = useState('');
1965
- const isDisabled = getDisabled(disabled, options.length, isManualInput);
1966
- const isIconHidden = getIconHidden(isManualInput, options);
1967
- const hasOpen = isOpen && !isDisabled;
1968
- const debouncedOnSearchQuery = useMemo(() => onSearchQuery && getDebouncedSearchQuery(onSearchQuery), [onSearchQuery]);
2006
+ const isDisabled = disabled || (!isManualInput && options.length === 0);
2007
+ const debouncedOnSearchQuery = useMemo(() => debounce((searchValue) => onSearchQuery(searchValue), 300), [onSearchQuery]);
1969
2008
  const handleOpen = useCallback(() => {
1970
- if (isDisabled) {
1971
- return;
1972
- }
1973
- open();
2009
+ isDisabled ? noop() : open();
1974
2010
  }, [isDisabled]);
1975
- const handleChangeQuery = (newQuery) => {
1976
- setQuery(newQuery);
1977
- isManualInput && setOption(newQuery, onChange);
1978
- debouncedOnSearchQuery && debouncedOnSearchQuery(newQuery);
1979
- };
1980
2011
  const handleClose = useCallback(() => {
1981
2012
  !isManualInput && setQuery('');
1982
2013
  close();
1983
- }, []);
2014
+ }, [isManualInput]);
2015
+ const handleChangeQuery = useCallback((newQuery) => {
2016
+ setQuery(newQuery);
2017
+ isManualInput && onChange?.({ key: newQuery, text: newQuery, innDaData: {} });
2018
+ debouncedOnSearchQuery?.(newQuery);
2019
+ }, [isManualInput, onChange, debouncedOnSearchQuery]);
2020
+ const selectState = { query, value, options, isOpen, iconVersion };
1984
2021
  const inputRef = useSelectPopup({
1985
- isOpen,
1986
- options,
1987
- value,
1988
- query,
1989
2022
  onChange,
1990
2023
  onClose: handleClose,
1991
- iconVersion,
2024
+ disableFilterOptions,
1992
2025
  onChangeQuery: setQuery,
2026
+ ...selectState,
1993
2027
  });
1994
- return (jsxs("div", { className: style('space-y-xs', className), children: [renderLabel$1(label), jsxs("div", { className: style('relative', hasOpen ? 'z-20' : 'z-10'), ref: inputRef, children: [jsxs("div", { className: style('h-14 [&>*]:p-m pr-6 text-l flex items-center justify-between text-primary-text relative z-10 overflow-hidden', getStyle(isBorder, valid, isDisabled)), onClick: hasOpen ? handleClose : handleOpen, children: [jsx("p", { className: "line-clamp-2 text-ellipsis", children: useRenderOptionText({ isManualInput, query, value, placeholder }) }), isIconHidden ? '' : renderIcon$1(hasOpen, iconVersion)] }), isSearch && hasOpen ? renderSearchInput(query, isDisabled, handleChangeQuery) : null] })] }));
2028
+ return (jsxs("div", { className: style('space-y-xs', className), children: [renderLabel$1(label), jsxs("div", { className: style('relative', isOpen ? 'z-20' : 'z-10'), ref: inputRef, children: [renderSelectContainer({
2029
+ isDisabled,
2030
+ onClose: handleClose,
2031
+ onOpen: handleOpen,
2032
+ isManualInput,
2033
+ ...selectState,
2034
+ ...rest,
2035
+ }), isSearch && isOpen
2036
+ ? renderSearchInput({
2037
+ query,
2038
+ isDisabled,
2039
+ inputProps,
2040
+ onChangeQuery: handleChangeQuery,
2041
+ })
2042
+ : null] })] }));
1995
2043
  });
1996
- const useRenderOptionText = (data) => useMemo(() => {
1997
- if (data.isManualInput && data.query) {
1998
- return data.query;
1999
- }
2000
- return formatOption(data.value) || data.placeholder;
2001
- }, [data.isManualInput, data.query, data.value, data.placeholder]);
2002
- const renderSearchInput = (query, isDisabled, onChangeQuery) => (jsx("div", { className: style('absolute top-0 w-full z-20'), children: jsx(Input, { type: "text", value: query, autoFocus: true, disabled: isDisabled, onChange: (value) => onChangeQuery(value) }) }));
2003
- const renderIcon$1 = (isOpen, iconVersion) => (jsx(Icon, { className: style('absolute right-0 flex self-center', { 'rotate-180': !isOpen }), iconVersion: iconVersion, name: "ArrowUpIcon", width: "16", height: "16" }));
2004
- const getStyle = (isBorder, valid, disabled) => style(isBorder ? 'border rounded-md ' : '', isBorder && !disabled ? 'hover:border-primary-hover' : '', disabled ? 'bg-main-divider' : 'cursor-pointer ', valid ? 'border-gray' : 'border-error');
2005
- // TODO Нужен рефактор и декомпозиция компонента getDisabled, setOption, getIconHidden
2006
- const getDisabled = (disabled, length, isManualInput) => disabled || (!isManualInput && length === 0);
2007
- const setOption = (query, onChange) => {
2008
- onChange && query.trim() !== '' && onChange({ key: query, text: query, innDaData: {} });
2009
- };
2010
- const getIconHidden = (isManualInput, options) => isManualInput && !options.length;
2011
- const getDebouncedSearchQuery = (onSearchQuery) => debounce((searchValue) => onSearchQuery(searchValue), 300);
2012
2044
 
2013
2045
  const SelectControl = JSX(({ className = '', label, error, errors, ...rest }) => (jsxs("div", { className: className, children: [jsx(Select, { ...rest, valid: !error, label: getRequiredLabel({ label, errors }) }), renderErrorText(error)] })));
2014
2046
 
@@ -2205,25 +2237,6 @@
2205
2237
  const ITEMS_CREDIT_AMOUNT = ['От 1 000 ₽', 'До 1 000 000 000 ₽'];
2206
2238
  const AmountField = JSX(({ field, input }) => (jsx(InputRange, { title: "\u0421\u0443\u043C\u043C\u0430, \u20BD", items: ITEMS_CREDIT_AMOUNT, min: MIN_CREDIT_AMOUNT, max: MAX_CREDIT_AMOUNT, ...field(input?.name ?? '') })));
2207
2239
 
2208
- const InputWrapper = JSX(({ className, label, value = '', error, errors, type, isInteger, placeholder, maxLength, inputRef, isOpen, onOpen, onClose, onChange = noop, ...rest }) => {
2209
- const popupRef = useOutsideClick(onClose);
2210
- const handleChange = useCallback((v) => {
2211
- const isOverMax = maxLength && v.length > maxLength;
2212
- !isOpen && onOpen();
2213
- if (!isOverMax) {
2214
- onChange(normalizeInteger(v, isInteger));
2215
- }
2216
- }, [isOpen, onChange]);
2217
- return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: onClose, onFocus: onOpen, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getRequiredLabel({ label, errors }), valid: Boolean(!error), onChange: handleChange, placeholder: getPlaceholder({ placeholder, errors, label }), value: value, ...rest }) }), renderErrorText(error)] }));
2218
- });
2219
- const normalizeInteger = (val = '', isInteger = false) => isInteger && val ? val.replace(/[^\d]+/g, '') : val;
2220
- const getPlaceholder = ({ placeholder, errors, label }) => errors && !label ? `${placeholder}*` : placeholder;
2221
-
2222
- const InputControl = JSX((props) => {
2223
- const [isOpen, { setFalse: close, setTrue: open }] = useBool();
2224
- return jsx(InputWrapper, { isOpen: isOpen, onOpen: open, onClose: close, ...props });
2225
- });
2226
-
2227
2240
  const AnnualRevenueField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0413\u043E\u0434\u043E\u0432\u0430\u044F \u0432\u044B\u0440\u0443\u0447\u043A\u0430, \u20BD", ...field(input?.name ?? '') })));
2228
2241
 
2229
2242
  const ApplicationDateField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u044F \u0432 \u0411\u0430\u043D\u043A", ...field(input?.name ?? '') })));
@@ -2638,7 +2651,7 @@
2638
2651
  inn: _?.data?.inn,
2639
2652
  }));
2640
2653
 
2641
- const InnDadataField = JSX(({ field, input }) => {
2654
+ const InnDadataField = JSX(({ field, input = {} }) => {
2642
2655
  const [options, setOptions] = useState([]);
2643
2656
  const [searchQuery, setSearchQuery] = useState('');
2644
2657
  useAsyncEffect(async () => {
@@ -2656,7 +2669,10 @@
2656
2669
  },
2657
2670
  }));
2658
2671
  }, [options]);
2659
- return (jsx(SelectControl, { label: "\u0418\u041D\u041D", placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0418\u041D\u041D", options: getOptions, ...field(input?.name ?? ''), isSearch: true, isManualInput: true, onSearchQuery: setSearchQuery }));
2672
+ return (jsx(SelectControl, { label: "\u0418\u041D\u041D", placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0418\u041D\u041D", options: getOptions, ...field(input.name ?? ''), isSearch: true, isManualInput: true, inputProps: {
2673
+ isInteger: true,
2674
+ maxLength: 12,
2675
+ }, disableFilterOptions: true, onSearchQuery: setSearchQuery }));
2660
2676
  });
2661
2677
 
2662
2678
  const InnField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0418\u041D\u041D", isInteger: true, maxLength: 12, ...input, ...field(input?.name ?? '') })));
@@ -10404,9 +10420,9 @@
10404
10420
  });
10405
10421
  const getCurrencyRates = (currencies) => currencies?.filter((_) => [1, 2, 3].includes(_?.currency?.id)) || [];
10406
10422
 
10407
- const LinkList = JSX(({ className = '', items }) => {
10423
+ const LinkList = JSX(({ className = '', items, isFlex = true }) => {
10408
10424
  const link = useLink();
10409
- return (jsx("ul", { className: style('flex flex-col gap-s w-full', className), children: items?.map(renderLinkListItem(link)) }));
10425
+ return (jsx("ul", { className: style(isFlex ? 'flex flex-col gap-s' : 'block', 'w-full', className), children: items?.map(renderLinkListItem(link)) }));
10410
10426
  });
10411
10427
  const renderLinkListItem = (link) => ({ dataFooter, ...linkProps }, i) => {
10412
10428
  const { text, href, target, onClick } = link(linkProps);
@@ -10419,9 +10435,12 @@
10419
10435
  const isVisibleItem = (areaKeys) => (_) => !_.displayArea || areaKeys.includes(_.displayArea.toLowerCase());
10420
10436
 
10421
10437
  const FOOTER_AREA_KEYS = ['all', 'footer'];
10438
+ const IS_SINGLE_SEARCH_INDEX$1 = Boolean(env.SINGLE_SEARCH_INDEX);
10422
10439
  const Sitemap = JSX(({ className, navigationItems }) => {
10423
10440
  const link = useLink();
10424
- return (jsx("div", { role: "menu", className: style('w-full flex items-start justify-between flex-col md:flex-row gap-y-m lg:order-2', className), children: navigationItems?.filter(isVisibleItem(FOOTER_AREA_KEYS)).map(link).map(renderColumn) }));
10441
+ const filteredItems = navigationItems?.filter(isVisibleItem(FOOTER_AREA_KEYS))?.map(link) ?? [];
10442
+ const [firstItem] = filteredItems;
10443
+ return (jsx("div", { className: "space-y-2", children: IS_SINGLE_SEARCH_INDEX$1 ? (jsx("div", { children: jsx(LinkList, { className: "columns-3 space-y-3 gap-x-6xl", items: firstItem?.items, isFlex: false }) })) : (jsx("div", { role: "menu", className: style('w-full flex items-start justify-between flex-col md:flex-row gap-y-m lg:order-2', className), children: filteredItems?.map(renderColumn) })) }));
10425
10444
  });
10426
10445
  const renderColumn = (menuItem, index) => {
10427
10446
  const { text, items = [], href, target = '_self', onClick, dataFooter } = menuItem;
@@ -10540,10 +10559,12 @@
10540
10559
  const sum = (list = []) => list.reduce((a, b) => a + b, 0);
10541
10560
 
10542
10561
  const MIN_TERM_LEN = 3;
10562
+ const LANG = env.SEARCH_LANG;
10543
10563
  const tokenize = (text) => text
10544
10564
  .toLowerCase()
10545
10565
  .split(/[^0-9a-zа-я-]+/)
10546
- .filter((token) => token.length >= MIN_TERM_LEN && !/[0-9a-z]/.test(token));
10566
+ .filter((token) => token.length >= MIN_TERM_LEN &&
10567
+ (LANG === 'en' ? !/[а-яА-ЯёЁ0-9]/.test(token) : !/[0-9a-z]/.test(token)));
10547
10568
 
10548
10569
  const textRank = (queryTokens) => (text) => {
10549
10570
  const textTokens = tokenize(text || '');
@@ -10626,8 +10647,10 @@
10626
10647
  return (jsxs("div", { className: style('relative', className), role: "form", children: [jsx("div", { className: "absolute h-full flex items-center pl-m pointer-events-none", children: jsx(Img, { image: { icon: 'LoupeIcon', iconVersion: 'black' }, width: "24", height: "24" }) }), jsx("input", { className: style('h-14 w-full px-10 text-l text-black box-border rounded-md', inputValidStyle), value: value, type: "text", name: "search-bar-input", placeholder: placeholder, autoFocus: autoFocus, onChange: handleChange, onFocus: onFocus })] }));
10627
10648
  });
10628
10649
 
10650
+ const IS_SINGLE_SEARCH_INDEX = Boolean(env.SINGLE_SEARCH_INDEX);
10629
10651
  const SearchDialog = JSX(({ initialQuery, navigationItems, onClose }) => {
10630
- const basePathList = useMemo(() => navigationItems?.map((_) => _.href || '/'), [navigationItems]);
10652
+ const basePath = getBasePath(env.SITE_URL);
10653
+ const basePathList = useMemo(() => (IS_SINGLE_SEARCH_INDEX ? [basePath] : navigationItems?.map((_) => _.href || '/')), [navigationItems]);
10631
10654
  const [searchResult, searchInputProps] = useSearch({
10632
10655
  basePathList,
10633
10656
  initialQuery,
@@ -11998,7 +12021,7 @@
11998
12021
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
11999
12022
  });
12000
12023
 
12001
- const packageVersion = "0.14.908";
12024
+ const packageVersion = "0.14.910";
12002
12025
 
12003
12026
  exports.Blocks = Blocks;
12004
12027
  exports.ContentPage = ContentPage;