@builder.io/sdk-svelte 0.12.3 → 0.12.4
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.
- package/lib/browser/blocks/button/button.svelte +27 -35
- package/lib/browser/blocks/button/button.svelte.d.ts +3 -2
- package/lib/browser/blocks/button/button.types.d.ts +2 -1
- package/lib/browser/blocks/columns/columns.svelte +25 -10
- package/lib/browser/blocks/columns/columns.svelte.d.ts +1 -0
- package/lib/browser/blocks/columns/columns.types.d.ts +3 -3
- package/lib/browser/blocks/symbol/symbol.svelte +4 -1
- package/lib/browser/blocks/symbol/symbol.svelte.d.ts +1 -0
- package/lib/browser/blocks/symbol/symbol.types.d.ts +2 -2
- package/lib/browser/components/block/block.svelte +26 -2
- package/lib/browser/components/block/components/block-wrapper.svelte.d.ts +1 -0
- package/lib/browser/components/block/components/component-ref/component-ref.helpers.d.ts +2 -2
- package/lib/browser/components/block/components/component-ref/component-ref.svelte +3 -1
- package/lib/browser/components/block/components/component-ref/component-ref.svelte.d.ts +1 -0
- package/lib/browser/components/block/components/repeated-block.svelte +2 -1
- package/lib/browser/components/block/components/repeated-block.svelte.d.ts +4 -5
- package/lib/browser/components/blocks/blocks.svelte +2 -0
- package/lib/browser/components/blocks/blocks.svelte.d.ts +1 -0
- package/lib/browser/components/blocks/blocks.types.d.ts +1 -0
- package/lib/browser/components/content/content.svelte +3 -0
- package/lib/browser/components/content/content.svelte.d.ts +1 -0
- package/lib/browser/components/content-variants/content-variants.svelte +3 -0
- package/lib/browser/components/content-variants/content-variants.svelte.d.ts +1 -0
- package/lib/browser/components/content-variants/content-variants.types.d.ts +6 -2
- package/lib/browser/constants/sdk-version.d.ts +1 -1
- package/lib/browser/constants/sdk-version.js +1 -1
- package/lib/browser/functions/get-block-properties.d.ts +1 -2
- package/lib/browser/functions/get-block-properties.js +7 -22
- package/lib/browser/functions/get-class-prop-name.d.ts +1 -0
- package/lib/browser/functions/get-class-prop-name.js +14 -0
- package/lib/browser/functions/get-style.d.ts +12 -0
- package/lib/browser/functions/get-style.js +28 -0
- package/lib/browser/functions/transform-block-properties.d.ts +2 -2
- package/lib/browser/functions/transform-style-property.d.ts +7 -0
- package/lib/browser/functions/transform-style-property.js +3 -0
- package/lib/browser/helpers/omit.d.ts +1 -0
- package/lib/browser/helpers/omit.js +7 -0
- package/lib/browser/types/builder-block.d.ts +1 -0
- package/lib/browser/types/builder-props.d.ts +3 -0
- package/lib/edge/blocks/button/button.svelte +27 -35
- package/lib/edge/blocks/button/button.svelte.d.ts +3 -2
- package/lib/edge/blocks/button/button.types.d.ts +2 -1
- package/lib/edge/blocks/columns/columns.svelte +25 -10
- package/lib/edge/blocks/columns/columns.svelte.d.ts +1 -0
- package/lib/edge/blocks/columns/columns.types.d.ts +3 -3
- package/lib/edge/blocks/symbol/symbol.svelte +4 -1
- package/lib/edge/blocks/symbol/symbol.svelte.d.ts +1 -0
- package/lib/edge/blocks/symbol/symbol.types.d.ts +2 -2
- package/lib/edge/components/block/block.svelte +26 -2
- package/lib/edge/components/block/components/block-wrapper.svelte.d.ts +1 -0
- package/lib/edge/components/block/components/component-ref/component-ref.helpers.d.ts +2 -2
- package/lib/edge/components/block/components/component-ref/component-ref.svelte +3 -1
- package/lib/edge/components/block/components/component-ref/component-ref.svelte.d.ts +1 -0
- package/lib/edge/components/block/components/repeated-block.svelte +2 -1
- package/lib/edge/components/block/components/repeated-block.svelte.d.ts +4 -5
- package/lib/edge/components/blocks/blocks.svelte +2 -0
- package/lib/edge/components/blocks/blocks.svelte.d.ts +1 -0
- package/lib/edge/components/blocks/blocks.types.d.ts +1 -0
- package/lib/edge/components/content/content.svelte +3 -0
- package/lib/edge/components/content/content.svelte.d.ts +1 -0
- package/lib/edge/components/content-variants/content-variants.svelte +3 -0
- package/lib/edge/components/content-variants/content-variants.svelte.d.ts +1 -0
- package/lib/edge/components/content-variants/content-variants.types.d.ts +6 -2
- package/lib/edge/constants/sdk-version.d.ts +1 -1
- package/lib/edge/constants/sdk-version.js +1 -1
- package/lib/edge/functions/get-block-properties.d.ts +1 -2
- package/lib/edge/functions/get-block-properties.js +7 -22
- package/lib/edge/functions/get-class-prop-name.d.ts +1 -0
- package/lib/edge/functions/get-class-prop-name.js +14 -0
- package/lib/edge/functions/get-style.d.ts +12 -0
- package/lib/edge/functions/get-style.js +28 -0
- package/lib/edge/functions/transform-block-properties.d.ts +2 -2
- package/lib/edge/functions/transform-style-property.d.ts +7 -0
- package/lib/edge/functions/transform-style-property.js +3 -0
- package/lib/edge/helpers/omit.d.ts +1 -0
- package/lib/edge/helpers/omit.js +7 -0
- package/lib/edge/types/builder-block.d.ts +1 -0
- package/lib/edge/types/builder-props.d.ts +3 -0
- package/lib/node/blocks/button/button.svelte +27 -35
- package/lib/node/blocks/button/button.svelte.d.ts +3 -2
- package/lib/node/blocks/button/button.types.d.ts +2 -1
- package/lib/node/blocks/columns/columns.svelte +25 -10
- package/lib/node/blocks/columns/columns.svelte.d.ts +1 -0
- package/lib/node/blocks/columns/columns.types.d.ts +3 -3
- package/lib/node/blocks/symbol/symbol.svelte +4 -1
- package/lib/node/blocks/symbol/symbol.svelte.d.ts +1 -0
- package/lib/node/blocks/symbol/symbol.types.d.ts +2 -2
- package/lib/node/components/block/block.svelte +26 -2
- package/lib/node/components/block/components/block-wrapper.svelte.d.ts +1 -0
- package/lib/node/components/block/components/component-ref/component-ref.helpers.d.ts +2 -2
- package/lib/node/components/block/components/component-ref/component-ref.svelte +3 -1
- package/lib/node/components/block/components/component-ref/component-ref.svelte.d.ts +1 -0
- package/lib/node/components/block/components/repeated-block.svelte +2 -1
- package/lib/node/components/block/components/repeated-block.svelte.d.ts +4 -5
- package/lib/node/components/blocks/blocks.svelte +2 -0
- package/lib/node/components/blocks/blocks.svelte.d.ts +1 -0
- package/lib/node/components/blocks/blocks.types.d.ts +1 -0
- package/lib/node/components/content/content.svelte +3 -0
- package/lib/node/components/content/content.svelte.d.ts +1 -0
- package/lib/node/components/content-variants/content-variants.svelte +3 -0
- package/lib/node/components/content-variants/content-variants.svelte.d.ts +1 -0
- package/lib/node/components/content-variants/content-variants.types.d.ts +6 -2
- package/lib/node/constants/sdk-version.d.ts +1 -1
- package/lib/node/constants/sdk-version.js +1 -1
- package/lib/node/functions/get-block-properties.d.ts +1 -2
- package/lib/node/functions/get-block-properties.js +7 -22
- package/lib/node/functions/get-class-prop-name.d.ts +1 -0
- package/lib/node/functions/get-class-prop-name.js +14 -0
- package/lib/node/functions/get-style.d.ts +12 -0
- package/lib/node/functions/get-style.js +28 -0
- package/lib/node/functions/transform-block-properties.d.ts +2 -2
- package/lib/node/functions/transform-style-property.d.ts +7 -0
- package/lib/node/functions/transform-style-property.js +3 -0
- package/lib/node/helpers/omit.d.ts +1 -0
- package/lib/node/helpers/omit.js +7 -0
- package/lib/node/types/builder-block.d.ts +1 -0
- package/lib/node/types/builder-props.d.ts +3 -0
- package/package.json +1 -1
- package/src/blocks/button/button.svelte +27 -34
- package/src/blocks/button/button.types.ts +2 -1
- package/src/blocks/columns/columns.svelte +26 -10
- package/src/blocks/columns/columns.types.ts +3 -3
- package/src/blocks/symbol/symbol.svelte +5 -1
- package/src/blocks/symbol/symbol.types.ts +2 -2
- package/src/components/block/block.svelte +28 -2
- package/src/components/block/components/block-wrapper.svelte +1 -0
- package/src/components/block/components/component-ref/component-ref.helpers.ts +1 -0
- package/src/components/block/components/component-ref/component-ref.svelte +3 -1
- package/src/components/block/components/repeated-block.svelte +5 -9
- package/src/components/blocks/blocks.svelte +2 -0
- package/src/components/blocks/blocks.types.ts +1 -0
- package/src/components/content/content.svelte +3 -0
- package/src/components/content-variants/content-variants.svelte +3 -0
- package/src/components/content-variants/content-variants.types.ts +6 -2
- package/src/constants/sdk-version.ts +1 -1
- package/src/functions/get-block-properties.ts +7 -22
- package/src/functions/get-class-prop-name.ts +14 -0
- package/src/functions/get-style.ts +37 -0
- package/src/functions/transform-block-properties.ts +2 -2
- package/src/functions/transform-style-property.ts +11 -0
- package/src/helpers/omit.ts +7 -0
- package/src/types/builder-block.ts +1 -0
- package/src/types/builder-props.ts +3 -0
|
@@ -8,6 +8,7 @@ export let parent;
|
|
|
8
8
|
export let path;
|
|
9
9
|
export let styleProp;
|
|
10
10
|
export let context = undefined;
|
|
11
|
+
export let linkComponent = undefined;
|
|
11
12
|
export let registeredComponents = undefined;
|
|
12
13
|
let builderContext = getContext(BuilderContext.key);
|
|
13
14
|
let componentsContext = getContext(ComponentsContext.key);
|
|
@@ -25,6 +26,7 @@ let componentsContext = getContext(ComponentsContext.key);
|
|
|
25
26
|
{#each blocks as block (block.id)}
|
|
26
27
|
<Block
|
|
27
28
|
{block}
|
|
29
|
+
{linkComponent}
|
|
28
30
|
context={context || builderContext}
|
|
29
31
|
registeredComponents={registeredComponents ||
|
|
30
32
|
componentsContext.registeredComponents}
|
|
@@ -5,4 +5,5 @@ import type { BlocksWrapperProps } from './blocks-wrapper.svelte';
|
|
|
5
5
|
export type BlocksProps = Partial<Omit<BlocksWrapperProps, 'BlocksWrapper' | 'BlocksWrapperProps'>> & {
|
|
6
6
|
context?: Writable<BuilderContextInterface>;
|
|
7
7
|
registeredComponents?: RegisteredComponents;
|
|
8
|
+
linkComponent?: any;
|
|
8
9
|
};
|
|
@@ -27,6 +27,7 @@ export let enrich = undefined;
|
|
|
27
27
|
export let showContent;
|
|
28
28
|
export let contentWrapper = undefined;
|
|
29
29
|
export let contentWrapperProps = undefined;
|
|
30
|
+
export let linkComponent = undefined;
|
|
30
31
|
export let trustedHosts = undefined;
|
|
31
32
|
export let isSsrAbTest;
|
|
32
33
|
function contentSetState(newRootState) {
|
|
@@ -105,6 +106,7 @@ setContext(ComponentsContext.key, {
|
|
|
105
106
|
{builderContextSignal}
|
|
106
107
|
{contentWrapper}
|
|
107
108
|
{contentWrapperProps}
|
|
109
|
+
{linkComponent}
|
|
108
110
|
{trustedHosts}
|
|
109
111
|
{...{}}
|
|
110
112
|
>
|
|
@@ -123,5 +125,6 @@ setContext(ComponentsContext.key, {
|
|
|
123
125
|
blocks={$builderContextSignal.content?.data?.blocks}
|
|
124
126
|
context={builderContextSignal}
|
|
125
127
|
{registeredComponents}
|
|
128
|
+
{linkComponent}
|
|
126
129
|
/>
|
|
127
130
|
</EnableEditor>
|
|
@@ -18,6 +18,7 @@ declare const __propDef: {
|
|
|
18
18
|
showContent: ContentProps["showContent"];
|
|
19
19
|
contentWrapper?: ContentProps["contentWrapper"];
|
|
20
20
|
contentWrapperProps?: ContentProps["contentWrapperProps"];
|
|
21
|
+
linkComponent?: ContentProps["linkComponent"];
|
|
21
22
|
trustedHosts?: ContentProps["trustedHosts"];
|
|
22
23
|
isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
23
24
|
};
|
|
@@ -17,6 +17,7 @@ export let context = undefined;
|
|
|
17
17
|
export let apiKey;
|
|
18
18
|
export let apiVersion = undefined;
|
|
19
19
|
export let customComponents = undefined;
|
|
20
|
+
export let linkComponent = undefined;
|
|
20
21
|
export let locale = undefined;
|
|
21
22
|
export let includeRefs = undefined;
|
|
22
23
|
export let enrich = undefined;
|
|
@@ -81,6 +82,7 @@ onMount(() => {
|
|
|
81
82
|
{apiKey}
|
|
82
83
|
{apiVersion}
|
|
83
84
|
{customComponents}
|
|
85
|
+
{linkComponent}
|
|
84
86
|
{canTrack}
|
|
85
87
|
{locale}
|
|
86
88
|
{includeRefs}
|
|
@@ -105,6 +107,7 @@ onMount(() => {
|
|
|
105
107
|
{apiKey}
|
|
106
108
|
{apiVersion}
|
|
107
109
|
{customComponents}
|
|
110
|
+
{linkComponent}
|
|
108
111
|
{canTrack}
|
|
109
112
|
{locale}
|
|
110
113
|
{includeRefs}
|
|
@@ -17,6 +17,7 @@ declare const __propDef: {
|
|
|
17
17
|
apiKey: VariantsProviderProps["apiKey"];
|
|
18
18
|
apiVersion?: VariantsProviderProps["apiVersion"];
|
|
19
19
|
customComponents?: VariantsProviderProps["customComponents"];
|
|
20
|
+
linkComponent?: VariantsProviderProps["linkComponent"];
|
|
20
21
|
locale?: VariantsProviderProps["locale"];
|
|
21
22
|
includeRefs?: VariantsProviderProps["includeRefs"];
|
|
22
23
|
enrich?: VariantsProviderProps["enrich"];
|
|
@@ -30,6 +30,10 @@ export interface ContentVariantsPrps {
|
|
|
30
30
|
* An array of custom components to register (optional).
|
|
31
31
|
*/
|
|
32
32
|
customComponents?: RegisteredComponent[];
|
|
33
|
+
/**
|
|
34
|
+
* The component to use for rendering links. Defaults to anchor element `<a>`.
|
|
35
|
+
*/
|
|
36
|
+
linkComponent?: any;
|
|
33
37
|
/**
|
|
34
38
|
* A boolean to enable or disable tracking (optional). Defaults to `true`.
|
|
35
39
|
*/
|
|
@@ -47,7 +51,7 @@ export interface ContentVariantsPrps {
|
|
|
47
51
|
*/
|
|
48
52
|
enrich?: boolean;
|
|
49
53
|
/**
|
|
50
|
-
* The element that wraps your content. Defaults to
|
|
54
|
+
* The element that wraps your content. Defaults to `<div>` ('ScrollView' in React Native).
|
|
51
55
|
*/
|
|
52
56
|
contentWrapper?: any;
|
|
53
57
|
/**
|
|
@@ -55,7 +59,7 @@ export interface ContentVariantsPrps {
|
|
|
55
59
|
*/
|
|
56
60
|
contentWrapperProps?: any;
|
|
57
61
|
/**
|
|
58
|
-
* The element that wraps your blocks. Defaults to
|
|
62
|
+
* The element that wraps your blocks. Defaults to `<div>` ('ScrollView' in React Native).
|
|
59
63
|
*/
|
|
60
64
|
blocksWrapper?: any;
|
|
61
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.12.
|
|
1
|
+
export declare const SDK_VERSION = "0.12.4";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.12.
|
|
1
|
+
export const SDK_VERSION = "0.12.4";
|
|
@@ -5,7 +5,6 @@ export declare function getBlockProperties({ block, context }: {
|
|
|
5
5
|
context: BuilderContextInterface;
|
|
6
6
|
}): {
|
|
7
7
|
'builder-id': string | undefined;
|
|
8
|
-
style: string | Partial<CSSStyleDeclaration
|
|
9
|
-
class: string;
|
|
8
|
+
style: string | Partial<CSSStyleDeclaration>;
|
|
10
9
|
href: any;
|
|
11
10
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getClassPropName } from './get-class-prop-name.js';
|
|
2
|
+
import { getStyle } from './get-style.js';
|
|
3
3
|
import { transformBlockProperties } from './transform-block-properties.js';
|
|
4
4
|
const extractRelevantRootBlockProperties = (block) => {
|
|
5
5
|
// currently we are only spreading the `href` property
|
|
@@ -38,8 +38,11 @@ export function getBlockProperties({ block, context }) {
|
|
|
38
38
|
...extractRelevantRootBlockProperties(block),
|
|
39
39
|
...block.properties,
|
|
40
40
|
'builder-id': block.id,
|
|
41
|
-
style:
|
|
42
|
-
|
|
41
|
+
style: getStyle({
|
|
42
|
+
block,
|
|
43
|
+
context
|
|
44
|
+
}),
|
|
45
|
+
[getClassPropName()]: [block.id, 'builder-block', block.class, block.properties?.class].filter(Boolean).join(' ')
|
|
43
46
|
};
|
|
44
47
|
return transformBlockProperties({
|
|
45
48
|
properties,
|
|
@@ -47,21 +50,3 @@ export function getBlockProperties({ block, context }) {
|
|
|
47
50
|
block
|
|
48
51
|
});
|
|
49
52
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Svelte does not support style attribute as an object so we need to flatten it.
|
|
52
|
-
*
|
|
53
|
-
* Additionally, Svelte, Vue and other frameworks use kebab-case styles, so we need to convert them.
|
|
54
|
-
*/
|
|
55
|
-
function getStyleAttribute(style) {
|
|
56
|
-
switch (TARGET) {
|
|
57
|
-
case 'svelte':
|
|
58
|
-
case 'vue':
|
|
59
|
-
case 'solid':
|
|
60
|
-
return convertStyleMapToCSSArray(style).join(' ');
|
|
61
|
-
case 'qwik':
|
|
62
|
-
case 'reactNative':
|
|
63
|
-
case 'react':
|
|
64
|
-
case 'rsc':
|
|
65
|
-
return style;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getClassPropName: () => "className" | "class";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TARGET } from '../constants/target.js';
|
|
2
|
+
export const getClassPropName = () => {
|
|
3
|
+
switch (TARGET) {
|
|
4
|
+
case 'react':
|
|
5
|
+
case 'reactNative':
|
|
6
|
+
case 'rsc':
|
|
7
|
+
return 'className';
|
|
8
|
+
case 'svelte':
|
|
9
|
+
case 'vue':
|
|
10
|
+
case 'solid':
|
|
11
|
+
case 'qwik':
|
|
12
|
+
return 'class';
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BuilderContextInterface } from '../context/types.js';
|
|
2
|
+
import type { BuilderBlock } from '../types/builder-block.js';
|
|
3
|
+
export declare const getStyle: ({ block, context }: {
|
|
4
|
+
block: BuilderBlock;
|
|
5
|
+
context: BuilderContextInterface;
|
|
6
|
+
}) => string | Partial<CSSStyleDeclaration>;
|
|
7
|
+
/**
|
|
8
|
+
* Svelte does not support style attribute as an object so we need to flatten it.
|
|
9
|
+
*
|
|
10
|
+
* Additionally, Svelte, Vue and other frameworks use kebab-case styles, so we need to convert them.
|
|
11
|
+
*/
|
|
12
|
+
export declare function mapStyleObjToStrIfNeeded(style: Partial<CSSStyleDeclaration>): string | Partial<CSSStyleDeclaration>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TARGET } from '../constants/target.js';
|
|
2
|
+
import { convertStyleMapToCSSArray } from '../helpers/css.js';
|
|
3
|
+
import { transformStyleProperty } from './transform-style-property.js';
|
|
4
|
+
export const getStyle = ({ block, context }) => {
|
|
5
|
+
return mapStyleObjToStrIfNeeded(transformStyleProperty({
|
|
6
|
+
style: block.style || {},
|
|
7
|
+
context,
|
|
8
|
+
block
|
|
9
|
+
}));
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Svelte does not support style attribute as an object so we need to flatten it.
|
|
13
|
+
*
|
|
14
|
+
* Additionally, Svelte, Vue and other frameworks use kebab-case styles, so we need to convert them.
|
|
15
|
+
*/
|
|
16
|
+
export function mapStyleObjToStrIfNeeded(style) {
|
|
17
|
+
switch (TARGET) {
|
|
18
|
+
case 'svelte':
|
|
19
|
+
case 'vue':
|
|
20
|
+
case 'solid':
|
|
21
|
+
return convertStyleMapToCSSArray(style).join(' ');
|
|
22
|
+
case 'qwik':
|
|
23
|
+
case 'reactNative':
|
|
24
|
+
case 'react':
|
|
25
|
+
case 'rsc':
|
|
26
|
+
return style;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { BuilderContextInterface } from '../context/types';
|
|
2
|
-
import type { BuilderBlock } from '../types/builder-block';
|
|
1
|
+
import type { BuilderContextInterface } from '../context/types.js';
|
|
2
|
+
import type { BuilderBlock } from '../types/builder-block.js';
|
|
3
3
|
export declare function transformBlockProperties<T>({ properties }: {
|
|
4
4
|
properties: T;
|
|
5
5
|
context: BuilderContextInterface;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BuilderContextInterface } from '../context/types.js';
|
|
2
|
+
import type { BuilderBlock } from '../types/builder-block.js';
|
|
3
|
+
export declare function transformStyleProperty({ style }: {
|
|
4
|
+
style: Partial<CSSStyleDeclaration>;
|
|
5
|
+
context: BuilderContextInterface;
|
|
6
|
+
block: BuilderBlock;
|
|
7
|
+
}): Partial<CSSStyleDeclaration>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function omit<T extends object>(obj: T, ...values: (keyof T)[]): Partial<T>;
|
package/package.json
CHANGED
|
@@ -1,42 +1,35 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import DynamicRenderer from "../../components/dynamic-renderer/dynamic-renderer.svelte";
|
|
3
|
+
import { getClassPropName } from "../../functions/get-class-prop-name.js";
|
|
2
4
|
import { filterAttrs } from "../helpers.js";
|
|
3
|
-
import { setAttrs } from "../helpers.js";
|
|
4
5
|
import type { ButtonProps } from "./button.types.js";
|
|
5
6
|
|
|
6
|
-
export let attributes: ButtonProps["attributes"] = undefined;
|
|
7
|
-
export let text: ButtonProps["text"] = undefined;
|
|
8
7
|
export let link: ButtonProps["link"] = undefined;
|
|
8
|
+
export let builderLinkComponent: ButtonProps["builderLinkComponent"] =
|
|
9
|
+
undefined;
|
|
10
|
+
export let attributes: ButtonProps["attributes"] = undefined;
|
|
9
11
|
export let openLinkInNewTab: ButtonProps["openLinkInNewTab"] = undefined;
|
|
10
|
-
|
|
11
|
-
function mitosis_styling(node, vars) {
|
|
12
|
-
Object.entries(vars || {}).forEach(([p, v]) => {
|
|
13
|
-
if (p.startsWith("--")) {
|
|
14
|
-
node.style.setProperty(p, v);
|
|
15
|
-
} else {
|
|
16
|
-
node.style[p] = v;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
}
|
|
12
|
+
export let text: ButtonProps["text"] = undefined;
|
|
20
13
|
</script>
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
15
|
+
<DynamicRenderer
|
|
16
|
+
TagName={link ? builderLinkComponent || "a" : "button"}
|
|
17
|
+
attributes={{
|
|
18
|
+
...filterAttrs(attributes, "on:", false),
|
|
19
|
+
[getClassPropName()]: `${link ? "" : "builder-button"} ${
|
|
20
|
+
attributes[getClassPropName()] || ""
|
|
21
|
+
}`,
|
|
22
|
+
...(link
|
|
23
|
+
? {
|
|
24
|
+
href: link,
|
|
25
|
+
target: openLinkInNewTab ? "_blank" : undefined,
|
|
26
|
+
role: "link",
|
|
27
|
+
}
|
|
28
|
+
: {
|
|
29
|
+
role: "button",
|
|
30
|
+
}),
|
|
31
|
+
}}
|
|
32
|
+
actionAttributes={filterAttrs(attributes, "on:", true)}
|
|
33
|
+
>
|
|
34
|
+
{text}
|
|
35
|
+
</DynamicRenderer>
|
|
@@ -4,11 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
<script lang="ts">
|
|
6
6
|
import Blocks from "../../components/blocks/blocks.svelte";
|
|
7
|
+
import DynamicRenderer from "../../components/dynamic-renderer/dynamic-renderer.svelte";
|
|
7
8
|
import InlinedStyles from "../../components/inlined-styles.svelte";
|
|
8
9
|
import type { SizeName } from "../../constants/device-sizes.js";
|
|
9
10
|
import { getSizesForBreakpoints } from "../../constants/device-sizes.js";
|
|
10
11
|
import { TARGET } from "../../constants/target.js";
|
|
11
12
|
import { deoptSignal } from "../../functions/deopt.js";
|
|
13
|
+
import { getClassPropName } from "../../functions/get-class-prop-name.js";
|
|
14
|
+
import { mapStyleObjToStrIfNeeded } from "../../functions/get-style.js";
|
|
12
15
|
import type { PropsWithBuilderData } from "../../types/builder-props.js";
|
|
13
16
|
import type { Dictionary } from "../../types/typescript.js";
|
|
14
17
|
import type { ColumnProps } from "./columns.types.js";
|
|
@@ -22,6 +25,8 @@
|
|
|
22
25
|
undefined;
|
|
23
26
|
export let builderContext: PropsWithBuilderData<ColumnProps>["builderContext"];
|
|
24
27
|
export let builderBlock: PropsWithBuilderData<ColumnProps>["builderBlock"];
|
|
28
|
+
export let builderLinkComponent: PropsWithBuilderData<ColumnProps>["builderLinkComponent"] =
|
|
29
|
+
undefined;
|
|
25
30
|
export let builderComponents: PropsWithBuilderData<ColumnProps>["builderComponents"];
|
|
26
31
|
|
|
27
32
|
function mitosis_styling(node, vars) {
|
|
@@ -66,7 +71,13 @@
|
|
|
66
71
|
const mobileWidth = "100%";
|
|
67
72
|
const mobileMarginLeft = 0;
|
|
68
73
|
const marginLeftKey = "margin-left";
|
|
74
|
+
const sharedStyles = {
|
|
75
|
+
display: "flex",
|
|
76
|
+
flexDirection: "column",
|
|
77
|
+
alignItems: "stretch",
|
|
78
|
+
};
|
|
69
79
|
return {
|
|
80
|
+
...sharedStyles,
|
|
70
81
|
width,
|
|
71
82
|
[marginLeftKey]: gutterPixels,
|
|
72
83
|
"--column-width-mobile": getMobileStyle({
|
|
@@ -151,10 +162,19 @@
|
|
|
151
162
|
{/if}
|
|
152
163
|
|
|
153
164
|
{#each columns as column, index (index)}
|
|
154
|
-
<
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
{
|
|
165
|
+
<DynamicRenderer
|
|
166
|
+
TagName={column.link ? builderLinkComponent || "a" : "div"}
|
|
167
|
+
actionAttributes={{}}
|
|
168
|
+
attributes={{
|
|
169
|
+
...{},
|
|
170
|
+
...(column.link
|
|
171
|
+
? {
|
|
172
|
+
href: column.link,
|
|
173
|
+
}
|
|
174
|
+
: {}),
|
|
175
|
+
[getClassPropName()]: "builder-column",
|
|
176
|
+
style: mapStyleObjToStrIfNeeded(columnCssVars(index)),
|
|
177
|
+
}}
|
|
158
178
|
>
|
|
159
179
|
<Blocks
|
|
160
180
|
path={`component.options.columns.${index}.blocks`}
|
|
@@ -164,9 +184,10 @@
|
|
|
164
184
|
}}
|
|
165
185
|
context={builderContext}
|
|
166
186
|
registeredComponents={builderComponents}
|
|
187
|
+
linkComponent={builderLinkComponent}
|
|
167
188
|
blocks={column.blocks}
|
|
168
189
|
/>
|
|
169
|
-
</
|
|
190
|
+
</DynamicRenderer>
|
|
170
191
|
{/each}
|
|
171
192
|
</div>
|
|
172
193
|
|
|
@@ -175,9 +196,4 @@
|
|
|
175
196
|
display: flex;
|
|
176
197
|
line-height: normal;
|
|
177
198
|
}
|
|
178
|
-
.div-2 {
|
|
179
|
-
display: flex;
|
|
180
|
-
flex-direction: column;
|
|
181
|
-
align-items: stretch;
|
|
182
|
-
}
|
|
183
199
|
</style>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { BuilderBlock } from '../../types/builder-block.js';
|
|
2
|
-
import type { BuilderComponentsProp } from '../../types/builder-props.js';
|
|
2
|
+
import type { BuilderComponentsProp, BuilderLinkComponentProp } from '../../types/builder-props.js';
|
|
3
3
|
type Column = {
|
|
4
4
|
blocks: BuilderBlock[];
|
|
5
5
|
width?: number;
|
|
6
|
+
link?: string;
|
|
6
7
|
};
|
|
7
8
|
type StackColumnsAt = 'tablet' | 'mobile' | 'never';
|
|
8
|
-
export interface ColumnProps extends BuilderComponentsProp {
|
|
9
|
+
export interface ColumnProps extends BuilderComponentsProp, BuilderLinkComponentProp {
|
|
9
10
|
columns?: Column[];
|
|
10
|
-
builderBlock: BuilderBlock;
|
|
11
11
|
space?: number;
|
|
12
12
|
stackColumnsAt?: StackColumnsAt;
|
|
13
13
|
reverseColumnsWhenStacked?: boolean;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { BuilderContent } from "../../types/builder-content.js";
|
|
6
6
|
import type { PropsWithBuilderData } from "../../types/builder-props.js";
|
|
7
7
|
import { filterAttrs } from "../helpers.js";
|
|
8
|
+
import { getClassPropName } from "../../functions/get-class-prop-name.js";
|
|
8
9
|
import type { Nullable } from "../../types/typescript.js";
|
|
9
10
|
import { setAttrs } from "../helpers.js";
|
|
10
11
|
import { fetchSymbolContent } from "./symbol.helpers.js";
|
|
@@ -18,6 +19,8 @@
|
|
|
18
19
|
export let builderContext: PropsWithBuilderData<SymbolProps>["builderContext"];
|
|
19
20
|
export let builderBlock: PropsWithBuilderData<SymbolProps>["builderBlock"];
|
|
20
21
|
export let builderComponents: PropsWithBuilderData<SymbolProps>["builderComponents"];
|
|
22
|
+
export let builderLinkComponent: PropsWithBuilderData<SymbolProps>["builderLinkComponent"] =
|
|
23
|
+
undefined;
|
|
21
24
|
|
|
22
25
|
function setContent() {
|
|
23
26
|
if (contentToUse) return;
|
|
@@ -32,7 +35,7 @@
|
|
|
32
35
|
}
|
|
33
36
|
$: className = () => {
|
|
34
37
|
return [
|
|
35
|
-
...[attributes
|
|
38
|
+
...[attributes[getClassPropName()]],
|
|
36
39
|
"builder-symbol",
|
|
37
40
|
symbol?.inline ? "builder-inline-symbol" : undefined,
|
|
38
41
|
symbol?.dynamic || dynamic ? "builder-dynamic-symbol" : undefined,
|
|
@@ -75,5 +78,6 @@
|
|
|
75
78
|
}}
|
|
76
79
|
model={symbol?.model}
|
|
77
80
|
content={contentToUse}
|
|
81
|
+
linkComponent={builderLinkComponent}
|
|
78
82
|
/>
|
|
79
83
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BuilderContent } from '../../types/builder-content.js';
|
|
2
|
-
import type { BuilderComponentsProp } from '../../types/builder-props.js';
|
|
2
|
+
import type { BuilderComponentsProp, BuilderLinkComponentProp } from '../../types/builder-props.js';
|
|
3
3
|
interface SymbolInfo {
|
|
4
4
|
model?: string;
|
|
5
5
|
entry?: string;
|
|
@@ -8,7 +8,7 @@ interface SymbolInfo {
|
|
|
8
8
|
inline?: boolean;
|
|
9
9
|
dynamic?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export interface SymbolProps extends BuilderComponentsProp {
|
|
11
|
+
export interface SymbolProps extends BuilderComponentsProp, BuilderLinkComponentProp {
|
|
12
12
|
symbol?: SymbolInfo;
|
|
13
13
|
dataOnly?: boolean;
|
|
14
14
|
dynamic?: boolean;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
block: BuilderBlock;
|
|
4
4
|
context: Writable<BuilderContextInterface>;
|
|
5
5
|
registeredComponents: RegisteredComponents;
|
|
6
|
+
linkComponent: any;
|
|
6
7
|
};
|
|
7
8
|
</script>
|
|
8
9
|
|
|
@@ -15,8 +16,8 @@
|
|
|
15
16
|
} from "../../context/types.js";
|
|
16
17
|
import { extractTextStyles } from "../../functions/extract-text-styles.js";
|
|
17
18
|
import { getBlockComponentOptions } from "../../functions/get-block-component-options.js";
|
|
18
|
-
import { getBlockProperties } from "../../functions/get-block-properties.js";
|
|
19
19
|
import { getProcessedBlock } from "../../functions/get-processed-block.js";
|
|
20
|
+
import { getStyle } from "../../functions/get-style.js";
|
|
20
21
|
import type { BuilderBlock } from "../../types/builder-block.js";
|
|
21
22
|
import { getComponent, getRepeatItemData } from "./block.helpers.js";
|
|
22
23
|
import BlockStyles from "./components/block-styles.svelte";
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
export let block: BlockProps["block"];
|
|
30
31
|
export let context: BlockProps["context"];
|
|
31
32
|
export let registeredComponents: BlockProps["registeredComponents"];
|
|
33
|
+
export let linkComponent: BlockProps["linkComponent"];
|
|
32
34
|
|
|
33
35
|
$: blockComponent = () => {
|
|
34
36
|
return getComponent({
|
|
@@ -56,6 +58,13 @@
|
|
|
56
58
|
});
|
|
57
59
|
};
|
|
58
60
|
$: Tag = () => {
|
|
61
|
+
const shouldUseLink =
|
|
62
|
+
block.tagName === "a" ||
|
|
63
|
+
processedBlock().properties?.href ||
|
|
64
|
+
processedBlock().href;
|
|
65
|
+
if (shouldUseLink) {
|
|
66
|
+
return linkComponent || "a";
|
|
67
|
+
}
|
|
59
68
|
return block.tagName || "div";
|
|
60
69
|
};
|
|
61
70
|
$: canShowBlock = () => {
|
|
@@ -89,6 +98,13 @@
|
|
|
89
98
|
componentOptions: {
|
|
90
99
|
...getBlockComponentOptions(processedBlock()),
|
|
91
100
|
builderContext: context,
|
|
101
|
+
...(blockComponent?.()?.name === "Core:Button" ||
|
|
102
|
+
blockComponent?.()?.name === "Symbol" ||
|
|
103
|
+
blockComponent?.()?.name === "Columns"
|
|
104
|
+
? {
|
|
105
|
+
builderLinkComponent: linkComponent,
|
|
106
|
+
}
|
|
107
|
+
: {}),
|
|
92
108
|
...(blockComponent?.()?.name === "Symbol" ||
|
|
93
109
|
blockComponent?.()?.name === "Columns"
|
|
94
110
|
? {
|
|
@@ -97,6 +113,7 @@
|
|
|
97
113
|
: {}),
|
|
98
114
|
},
|
|
99
115
|
context: childrenContext,
|
|
116
|
+
linkComponent: linkComponent,
|
|
100
117
|
registeredComponents: registeredComponents,
|
|
101
118
|
builderBlock: processedBlock(),
|
|
102
119
|
includeBlockProps: blockComponent?.()?.noWrap === true,
|
|
@@ -112,13 +129,19 @@
|
|
|
112
129
|
|
|
113
130
|
{#if !blockComponent?.()?.noWrap}
|
|
114
131
|
{#if !repeatItem()}
|
|
115
|
-
<BlockWrapper
|
|
132
|
+
<BlockWrapper
|
|
133
|
+
Wrapper={Tag()}
|
|
134
|
+
block={processedBlock()}
|
|
135
|
+
{context}
|
|
136
|
+
{linkComponent}
|
|
137
|
+
>
|
|
116
138
|
<ComponentRef
|
|
117
139
|
componentRef={componentRefProps().componentRef}
|
|
118
140
|
componentOptions={componentRefProps().componentOptions}
|
|
119
141
|
blockChildren={componentRefProps().blockChildren}
|
|
120
142
|
context={componentRefProps().context}
|
|
121
143
|
registeredComponents={componentRefProps().registeredComponents}
|
|
144
|
+
linkComponent={componentRefProps().linkComponent}
|
|
122
145
|
builderBlock={componentRefProps().builderBlock}
|
|
123
146
|
includeBlockProps={componentRefProps().includeBlockProps}
|
|
124
147
|
isInteractive={componentRefProps().isInteractive}
|
|
@@ -129,6 +152,7 @@
|
|
|
129
152
|
block={child}
|
|
130
153
|
context={childrenContext}
|
|
131
154
|
{registeredComponents}
|
|
155
|
+
{linkComponent}
|
|
132
156
|
/>
|
|
133
157
|
{/each}
|
|
134
158
|
</BlockWrapper>
|
|
@@ -138,6 +162,7 @@
|
|
|
138
162
|
repeatContext={data.context}
|
|
139
163
|
block={data.block}
|
|
140
164
|
{registeredComponents}
|
|
165
|
+
{linkComponent}
|
|
141
166
|
/>
|
|
142
167
|
{/each}
|
|
143
168
|
{/if}
|
|
@@ -148,6 +173,7 @@
|
|
|
148
173
|
blockChildren={componentRefProps().blockChildren}
|
|
149
174
|
context={componentRefProps().context}
|
|
150
175
|
registeredComponents={componentRefProps().registeredComponents}
|
|
176
|
+
linkComponent={componentRefProps().linkComponent}
|
|
151
177
|
builderBlock={componentRefProps().builderBlock}
|
|
152
178
|
includeBlockProps={componentRefProps().includeBlockProps}
|
|
153
179
|
isInteractive={componentRefProps().isInteractive}
|