PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / blocks / slider-item / save.js
vk-blocks / src / blocks / slider-item Last commit date
deprecated 2 months ago GenerateBgImage.js 2 months ago block.json 1 month ago edit.js 1 week ago icon.svg 2 months ago index.js 2 months ago index.php 2 months ago save.js 2 months ago style.scss 2 months ago
save.js
114 lines
1 /**
2 * External dependencies
3 */
4 import classnames from 'classnames';
5 import { sanitizeSlug } from '@vkblocks/utils/sanitizeSlug';
6
7 /* eslint camelcase: 0 */
8 import { __ } from '@wordpress/i18n';
9 import { InnerBlocks, useBlockProps } from '@wordpress/block-editor';
10 import GenerateBgImage from './GenerateBgImage';
11 import { isHexColor } from '@vkblocks/utils/is-hex-color';
12 import { toPresetSpacingVar } from '@vkblocks/utils/to-preset-spacing-var';
13 const prefix = 'vk_slider_item';
14
15 export default function save(props) {
16 const { attributes } = props;
17 const {
18 verticalAlignment,
19 bgColor,
20 opacity,
21 style,
22 bgImageMobile,
23 bgImageTablet,
24 bgImage,
25 linkUrl,
26 linkTarget,
27 relAttribute,
28 linkDescription,
29 contentWidth,
30 blockId,
31 } = attributes;
32
33 const hasLink = !!linkUrl;
34 const effectiveUrl = linkUrl;
35
36 const spacingPaddingLeft = style?.spacing?.padding?.left;
37 const spacingPaddingRight = style?.spacing?.padding?.right;
38 const spacingPaddingLeftVar = toPresetSpacingVar(spacingPaddingLeft);
39 const spacingPaddingRightVar = toPresetSpacingVar(spacingPaddingRight);
40
41 // classPaddingLRのクラス切り替え
42 let classPaddingLR = '';
43
44 if (contentWidth) {
45 classPaddingLR += `is-layout-constrained`;
46 }
47 if (!spacingPaddingLeft && !spacingPaddingRight) {
48 classPaddingLR += ` ${prefix}-paddingLR-use`;
49 }
50
51 let containerClass = '';
52 if (contentWidth) {
53 containerClass = `${prefix}_container container`;
54 } else {
55 containerClass = `${prefix}_container`;
56 }
57
58 const opacityClass = opacity && opacity * 10;
59 const bgAreaClasses = classnames('vk_slider_item-background-area', {
60 [`has-background`]: bgColor !== undefined,
61 [`has-${sanitizeSlug(bgColor)}-background-color`]:
62 bgColor !== undefined && !isHexColor(bgColor),
63 [`has-background-dim`]: opacity !== undefined,
64 [`has-background-dim-${opacityClass}`]: opacityClass !== undefined,
65 });
66
67 const bgAreaStyles = {
68 backgroundColor: isHexColor(bgColor) ? bgColor : undefined,
69 paddingLeft: spacingPaddingLeftVar,
70 paddingRight: spacingPaddingRightVar,
71 };
72
73 const GetBgImage = (
74 <>
75 {(bgImage || bgImageTablet || bgImageMobile) && (
76 <GenerateBgImage prefix={prefix} blockId={blockId} {...props} />
77 )}
78 <div className={bgAreaClasses} style={bgAreaStyles}></div>
79 </>
80 );
81
82 const GetLinkUrl = (
83 <a
84 href={effectiveUrl}
85 {...(linkTarget ? { target: linkTarget } : {})}
86 {...(relAttribute ? { rel: relAttribute } : {})}
87 className={`${prefix}-link`}
88 >
89 <span className="screen-reader-text">
90 {linkDescription
91 ? linkDescription
92 : __('Slider item link', 'vk-blocks')}
93 </span>
94 </a>
95 );
96
97 const blockProps = useBlockProps.save({
98 className: `vk_slider_item swiper-slide vk_valign-${verticalAlignment} ${prefix}-${blockId} ${classPaddingLR} ${prefix}-paddingVertical-none`,
99 style: {
100 paddingLeft: spacingPaddingLeftVar,
101 paddingRight: spacingPaddingRightVar,
102 },
103 });
104 return (
105 <div {...blockProps}>
106 {hasLink && GetLinkUrl}
107 {GetBgImage}
108 <div className={containerClass}>
109 <InnerBlocks.Content />
110 </div>
111 </div>
112 );
113 }
114