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 / border-box / save.js
vk-blocks / src / blocks / border-box Last commit date
deprecated 2 months ago block.json 2 days ago edit.js 2 months 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
153 lines
1 /**
2 * External dependencies
3 */
4 import classnames from 'classnames';
5
6 /**
7 * WordPress dependencies
8 */
9 import { InnerBlocks, RichText, useBlockProps } from '@wordpress/block-editor';
10 import parse from 'html-react-parser';
11 import { isHexColor } from '@vkblocks/utils/is-hex-color';
12 import { sanitizeSlug } from '@vkblocks/utils/sanitizeSlug';
13 import { fixBrokenUnicode } from '@vkblocks/utils/fixBrokenUnicode';
14
15 export default function save(props) {
16 const { attributes } = props;
17 const {
18 heading,
19 headingTag,
20 anchor,
21 faIcon: rawFaIcon,
22 color,
23 bgColor,
24 borderColor,
25 bodyAlign,
26 } = attributes;
27 const faIcon = rawFaIcon ? fixBrokenUnicode(rawFaIcon) : rawFaIcon;
28
29 const inner = <InnerBlocks.Content />;
30 const title = (
31 <RichText.Content
32 tagName={headingTag}
33 className={'vk_borderBox_title'}
34 value={heading}
35 id={headingTag === 'p' ? undefined : anchor}
36 />
37 );
38
39 // カラーパレットに対応
40 const wrapperClasses = classnames('vk_borderBox', {
41 [`vk_borderBox-color-${sanitizeSlug(color)}`]: !!color,
42 [`vk_borderBox-background-${sanitizeSlug(bgColor)}`]: !!bgColor,
43 [`has-text-color`]: !!borderColor,
44 [`has-${sanitizeSlug(borderColor)}-color`]:
45 !!borderColor && !isHexColor(borderColor),
46 });
47 let wrapperStyle = {};
48 if (borderColor !== undefined && isHexColor(borderColor)) {
49 // custom color
50 wrapperStyle = {
51 color: `${borderColor}`,
52 };
53 }
54 const blockProps = useBlockProps.save({
55 className: wrapperClasses,
56 style: wrapperStyle,
57 });
58
59 //Defaultクラスを設定
60 if (-1 === blockProps.className.indexOf('is-style-')) {
61 blockProps.className +=
62 ' is-style-vk_borderBox-style-solid-kado-tit-tab';
63 }
64
65 //枠パターン
66 let isFill_title = false;
67 if (
68 -1 <
69 blockProps.className.indexOf(
70 'is-style-vk_borderBox-style-solid-kado-tit-tab'
71 ) ||
72 -1 <
73 blockProps.className.indexOf(
74 'is-style-vk_borderBox-style-solid-kado-tit-banner'
75 ) ||
76 -1 <
77 blockProps.className.indexOf(
78 'is-style-vk_borderBox-style-solid-round-tit-tab'
79 )
80 ) {
81 // タイトル背景塗り 白文字パターン
82 isFill_title = true;
83 }
84
85 // title背景
86 const titleClasses = classnames('vk_borderBox_title_container', {
87 [`has-background`]: isFill_title && !!borderColor,
88 [`has-${sanitizeSlug(borderColor)}-background-color`]:
89 isFill_title && !!borderColor && !isHexColor(borderColor),
90 });
91 let titleStyle = {};
92 if (isFill_title && borderColor !== undefined && isHexColor(borderColor)) {
93 // custom color
94 titleStyle = {
95 backgroundColor: `${borderColor}`,
96 };
97 }
98
99 // アイコン
100 let icon;
101 if (
102 -1 <
103 blockProps.className.indexOf(
104 'vk_borderBox-style-solid-kado-iconFeature'
105 ) &&
106 !color
107 ) {
108 // 直線 ピン角 アイコン
109 let iconStyle = ``;
110 const iconClasses = classnames('vk_borderBox_icon_border', {
111 [`has-background`]: !!borderColor,
112 [`has-${sanitizeSlug(borderColor)}-background-color`]:
113 !!borderColor && !isHexColor(borderColor),
114 });
115
116 if (borderColor !== undefined && isHexColor(borderColor)) {
117 // custom color
118 iconStyle = `background-color: ${borderColor};`;
119 }
120
121 // iタグ�
122
123 icon = `<div class="${classnames(
124 iconClasses
125 )}" style="${iconStyle}">${faIcon}</div>`;
126 } else if (
127 faIcon !== null &&
128 faIcon !== undefined &&
129 faIcon.indexOf('<i class="') === -1
130 ) {
131 //iタグでdeprecatedが効かなかったので追加。
132 // アイコンなし
133 icon = `<i class="${faIcon}"></i>`;
134 } else {
135 // アイコンあり
136 icon = faIcon;
137 }
138
139 const bodyClasses = classnames('vk_borderBox_body', {
140 [`vk_borderBox_body-align-${bodyAlign}`]: !!bodyAlign,
141 });
142
143 return (
144 <div {...blockProps}>
145 <div className={titleClasses} style={titleStyle}>
146 {parse(icon)}
147 {title}
148 </div>
149 <div className={bodyClasses}>{inner}</div>
150 </div>
151 );
152 }
153