@redneckz/wildless-cms-uni-blocks 0.13.0 → 0.13.2

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 (79) hide show
  1. package/bundle/bundle.umd.js +33 -22
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/model/HeadlineType.d.ts +1 -1
  4. package/bundle/ui-kit/TabsControl/TabItemInner.d.ts +6 -0
  5. package/dist/components/Blocks.mobile.js +17 -13
  6. package/dist/components/Blocks.mobile.js.map +1 -1
  7. package/dist/components/MortgageFiltration/MortgageFiltration.js +5 -5
  8. package/dist/components/MortgageFiltration/MortgageFiltration.js.map +1 -1
  9. package/dist/components/Tabs/Tabs.js +6 -6
  10. package/dist/components/Tabs/Tabs.js.map +1 -1
  11. package/dist/model/HeadlineType.d.ts +1 -1
  12. package/dist/ui-kit/BaseFiltration/checkShouldRenderBlock.js +2 -4
  13. package/dist/ui-kit/BaseFiltration/checkShouldRenderBlock.js.map +1 -1
  14. package/dist/ui-kit/TabsControl/TabItem.js +15 -29
  15. package/dist/ui-kit/TabsControl/TabItem.js.map +1 -1
  16. package/dist/ui-kit/TabsControl/TabItemInner.d.ts +6 -0
  17. package/dist/ui-kit/TabsControl/TabItemInner.js +33 -0
  18. package/dist/ui-kit/TabsControl/TabItemInner.js.map +1 -0
  19. package/lib/components/Blocks.mobile.js +17 -13
  20. package/lib/components/Blocks.mobile.js.map +1 -1
  21. package/lib/components/MortgageFiltration/MortgageFiltration.js +5 -5
  22. package/lib/components/MortgageFiltration/MortgageFiltration.js.map +1 -1
  23. package/lib/components/Tabs/Tabs.js +6 -6
  24. package/lib/components/Tabs/Tabs.js.map +1 -1
  25. package/lib/model/HeadlineType.d.ts +1 -1
  26. package/lib/ui-kit/BaseFiltration/checkShouldRenderBlock.js +2 -4
  27. package/lib/ui-kit/BaseFiltration/checkShouldRenderBlock.js.map +1 -1
  28. package/lib/ui-kit/TabsControl/TabItem.js +15 -29
  29. package/lib/ui-kit/TabsControl/TabItem.js.map +1 -1
  30. package/lib/ui-kit/TabsControl/TabItemInner.d.ts +6 -0
  31. package/lib/ui-kit/TabsControl/TabItemInner.js +31 -0
  32. package/lib/ui-kit/TabsControl/TabItemInner.js.map +1 -0
  33. package/mobile/bundle/bundle.umd.js +98 -79
  34. package/mobile/bundle/bundle.umd.min.js +1 -1
  35. package/mobile/bundle/model/HeadlineType.d.ts +1 -1
  36. package/mobile/bundle/ui-kit/TabsControl/TabItemInner.d.ts +6 -0
  37. package/mobile/dist/components/Blocks.js +17 -13
  38. package/mobile/dist/components/Blocks.js.map +1 -1
  39. package/mobile/dist/components/MortgageFiltration/MortgageFiltration.js +5 -5
  40. package/mobile/dist/components/MortgageFiltration/MortgageFiltration.js.map +1 -1
  41. package/mobile/dist/components/Tabs/Tabs.js +6 -6
  42. package/mobile/dist/components/Tabs/Tabs.js.map +1 -1
  43. package/mobile/dist/model/HeadlineType.d.ts +1 -1
  44. package/mobile/dist/ui-kit/BaseFiltration/checkShouldRenderBlock.js +2 -4
  45. package/mobile/dist/ui-kit/BaseFiltration/checkShouldRenderBlock.js.map +1 -1
  46. package/mobile/dist/ui-kit/TabsControl/TabItem.js +15 -29
  47. package/mobile/dist/ui-kit/TabsControl/TabItem.js.map +1 -1
  48. package/mobile/dist/ui-kit/TabsControl/TabItemInner.d.ts +6 -0
  49. package/mobile/dist/ui-kit/TabsControl/TabItemInner.js +33 -0
  50. package/mobile/dist/ui-kit/TabsControl/TabItemInner.js.map +1 -0
  51. package/mobile/lib/components/Blocks.js +17 -13
  52. package/mobile/lib/components/Blocks.js.map +1 -1
  53. package/mobile/lib/components/MortgageFiltration/MortgageFiltration.js +5 -5
  54. package/mobile/lib/components/MortgageFiltration/MortgageFiltration.js.map +1 -1
  55. package/mobile/lib/components/Tabs/Tabs.js +6 -6
  56. package/mobile/lib/components/Tabs/Tabs.js.map +1 -1
  57. package/mobile/lib/model/HeadlineType.d.ts +1 -1
  58. package/mobile/lib/ui-kit/BaseFiltration/checkShouldRenderBlock.js +2 -4
  59. package/mobile/lib/ui-kit/BaseFiltration/checkShouldRenderBlock.js.map +1 -1
  60. package/mobile/lib/ui-kit/TabsControl/TabItem.js +15 -29
  61. package/mobile/lib/ui-kit/TabsControl/TabItem.js.map +1 -1
  62. package/mobile/lib/ui-kit/TabsControl/TabItemInner.d.ts +6 -0
  63. package/mobile/lib/ui-kit/TabsControl/TabItemInner.js +31 -0
  64. package/mobile/lib/ui-kit/TabsControl/TabItemInner.js.map +1 -0
  65. package/mobile/src/components/Blocks.ts +17 -13
  66. package/mobile/src/components/MortgageFiltration/MortgageFiltration.tsx +6 -6
  67. package/mobile/src/components/Tabs/Tabs.tsx +12 -9
  68. package/mobile/src/model/HeadlineType.ts +1 -1
  69. package/mobile/src/ui-kit/BaseFiltration/checkShouldRenderBlock.ts +2 -4
  70. package/mobile/src/ui-kit/TabsControl/TabItem.tsx +18 -57
  71. package/mobile/src/ui-kit/TabsControl/TabItemInner.tsx +69 -0
  72. package/package.json +1 -1
  73. package/src/components/Blocks.mobile.ts +17 -13
  74. package/src/components/MortgageFiltration/MortgageFiltration.tsx +6 -6
  75. package/src/components/Tabs/Tabs.tsx +12 -9
  76. package/src/model/HeadlineType.ts +1 -1
  77. package/src/ui-kit/BaseFiltration/checkShouldRenderBlock.ts +2 -4
  78. package/src/ui-kit/TabsControl/TabItem.tsx +18 -57
  79. package/src/ui-kit/TabsControl/TabItemInner.tsx +69 -0
@@ -1,36 +1,22 @@
1
1
  import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
4
  import { useLink } from '../../hooks/useLink.js';
4
- import { style } from '../../utils/style.js';
5
- import { Text } from '../Text/Text.js';
6
- const tabPaddingStyleMap = {
7
- default: 'px-xs',
8
- underlined: 'px-m',
9
- rounded: 'px-lg rounded-md',
10
- };
11
- const tabTextStyle = 'text-secondary-text hover:text-primary-main';
12
- const activeTabTextStyleMap = {
13
- default: 'text-black sm:text-white',
14
- underlined: 'text-primary-main border-b-2',
15
- rounded: 'text-white',
16
- };
17
- const tabBgStyleMap = {
18
- default: 'bg-white',
19
- underlined: 'bg-white',
20
- rounded: 'bg-transparent',
21
- };
22
- const activeTabBgStyleMap = {
23
- default: 'sm:bg-primary-main',
24
- underlined: 'bg-white',
25
- rounded: 'bg-primary-main',
26
- };
27
- export const TabItem = JSX(({ item = {}, isActive, onClick, type = 'default' }) => {
5
+ import { TabItemInner } from './TabItemInner.js';
6
+ export const TabItem = JSX((props) => props?.item?.href ? _jsx(LinkTabItem, { ...props }) : _jsx(ButtonTabItem, { ...props }));
7
+ const LinkTabItem = JSX((props) => {
28
8
  const link = useLink();
29
- const handleClick = () => {
9
+ const handleClick = useCallback(() => {
10
+ props.onClick && props.onClick(props.item || {});
11
+ }, [props.onClick, props.item]);
12
+ const { onClick, ...item } = link({ ...props.item, onClick: handleClick });
13
+ return _jsx(TabItemInner, { ...props, tag: "a", item: item, onClick: onClick });
14
+ });
15
+ // TODO: Update handlerDecorator (support buttons?)
16
+ const ButtonTabItem = JSX(({ item = {}, onClick, ...rest }) => {
17
+ const handleClick = useCallback(() => {
30
18
  onClick && onClick(item);
31
- };
32
- const { text, ...linkProps } = link({ ...item, onClick: handleClick });
33
- const Tag = item.href ? 'a' : 'div';
34
- return (_jsx(Tag, { className: style('h-12', 'block flex-1', 'cursor-pointer', tabPaddingStyleMap[type], isActive ? activeTabBgStyleMap[type] : tabBgStyleMap[type]), role: "tab", "aria-selected": isActive, ...linkProps, children: _jsx("div", { className: style('h-full', 'flex justify-center items-center', 'text-center whitespace-nowrap', isActive ? activeTabTextStyleMap[type] : tabTextStyle), children: _jsx(Text, { size: "text-m", children: text }) }) }));
19
+ }, [onClick, item]);
20
+ return _jsx(TabItemInner, { item: item, onClick: handleClick, ...rest });
35
21
  });
36
22
  //# sourceMappingURL=TabItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabItem.js","sourceRoot":"","sources":["../../../src/ui-kit/TabsControl/TabItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAcpC,MAAM,kBAAkB,GAA4B;IAClD,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,kBAAkB;CAC5B,CAAC;AAEF,MAAM,YAAY,GAAG,6CAA6C,CAAC;AAEnE,MAAM,qBAAqB,GAA4B;IACrD,OAAO,EAAE,0BAA0B;IACnC,UAAU,EAAE,8BAA8B;IAC1C,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,MAAM,aAAa,GAA4B;IAC7C,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,mBAAmB,GAA4B;IACnD,OAAO,EAAE,oBAAoB;IAC7B,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpC,OAAO,CACL,KAAC,GAAG,IACF,SAAS,EAAE,KAAK,CACd,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,kBAAkB,CAAC,IAAI,CAAC,EACxB,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAC3D,EACD,IAAI,EAAC,KAAK,mBACK,QAAQ,KACnB,SAAS,YAEb,cACE,SAAS,EAAE,KAAK,CACd,QAAQ,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CACtD,YAED,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,YAAE,IAAI,GAAQ,GAC7B,GACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"TabItem.js","sourceRoot":"","sources":["../../../src/ui-kit/TabsControl/TabItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAc9C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAe,CAAC,KAAK,EAAE,EAAE,CACjD,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAC,WAAW,OAAK,KAAK,GAAI,CAAC,CAAC,CAAC,KAAC,aAAa,OAAK,KAAK,GAAI,CAC9E,CAAC;AAEF,MAAM,WAAW,GAAG,GAAG,CAAe,CAAC,KAAK,EAAE,EAAE;IAC9C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAE3E,OAAO,KAAC,YAAY,OAAK,KAAK,EAAE,GAAG,EAAC,GAAG,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,aAAa,GAAG,GAAG,CAAe,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IAC1E,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpB,OAAO,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,KAAM,IAAI,GAAI,CAAC;AACtE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TabItemProps } from './TabItem';
2
+ interface TabItemInnerProps extends TabItemProps {
3
+ tag?: string;
4
+ }
5
+ export declare const TabItemInner: import("@redneckz/uni-jsx").UNIComponent<TabItemInnerProps, any, any>;
6
+ export {};
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { style } from '../../utils/style.js';
4
+ import { Text } from '../Text/Text.js';
5
+ const tabPaddingStyleMap = {
6
+ default: 'px-xs',
7
+ underlined: 'px-m',
8
+ rounded: 'px-lg rounded-md',
9
+ };
10
+ const tabTextStyle = 'text-secondary-text hover:text-primary-main';
11
+ const activeTabTextStyleMap = {
12
+ default: 'text-black sm:text-white',
13
+ underlined: 'text-primary-main border-b-2',
14
+ rounded: 'text-white',
15
+ };
16
+ const tabBgStyleMap = {
17
+ default: 'bg-white',
18
+ underlined: 'bg-white',
19
+ rounded: 'bg-transparent',
20
+ };
21
+ const activeTabBgStyleMap = {
22
+ default: 'sm:bg-primary-main',
23
+ underlined: 'bg-white',
24
+ rounded: 'bg-primary-main',
25
+ };
26
+ export const TabItemInner = JSX(({ tag = 'div', item = {}, isActive, type = 'default', onClick }) => {
27
+ const Tag = tag;
28
+ const { text, ...link } = item;
29
+ return (_jsx(Tag, { className: style('h-12', 'block flex-1', 'cursor-pointer', tabPaddingStyleMap[type], isActive ? activeTabBgStyleMap[type] : tabBgStyleMap[type]), role: "tab", "aria-selected": isActive, onClick: onClick, ...link, children: _jsx("div", { className: style('h-full', 'flex justify-center items-center', 'text-center whitespace-nowrap', isActive ? activeTabTextStyleMap[type] : tabTextStyle), children: _jsx(Text, { size: "text-m", children: text }) }) }));
30
+ });
31
+ //# sourceMappingURL=TabItemInner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabItemInner.js","sourceRoot":"","sources":["../../../src/ui-kit/TabsControl/TabItemInner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,MAAM,kBAAkB,GAA4B;IAClD,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,kBAAkB;CAC5B,CAAC;AAEF,MAAM,YAAY,GAAG,6CAA6C,CAAC;AAEnE,MAAM,qBAAqB,GAA4B;IACrD,OAAO,EAAE,0BAA0B;IACnC,UAAU,EAAE,8BAA8B;IAC1C,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,MAAM,aAAa,GAA4B;IAC7C,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,mBAAmB,GAA4B;IACnD,OAAO,EAAE,oBAAoB;IAC7B,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAMF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAC7B,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;IAClE,MAAM,GAAG,GAAQ,GAAG,CAAC;IAErB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAE/B,OAAO,CACL,KAAC,GAAG,IACF,SAAS,EAAE,KAAK,CACd,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,kBAAkB,CAAC,IAAI,CAAC,EACxB,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAC3D,EACD,IAAI,EAAC,KAAK,mBACK,QAAQ,EACvB,OAAO,EAAE,OAAO,KACZ,IAAI,YAER,cACE,SAAS,EAAE,KAAK,CACd,QAAQ,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CACtD,YAED,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,YAAE,IAAI,GAAQ,GAC7B,GACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -7,12 +7,12 @@ import { Calculator } from './Calculator/Calculator';
7
7
  import { CardTransfer } from './CardTransfer/CardTransfer';
8
8
  import { Carousel } from './Carousel/Carousel';
9
9
  import { CarouselBankHistoryCard } from './CarouselBankHistoryCard/CarouselBankHistoryCard';
10
- import { CarouselProgramsCard } from './CarouselProgramsCard/CarouselProgramsCard';
11
- import { CarouselRecommendationCard } from './CarouselRecommendationCard/CarouselRecommendationCard';
12
- import { CarouselTariffsCard } from './CarouselTariffsCard/CarouselTariffsCard';
13
10
  import { CarouselCard } from './CarouselCard/CarouselCard';
14
11
  import { CarouselCatalogCard } from './CarouselCatalogCard/CarouselCatalogCard';
15
12
  import { CarouselProductCard } from './CarouselProductCard/CarouselProductCard';
13
+ import { CarouselProgramsCard } from './CarouselProgramsCard/CarouselProgramsCard';
14
+ import { CarouselRecommendationCard } from './CarouselRecommendationCard/CarouselRecommendationCard';
15
+ import { CarouselTariffsCard } from './CarouselTariffsCard/CarouselTariffsCard';
16
16
  import { ComparisonTable } from './ComparisonTable/ComparisonTable';
17
17
  import { ExchangeRateTile } from './ExchangeRateTile/ExchangeRateTile';
18
18
  import { Footer } from './Footer/Footer';
@@ -26,6 +26,7 @@ import { PictureText } from './PictureText/PictureText';
26
26
  import { Placeholder } from './Placeholder/Placeholder';
27
27
  import { ProductBlock } from './ProductBlock/ProductBlock';
28
28
  import { ProductGallery } from './ProductGallery/ProductGallery';
29
+ import { ProductTile } from './ProductTile/ProductTile';
29
30
  import { RichTextBlock } from './RichTextBlock/RichTextBlock';
30
31
  import { RollupItem } from './RollupItem/RollupItem';
31
32
  import { SafeDepositRental } from './SafeDepositRental/SafeDepositRental';
@@ -33,21 +34,26 @@ import { StepsBlock } from './StepsBlock/StepsBlock';
33
34
  import { Tabs } from './Tabs/Tabs';
34
35
  import { TariffsTable } from './TariffsTable/TariffsTable';
35
36
  import { TextBlock } from './TextBlock/TextBlock';
37
+ import { Tile } from './Tile/Tile';
36
38
  import { VerticalLayout } from './VerticalLayout/VerticalLayout';
37
39
 
38
40
  export const Blocks: BlocksRegistry = {
39
41
  ApplicationForm,
40
- ButtonsBlock,
42
+ BenefitsBlock,
41
43
  BonusBenefitsBlock,
44
+ ButtonsBlock,
42
45
  Calculator,
43
46
  CardTransfer,
44
47
  Carousel,
48
+ CarouselBankHistoryCard,
45
49
  CarouselCard,
46
50
  CarouselCatalogCard,
47
51
  CarouselProductCard,
48
- CarouselBankHistoryCard,
52
+ CarouselProgramsCard,
53
+ CarouselRecommendationCard,
49
54
  CarouselTariffsCard,
50
55
  ComparisonTable,
56
+ ExchangeRateTile,
51
57
  Footer,
52
58
  Header,
53
59
  Headline,
@@ -58,17 +64,15 @@ export const Blocks: BlocksRegistry = {
58
64
  PictureText,
59
65
  Placeholder,
60
66
  ProductBlock,
67
+ ProductGallery,
68
+ ProductTile,
69
+ RichTextBlock,
70
+ RollupItem,
71
+ SafeDepositRental,
61
72
  StepsBlock,
62
73
  Tabs,
63
74
  TariffsTable,
64
75
  TextBlock,
65
- RichTextBlock,
66
- RollupItem,
67
- SafeDepositRental,
76
+ Tile,
68
77
  VerticalLayout,
69
- CarouselRecommendationCard,
70
- ExchangeRateTile,
71
- CarouselProgramsCard,
72
- ProductGallery,
73
- BenefitsBlock,
74
78
  };
@@ -28,7 +28,7 @@ export const MortgageFiltration: JSXBlock<MortgageFiltrationProps> = JSX<Mortgag
28
28
  const [filtrationState, { field, reset, update: replaceFiltrationState }] =
29
29
  useForm(initialFiltrationState);
30
30
 
31
- const normalizedHotFilters: TabItemBase[] = useMemo(
31
+ const tabsControlItems: TabItemBase[] = useMemo(
32
32
  () =>
33
33
  hotFilters.map(({ text }) => ({
34
34
  text,
@@ -40,12 +40,12 @@ export const MortgageFiltration: JSXBlock<MortgageFiltrationProps> = JSX<Mortgag
40
40
 
41
41
  const handleHotFilterSelect = useCallback(
42
42
  (_: TabItemBase) => {
43
- setHotFilterIndex(normalizedHotFilters.indexOf(_));
43
+ setHotFilterIndex(tabsControlItems.indexOf(_));
44
44
  replaceFiltrationState(
45
- hotFilters[normalizedHotFilters.indexOf(_)].filter || initialFiltrationState,
45
+ hotFilters[tabsControlItems.indexOf(_)].filter || initialFiltrationState,
46
46
  );
47
47
  },
48
- [normalizedHotFilters],
48
+ [hotFilters, tabsControlItems],
49
49
  );
50
50
 
51
51
  useEffect(() => {
@@ -65,8 +65,8 @@ export const MortgageFiltration: JSXBlock<MortgageFiltrationProps> = JSX<Mortgag
65
65
  >
66
66
  <TabsControl
67
67
  className="mb-2xs"
68
- items={normalizedHotFilters}
69
- value={normalizedHotFilters[hotFilterIndex]}
68
+ items={tabsControlItems}
69
+ value={tabsControlItems[hotFilterIndex]}
70
70
  onChange={handleHotFilterSelect}
71
71
  />
72
72
  {renderFiltrationForm({ field, reset, filtrationSchema, resetButton })}
@@ -12,7 +12,7 @@ export interface TabsBlockProps extends TabsContent, UniBlockProps {}
12
12
 
13
13
  export const Tabs = JSX<TabsBlockProps>(
14
14
  ({ className = '', isSticky, tabs = [], tabsMode, ...rest }) => {
15
- const normalizedTabs: TabItemBase[] = useMemo(() => tabs.map(normalizeTab), [tabs]);
15
+ const tabsControlItems: TabItemBase[] = useMemo(() => tabs.map(normalizeTab), [tabs]);
16
16
 
17
17
  const [activeTabIndex, setActiveTabIndex] = useState(0);
18
18
 
@@ -32,12 +32,15 @@ export const Tabs = JSX<TabsBlockProps>(
32
32
  }
33
33
  }, [tabs, activeTabIndex]);
34
34
 
35
- const handleChange = useCallback((_: TabItemBase) => {
36
- const index = normalizedTabs.indexOf(_);
35
+ const handleChange = useCallback(
36
+ (_: TabItemBase) => {
37
+ const index = tabsControlItems.indexOf(_);
37
38
 
38
- setActiveTabIndex(index);
39
- fireTabEvent(tabs[index]);
40
- }, []);
39
+ setActiveTabIndex(index);
40
+ fireTabEvent(tabs[index]);
41
+ },
42
+ [tabs, tabsControlItems],
43
+ );
41
44
 
42
45
  return (
43
46
  <BlockWrapper
@@ -46,10 +49,10 @@ export const Tabs = JSX<TabsBlockProps>(
46
49
  {...rest}
47
50
  >
48
51
  {renderTabs({
49
- items: normalizedTabs,
50
- onChange: handleChange,
51
- value: normalizedTabs[activeTabIndex],
52
+ items: tabsControlItems,
53
+ value: tabsControlItems[activeTabIndex],
52
54
  tabsMode,
55
+ onChange: handleChange,
53
56
  })}
54
57
  </BlockWrapper>
55
58
  );
@@ -46,7 +46,7 @@ export type AdditionalDescriptionProps = {
46
46
  additionalDescription?: string;
47
47
  };
48
48
 
49
- export type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps & {};
49
+ export type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps;
50
50
 
51
51
  export type HeadlineProps = HeadlineCommonProps & {
52
52
  headlineVersion?: HeadlineVersion;
@@ -34,10 +34,8 @@ export const checkShouldRenderBlock = (pattern: Record<string, any>, target: Rec
34
34
  return isNumberFieldMatch(key, pattern);
35
35
  }
36
36
 
37
- if (typeof subPattern === 'object') {
38
- if ('min' in subPattern && 'max' in subPattern) {
39
- return isValueInRange(key, pattern);
40
- }
37
+ if (typeof subPattern === 'object' && 'min' in subPattern && 'max' in subPattern) {
38
+ return isValueInRange(key, pattern);
41
39
  }
42
40
 
43
41
  return Array.isArray(subPattern)
@@ -1,8 +1,8 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
2
3
  import { useLink } from '../../hooks/useLink';
3
4
  import type { LinkProps } from '../../model/LinkProps';
4
- import { style } from '../../utils/style';
5
- import { Text } from '../Text/Text';
5
+ import { TabItemInner } from './TabItemInner';
6
6
  import type { TabsControlProps } from './TabsControlProps';
7
7
 
8
8
  export type TabItemBase = LinkProps;
@@ -16,66 +16,27 @@ export interface TabItemProps {
16
16
  type?: TabType;
17
17
  }
18
18
 
19
- const tabPaddingStyleMap: Record<TabType, string> = {
20
- default: 'px-xs',
21
- underlined: 'px-m',
22
- rounded: 'px-lg rounded-md',
23
- };
19
+ export const TabItem = JSX<TabItemProps>((props) =>
20
+ props?.item?.href ? <LinkTabItem {...props} /> : <ButtonTabItem {...props} />,
21
+ );
24
22
 
25
- const tabTextStyle = 'text-secondary-text hover:text-primary-main';
26
-
27
- const activeTabTextStyleMap: Record<TabType, string> = {
28
- default: 'text-black sm:text-white',
29
- underlined: 'text-primary-main border-b-2',
30
- rounded: 'text-white',
31
- };
23
+ const LinkTabItem = JSX<TabItemProps>((props) => {
24
+ const link = useLink();
32
25
 
33
- const tabBgStyleMap: Record<TabType, string> = {
34
- default: 'bg-white',
35
- underlined: 'bg-white',
36
- rounded: 'bg-transparent',
37
- };
26
+ const handleClick = useCallback(() => {
27
+ props.onClick && props.onClick(props.item || {});
28
+ }, [props.onClick, props.item]);
38
29
 
39
- const activeTabBgStyleMap: Record<TabType, string> = {
40
- default: 'sm:bg-primary-main',
41
- underlined: 'bg-white',
42
- rounded: 'bg-primary-main',
43
- };
30
+ const { onClick, ...item } = link({ ...props.item, onClick: handleClick });
44
31
 
45
- export const TabItem = JSX<TabItemProps>(({ item = {}, isActive, onClick, type = 'default' }) => {
46
- const link = useLink();
32
+ return <TabItemInner {...props} tag="a" item={item} onClick={onClick} />;
33
+ });
47
34
 
48
- const handleClick = () => {
35
+ // TODO: Update handlerDecorator (support buttons?)
36
+ const ButtonTabItem = JSX<TabItemProps>(({ item = {}, onClick, ...rest }) => {
37
+ const handleClick = useCallback(() => {
49
38
  onClick && onClick(item);
50
- };
51
-
52
- const { text, ...linkProps } = link({ ...item, onClick: handleClick });
53
-
54
- const Tag = item.href ? 'a' : 'div';
39
+ }, [onClick, item]);
55
40
 
56
- return (
57
- <Tag
58
- className={style(
59
- 'h-12',
60
- 'block flex-1',
61
- 'cursor-pointer',
62
- tabPaddingStyleMap[type],
63
- isActive ? activeTabBgStyleMap[type] : tabBgStyleMap[type],
64
- )}
65
- role="tab"
66
- aria-selected={isActive}
67
- {...linkProps}
68
- >
69
- <div
70
- className={style(
71
- 'h-full',
72
- 'flex justify-center items-center',
73
- 'text-center whitespace-nowrap',
74
- isActive ? activeTabTextStyleMap[type] : tabTextStyle,
75
- )}
76
- >
77
- <Text size="text-m">{text}</Text>
78
- </div>
79
- </Tag>
80
- );
41
+ return <TabItemInner item={item} onClick={handleClick} {...rest} />;
81
42
  });
@@ -0,0 +1,69 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { style } from '../../utils/style';
3
+ import { Text } from '../Text/Text';
4
+ import type { TabItemProps, TabType } from './TabItem';
5
+
6
+ const tabPaddingStyleMap: Record<TabType, string> = {
7
+ default: 'px-xs',
8
+ underlined: 'px-m',
9
+ rounded: 'px-lg rounded-md',
10
+ };
11
+
12
+ const tabTextStyle = 'text-secondary-text hover:text-primary-main';
13
+
14
+ const activeTabTextStyleMap: Record<TabType, string> = {
15
+ default: 'text-black sm:text-white',
16
+ underlined: 'text-primary-main border-b-2',
17
+ rounded: 'text-white',
18
+ };
19
+
20
+ const tabBgStyleMap: Record<TabType, string> = {
21
+ default: 'bg-white',
22
+ underlined: 'bg-white',
23
+ rounded: 'bg-transparent',
24
+ };
25
+
26
+ const activeTabBgStyleMap: Record<TabType, string> = {
27
+ default: 'sm:bg-primary-main',
28
+ underlined: 'bg-white',
29
+ rounded: 'bg-primary-main',
30
+ };
31
+
32
+ interface TabItemInnerProps extends TabItemProps {
33
+ tag?: string;
34
+ }
35
+
36
+ export const TabItemInner = JSX<TabItemInnerProps>(
37
+ ({ tag = 'div', item = {}, isActive, type = 'default', onClick }) => {
38
+ const Tag: any = tag;
39
+
40
+ const { text, ...link } = item;
41
+
42
+ return (
43
+ <Tag
44
+ className={style(
45
+ 'h-12',
46
+ 'block flex-1',
47
+ 'cursor-pointer',
48
+ tabPaddingStyleMap[type],
49
+ isActive ? activeTabBgStyleMap[type] : tabBgStyleMap[type],
50
+ )}
51
+ role="tab"
52
+ aria-selected={isActive}
53
+ onClick={onClick}
54
+ {...link}
55
+ >
56
+ <div
57
+ className={style(
58
+ 'h-full',
59
+ 'flex justify-center items-center',
60
+ 'text-center whitespace-nowrap',
61
+ isActive ? activeTabTextStyleMap[type] : tabTextStyle,
62
+ )}
63
+ >
64
+ <Text size="text-m">{text}</Text>
65
+ </div>
66
+ </Tag>
67
+ );
68
+ },
69
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -7,12 +7,12 @@ import { Calculator } from './Calculator/Calculator';
7
7
  import { CardTransfer } from './CardTransfer/CardTransfer';
8
8
  import { Carousel } from './Carousel/Carousel';
9
9
  import { CarouselBankHistoryCard } from './CarouselBankHistoryCard/CarouselBankHistoryCard';
10
- import { CarouselProgramsCard } from './CarouselProgramsCard/CarouselProgramsCard';
11
- import { CarouselRecommendationCard } from './CarouselRecommendationCard/CarouselRecommendationCard';
12
- import { CarouselTariffsCard } from './CarouselTariffsCard/CarouselTariffsCard';
13
10
  import { CarouselCard } from './CarouselCard/CarouselCard';
14
11
  import { CarouselCatalogCard } from './CarouselCatalogCard/CarouselCatalogCard';
15
12
  import { CarouselProductCard } from './CarouselProductCard/CarouselProductCard';
13
+ import { CarouselProgramsCard } from './CarouselProgramsCard/CarouselProgramsCard';
14
+ import { CarouselRecommendationCard } from './CarouselRecommendationCard/CarouselRecommendationCard';
15
+ import { CarouselTariffsCard } from './CarouselTariffsCard/CarouselTariffsCard';
16
16
  import { ComparisonTable } from './ComparisonTable/ComparisonTable';
17
17
  import { ExchangeRateTile } from './ExchangeRateTile/ExchangeRateTile';
18
18
  import { Footer } from './Footer/Footer';
@@ -26,6 +26,7 @@ import { PictureText } from './PictureText/PictureText';
26
26
  import { Placeholder } from './Placeholder/Placeholder';
27
27
  import { ProductBlock } from './ProductBlock/ProductBlock';
28
28
  import { ProductGallery } from './ProductGallery/ProductGallery';
29
+ import { ProductTile } from './ProductTile/ProductTile';
29
30
  import { RichTextBlock } from './RichTextBlock/RichTextBlock';
30
31
  import { RollupItem } from './RollupItem/RollupItem';
31
32
  import { SafeDepositRental } from './SafeDepositRental/SafeDepositRental';
@@ -33,21 +34,26 @@ import { StepsBlock } from './StepsBlock/StepsBlock';
33
34
  import { Tabs } from './Tabs/Tabs';
34
35
  import { TariffsTable } from './TariffsTable/TariffsTable';
35
36
  import { TextBlock } from './TextBlock/TextBlock';
37
+ import { Tile } from './Tile/Tile';
36
38
  import { VerticalLayout } from './VerticalLayout/VerticalLayout';
37
39
 
38
40
  export const Blocks: BlocksRegistry = {
39
41
  ApplicationForm,
40
- ButtonsBlock,
42
+ BenefitsBlock,
41
43
  BonusBenefitsBlock,
44
+ ButtonsBlock,
42
45
  Calculator,
43
46
  CardTransfer,
44
47
  Carousel,
48
+ CarouselBankHistoryCard,
45
49
  CarouselCard,
46
50
  CarouselCatalogCard,
47
51
  CarouselProductCard,
48
- CarouselBankHistoryCard,
52
+ CarouselProgramsCard,
53
+ CarouselRecommendationCard,
49
54
  CarouselTariffsCard,
50
55
  ComparisonTable,
56
+ ExchangeRateTile,
51
57
  Footer,
52
58
  Header,
53
59
  Headline,
@@ -58,17 +64,15 @@ export const Blocks: BlocksRegistry = {
58
64
  PictureText,
59
65
  Placeholder,
60
66
  ProductBlock,
67
+ ProductGallery,
68
+ ProductTile,
69
+ RichTextBlock,
70
+ RollupItem,
71
+ SafeDepositRental,
61
72
  StepsBlock,
62
73
  Tabs,
63
74
  TariffsTable,
64
75
  TextBlock,
65
- RichTextBlock,
66
- RollupItem,
67
- SafeDepositRental,
76
+ Tile,
68
77
  VerticalLayout,
69
- CarouselRecommendationCard,
70
- ExchangeRateTile,
71
- CarouselProgramsCard,
72
- ProductGallery,
73
- BenefitsBlock,
74
78
  };
@@ -28,7 +28,7 @@ export const MortgageFiltration: JSXBlock<MortgageFiltrationProps> = JSX<Mortgag
28
28
  const [filtrationState, { field, reset, update: replaceFiltrationState }] =
29
29
  useForm(initialFiltrationState);
30
30
 
31
- const normalizedHotFilters: TabItemBase[] = useMemo(
31
+ const tabsControlItems: TabItemBase[] = useMemo(
32
32
  () =>
33
33
  hotFilters.map(({ text }) => ({
34
34
  text,
@@ -40,12 +40,12 @@ export const MortgageFiltration: JSXBlock<MortgageFiltrationProps> = JSX<Mortgag
40
40
 
41
41
  const handleHotFilterSelect = useCallback(
42
42
  (_: TabItemBase) => {
43
- setHotFilterIndex(normalizedHotFilters.indexOf(_));
43
+ setHotFilterIndex(tabsControlItems.indexOf(_));
44
44
  replaceFiltrationState(
45
- hotFilters[normalizedHotFilters.indexOf(_)].filter || initialFiltrationState,
45
+ hotFilters[tabsControlItems.indexOf(_)].filter || initialFiltrationState,
46
46
  );
47
47
  },
48
- [normalizedHotFilters],
48
+ [hotFilters, tabsControlItems],
49
49
  );
50
50
 
51
51
  useEffect(() => {
@@ -65,8 +65,8 @@ export const MortgageFiltration: JSXBlock<MortgageFiltrationProps> = JSX<Mortgag
65
65
  >
66
66
  <TabsControl
67
67
  className="mb-2xs"
68
- items={normalizedHotFilters}
69
- value={normalizedHotFilters[hotFilterIndex]}
68
+ items={tabsControlItems}
69
+ value={tabsControlItems[hotFilterIndex]}
70
70
  onChange={handleHotFilterSelect}
71
71
  />
72
72
  {renderFiltrationForm({ field, reset, filtrationSchema, resetButton })}
@@ -12,7 +12,7 @@ export interface TabsBlockProps extends TabsContent, UniBlockProps {}
12
12
 
13
13
  export const Tabs = JSX<TabsBlockProps>(
14
14
  ({ className = '', isSticky, tabs = [], tabsMode, ...rest }) => {
15
- const normalizedTabs: TabItemBase[] = useMemo(() => tabs.map(normalizeTab), [tabs]);
15
+ const tabsControlItems: TabItemBase[] = useMemo(() => tabs.map(normalizeTab), [tabs]);
16
16
 
17
17
  const [activeTabIndex, setActiveTabIndex] = useState(0);
18
18
 
@@ -32,12 +32,15 @@ export const Tabs = JSX<TabsBlockProps>(
32
32
  }
33
33
  }, [tabs, activeTabIndex]);
34
34
 
35
- const handleChange = useCallback((_: TabItemBase) => {
36
- const index = normalizedTabs.indexOf(_);
35
+ const handleChange = useCallback(
36
+ (_: TabItemBase) => {
37
+ const index = tabsControlItems.indexOf(_);
37
38
 
38
- setActiveTabIndex(index);
39
- fireTabEvent(tabs[index]);
40
- }, []);
39
+ setActiveTabIndex(index);
40
+ fireTabEvent(tabs[index]);
41
+ },
42
+ [tabs, tabsControlItems],
43
+ );
41
44
 
42
45
  return (
43
46
  <BlockWrapper
@@ -46,10 +49,10 @@ export const Tabs = JSX<TabsBlockProps>(
46
49
  {...rest}
47
50
  >
48
51
  {renderTabs({
49
- items: normalizedTabs,
50
- onChange: handleChange,
51
- value: normalizedTabs[activeTabIndex],
52
+ items: tabsControlItems,
53
+ value: tabsControlItems[activeTabIndex],
52
54
  tabsMode,
55
+ onChange: handleChange,
53
56
  })}
54
57
  </BlockWrapper>
55
58
  );
@@ -46,7 +46,7 @@ export type AdditionalDescriptionProps = {
46
46
  additionalDescription?: string;
47
47
  };
48
48
 
49
- export type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps & {};
49
+ export type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps;
50
50
 
51
51
  export type HeadlineProps = HeadlineCommonProps & {
52
52
  headlineVersion?: HeadlineVersion;
@@ -34,10 +34,8 @@ export const checkShouldRenderBlock = (pattern: Record<string, any>, target: Rec
34
34
  return isNumberFieldMatch(key, pattern);
35
35
  }
36
36
 
37
- if (typeof subPattern === 'object') {
38
- if ('min' in subPattern && 'max' in subPattern) {
39
- return isValueInRange(key, pattern);
40
- }
37
+ if (typeof subPattern === 'object' && 'min' in subPattern && 'max' in subPattern) {
38
+ return isValueInRange(key, pattern);
41
39
  }
42
40
 
43
41
  return Array.isArray(subPattern)