@webikon/webentor-core 0.9.14 → 0.10.0

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 (126) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +41 -0
  3. package/core-js/_alpine.ts +6 -0
  4. package/core-js/_slider.ts +22 -11
  5. package/core-js/blocks-components/button.tsx +17 -2
  6. package/core-js/blocks-components/custom-image-sizes-panel.tsx +3 -1
  7. package/core-js/blocks-components/typography-picker-select.tsx +16 -1
  8. package/core-js/blocks-filters/_filter-core-typography.tsx +11 -1
  9. package/core-js/blocks-filters/_slider-settings.tsx +1 -1
  10. package/core-js/blocks-filters/_wrap-with-container.tsx +104 -0
  11. package/core-js/blocks-filters/responsive-settings/AGENTS.md +255 -0
  12. package/core-js/blocks-filters/responsive-settings/components/AppliedClassesViewer.tsx +189 -0
  13. package/core-js/blocks-filters/responsive-settings/components/BoxModelControl.tsx +346 -0
  14. package/core-js/blocks-filters/responsive-settings/components/BreakpointResetButton.tsx +94 -0
  15. package/core-js/blocks-filters/responsive-settings/components/DebugPanel.tsx +67 -0
  16. package/core-js/blocks-filters/responsive-settings/components/InheritedIndicator.tsx +32 -0
  17. package/core-js/blocks-filters/responsive-settings/components/LinkedValuesControl.tsx +55 -0
  18. package/core-js/blocks-filters/responsive-settings/components/ResponsiveSelectGroup.tsx +185 -0
  19. package/core-js/blocks-filters/responsive-settings/components/ResponsiveTabPanel.tsx +106 -0
  20. package/core-js/blocks-filters/responsive-settings/index.tsx +97 -148
  21. package/core-js/blocks-filters/responsive-settings/migration.ts +86 -0
  22. package/core-js/blocks-filters/responsive-settings/panels/BlockLinkPanel.tsx +38 -0
  23. package/core-js/blocks-filters/responsive-settings/panels/BorderPanel.tsx +61 -0
  24. package/core-js/blocks-filters/responsive-settings/panels/DisplayLayoutPanel.tsx +92 -0
  25. package/core-js/blocks-filters/responsive-settings/panels/SpacingPanel.tsx +63 -0
  26. package/core-js/blocks-filters/responsive-settings/panels/index.ts +4 -0
  27. package/core-js/blocks-filters/responsive-settings/registry.ts +88 -0
  28. package/core-js/blocks-filters/responsive-settings/settings/block-link/index.ts +3 -0
  29. package/core-js/blocks-filters/responsive-settings/settings/block-link/panel.tsx +6 -6
  30. package/core-js/blocks-filters/responsive-settings/settings/block-link/registration.ts +35 -0
  31. package/core-js/blocks-filters/responsive-settings/settings/border/border/properties.ts +1 -2
  32. package/core-js/blocks-filters/responsive-settings/settings/border/border/settings.tsx +21 -3
  33. package/core-js/blocks-filters/responsive-settings/settings/border/border-radius/index.tsx +2 -1
  34. package/core-js/blocks-filters/responsive-settings/settings/border/border-radius/properties.ts +6 -29
  35. package/core-js/blocks-filters/responsive-settings/settings/border/border-radius/settings.tsx +79 -6
  36. package/core-js/blocks-filters/responsive-settings/settings/border/index.ts +5 -1
  37. package/core-js/blocks-filters/responsive-settings/settings/border/panel.tsx +5 -54
  38. package/core-js/blocks-filters/responsive-settings/settings/border/registration.ts +84 -0
  39. package/core-js/blocks-filters/responsive-settings/settings/border/settings.tsx +21 -0
  40. package/core-js/blocks-filters/responsive-settings/settings/flex-item/index.ts +4 -0
  41. package/core-js/blocks-filters/responsive-settings/settings/flex-item/properties.ts +60 -0
  42. package/core-js/blocks-filters/responsive-settings/settings/flex-item/registration.ts +78 -0
  43. package/core-js/blocks-filters/responsive-settings/settings/flex-item/settings.tsx +90 -0
  44. package/core-js/blocks-filters/responsive-settings/settings/flexbox/index.ts +4 -0
  45. package/core-js/blocks-filters/responsive-settings/settings/flexbox/properties.ts +80 -0
  46. package/core-js/blocks-filters/responsive-settings/settings/flexbox/registration.ts +66 -0
  47. package/core-js/blocks-filters/responsive-settings/settings/flexbox/settings.tsx +78 -0
  48. package/core-js/blocks-filters/responsive-settings/settings/grid/index.ts +4 -0
  49. package/core-js/blocks-filters/responsive-settings/settings/grid/properties.ts +72 -0
  50. package/core-js/blocks-filters/responsive-settings/settings/grid/registration.ts +66 -0
  51. package/core-js/blocks-filters/responsive-settings/settings/grid/settings.tsx +78 -0
  52. package/core-js/blocks-filters/responsive-settings/settings/grid-item/index.ts +4 -0
  53. package/core-js/blocks-filters/responsive-settings/settings/grid-item/properties.ts +44 -0
  54. package/core-js/blocks-filters/responsive-settings/settings/grid-item/registration.ts +74 -0
  55. package/core-js/blocks-filters/responsive-settings/settings/grid-item/settings.tsx +87 -0
  56. package/core-js/blocks-filters/responsive-settings/settings/layout/index.ts +4 -0
  57. package/core-js/blocks-filters/responsive-settings/settings/layout/properties.ts +51 -0
  58. package/core-js/blocks-filters/responsive-settings/settings/layout/registration.ts +96 -0
  59. package/core-js/blocks-filters/responsive-settings/settings/layout/settings.tsx +64 -0
  60. package/core-js/blocks-filters/responsive-settings/settings/presets/index.ts +4 -0
  61. package/core-js/blocks-filters/responsive-settings/settings/presets/presets.ts +52 -0
  62. package/core-js/blocks-filters/responsive-settings/settings/presets/registration.ts +53 -0
  63. package/core-js/blocks-filters/responsive-settings/settings/presets/settings.tsx +100 -0
  64. package/core-js/blocks-filters/responsive-settings/settings/shared/gap-values.ts +16 -0
  65. package/core-js/blocks-filters/responsive-settings/settings/shared/layout-values.ts +56 -0
  66. package/core-js/blocks-filters/responsive-settings/settings/shared/tw-values.ts +107 -0
  67. package/core-js/blocks-filters/responsive-settings/settings/sizing/index.ts +4 -0
  68. package/core-js/blocks-filters/responsive-settings/settings/sizing/properties.ts +71 -0
  69. package/core-js/blocks-filters/responsive-settings/settings/sizing/registration.ts +52 -0
  70. package/core-js/blocks-filters/responsive-settings/settings/sizing/settings.tsx +96 -0
  71. package/core-js/blocks-filters/responsive-settings/settings/spacing/index.ts +7 -2
  72. package/core-js/blocks-filters/responsive-settings/settings/spacing/panel.tsx +5 -45
  73. package/core-js/blocks-filters/responsive-settings/settings/spacing/properties.ts +51 -29
  74. package/core-js/blocks-filters/responsive-settings/settings/spacing/registration.ts +53 -0
  75. package/core-js/blocks-filters/responsive-settings/settings/spacing/settings.tsx +26 -55
  76. package/core-js/blocks-filters/responsive-settings/types/index.ts +174 -28
  77. package/core-js/blocks-filters/responsive-settings/utils.ts +247 -216
  78. package/core-js/config/index.ts +6 -0
  79. package/core-js/config/webentor-config.ts +44 -2
  80. package/core-js/index.ts +8 -10
  81. package/core-js/types/index.ts +6 -0
  82. package/package.json +116 -6
  83. package/public/build/assets/_utils-CzK6Vfiv.js +2 -0
  84. package/public/build/assets/{_utils-PDaZ1Dn1.js.map → _utils-CzK6Vfiv.js.map} +1 -1
  85. package/public/build/assets/coreAppStyles-Bvp3emQy.css +1 -0
  86. package/public/build/assets/coreEditorJs-DYd3ZopL.js +366 -0
  87. package/public/build/assets/coreEditorJs-DYd3ZopL.js.map +1 -0
  88. package/public/build/assets/coreEditorStyles-BzlB6eA_.css +1 -0
  89. package/public/build/assets/resources/blocks/e-table/{script-BIchbcPK.js → script-C_Z50hjm.js} +2 -2
  90. package/public/build/assets/resources/blocks/e-table/{script-BIchbcPK.js.map → script-C_Z50hjm.js.map} +1 -1
  91. package/public/build/assets/{sliderJs-Ch69_tVA.js → sliderJs-CyGnrv0Q.js} +3 -3
  92. package/public/build/assets/{sliderJs-Ch69_tVA.js.map → sliderJs-CyGnrv0Q.js.map} +1 -1
  93. package/public/build/manifest.json +10 -10
  94. package/resources/blocks/e-accordion-group/block.json +6 -4
  95. package/resources/blocks/e-gallery/block.json +2 -2
  96. package/resources/blocks/e-gallery/e-gallery.block.tsx +4 -0
  97. package/resources/blocks/e-image/e-image.block.tsx +4 -0
  98. package/resources/blocks/e-slider/block.json +3 -2
  99. package/resources/blocks/e-tab-container/block.json +2 -1
  100. package/resources/blocks/e-tabs/block.json +2 -1
  101. package/resources/blocks/l-flexible-container/block.json +3 -2
  102. package/resources/blocks/l-mobile-nav/block.json +2 -1
  103. package/resources/blocks/l-nav-menu/block.json +2 -1
  104. package/resources/blocks/l-nav-menu/l-nav-menu.block.tsx +2 -0
  105. package/resources/blocks/l-section/block.json +7 -5
  106. package/resources/blocks/l-section/l-section.block.tsx +40 -31
  107. package/resources/scripts/editor.ts +2 -0
  108. package/resources/styles/common/_editor.css +22 -0
  109. package/resources/styles/common/_utilities.css +210 -0
  110. package/core-js/blocks-filters/responsive-settings/constants.ts +0 -11
  111. package/core-js/blocks-filters/responsive-settings/settings/container/display/index.ts +0 -2
  112. package/core-js/blocks-filters/responsive-settings/settings/container/display/properties.ts +0 -167
  113. package/core-js/blocks-filters/responsive-settings/settings/container/display/settings.tsx +0 -73
  114. package/core-js/blocks-filters/responsive-settings/settings/container/flexbox/index.ts +0 -2
  115. package/core-js/blocks-filters/responsive-settings/settings/container/flexbox/properties.ts +0 -187
  116. package/core-js/blocks-filters/responsive-settings/settings/container/flexbox/settings.tsx +0 -131
  117. package/core-js/blocks-filters/responsive-settings/settings/container/grid/index.ts +0 -2
  118. package/core-js/blocks-filters/responsive-settings/settings/container/grid/properties.ts +0 -187
  119. package/core-js/blocks-filters/responsive-settings/settings/container/grid/settings.tsx +0 -132
  120. package/core-js/blocks-filters/responsive-settings/settings/container/index.ts +0 -4
  121. package/core-js/blocks-filters/responsive-settings/settings/container/panel.tsx +0 -92
  122. package/public/build/assets/_utils-PDaZ1Dn1.js +0 -2
  123. package/public/build/assets/coreAppStyles-Dp0WYk4N.css +0 -1
  124. package/public/build/assets/coreEditorJs-Cyc87wTo.js +0 -366
  125. package/public/build/assets/coreEditorJs-Cyc87wTo.js.map +0 -1
  126. package/public/build/assets/coreEditorStyles-D8-nNpQG.css +0 -1
@@ -1,167 +0,0 @@
1
- import { applyFilters } from '@wordpress/hooks';
2
- import { __ } from '@wordpress/i18n';
3
-
4
- import { WebentorConfig } from '@webentorCore/types/_webentor-config';
5
-
6
- import { getPixelFromRemValue } from '../../../utils';
7
-
8
- const getDisplayValues = () => [
9
- { label: 'None selected', value: '' },
10
- { label: 'Block', value: 'block' },
11
- { label: 'Hidden', value: 'hidden' },
12
- { label: 'Flex', value: 'flex' },
13
- { label: 'Grid', value: 'grid' },
14
- { label: 'Inline Block', value: 'inline-block' },
15
- { label: 'Inline', value: 'inline' },
16
- ];
17
-
18
- const getHeightValues = (twTheme: WebentorConfig['theme']) => {
19
- const values = Object.keys(twTheme?.height)
20
- // Sort ASC manually because Object.keys() is sorting keys wrong
21
- .sort((a, b) => Number(a) - Number(b))
22
- .map((key) => ({
23
- label: `${key} (${getPixelFromRemValue(twTheme?.height[key])})`,
24
- value: `h-${key}`,
25
- }));
26
-
27
- // Add none selected option as first item
28
- values.unshift({
29
- label: 'None selected',
30
- value: '',
31
- });
32
-
33
- return values;
34
- };
35
-
36
- const getWidthValues = (twTheme: WebentorConfig['theme']) => {
37
- const values = Object.keys(twTheme?.width)
38
- // Sort ASC manually because Object.keys() is sorting keys wrong
39
- .sort((a, b) => Number(a) - Number(b))
40
- .map((key) => ({
41
- label: `${key} (${getPixelFromRemValue(twTheme?.width[key])})`,
42
- value: `w-${key}`,
43
- }));
44
-
45
- // Add none selected option as first item
46
- values.unshift({
47
- label: 'None selected',
48
- value: '',
49
- });
50
-
51
- return values;
52
- };
53
-
54
- const getMinHeightValues = (twTheme: WebentorConfig['theme']) => {
55
- const values = Object.keys(twTheme?.minHeight)
56
- .sort((a, b) => Number(a) - Number(b))
57
- .map((key) => ({
58
- label: `${key} (${getPixelFromRemValue(twTheme?.minHeight[key])})`,
59
- value: `min-h-${key}`,
60
- }));
61
-
62
- // Add none selected option as first item
63
- values.unshift({
64
- label: 'None selected',
65
- value: '',
66
- });
67
-
68
- return values;
69
- };
70
-
71
- const getMinWidthValues = (twTheme: WebentorConfig['theme']) => {
72
- const values = Object.keys(twTheme?.minWidth)
73
- .sort((a, b) => Number(a) - Number(b))
74
- .map((key) => ({
75
- label: `${key} (${getPixelFromRemValue(twTheme?.minWidth[key])})`,
76
- value: `min-w-${key}`,
77
- }));
78
-
79
- // Add none selected option as first item
80
- values.unshift({
81
- label: 'None selected',
82
- value: '',
83
- });
84
-
85
- return values;
86
- };
87
-
88
- const getMaxHeightValues = (twTheme: WebentorConfig['theme']) => {
89
- const values = Object.keys(twTheme?.maxHeight)
90
- .sort((a, b) => Number(a) - Number(b))
91
- .map((key) => ({
92
- label: `${key} (${getPixelFromRemValue(twTheme?.maxHeight[key])})`,
93
- value: `max-h-${key}`,
94
- }));
95
-
96
- // Add none selected option as first item
97
- values.unshift({
98
- label: 'None selected',
99
- value: '',
100
- });
101
-
102
- return values;
103
- };
104
-
105
- const getMaxWidthValues = (twTheme: WebentorConfig['theme']) => {
106
- const values = Object.keys(twTheme?.maxWidth)
107
- .sort((a, b) => Number(a) - Number(b))
108
- .map((key) => ({
109
- label: `${key} (${getPixelFromRemValue(twTheme?.maxWidth[key])})`,
110
- value: `max-w-${key}`,
111
- }));
112
-
113
- // Add none selected option as first item
114
- values.unshift({
115
- label: 'None selected',
116
- value: '',
117
- });
118
-
119
- return values;
120
- };
121
-
122
- export const getDisplayProperties = (
123
- blockName: string,
124
- twTheme: WebentorConfig['theme'],
125
- ) =>
126
- applyFilters(
127
- 'webentor-theme-display-settings',
128
- [
129
- {
130
- label: __('Display', 'webentor'),
131
- name: 'display',
132
- help: __('Initial value is "Flex"', 'webentor'),
133
- values: getDisplayValues(),
134
- },
135
- {
136
- label: __('Height', 'webentor'),
137
- name: 'height',
138
- values: getHeightValues(twTheme),
139
- },
140
- {
141
- label: __('Min Height', 'webentor'),
142
- name: 'min-height',
143
- values: getMinHeightValues(twTheme),
144
- },
145
- {
146
- label: __('Max Height', 'webentor'),
147
- name: 'max-height',
148
- values: getMaxHeightValues(twTheme),
149
- },
150
- {
151
- label: __('Width', 'webentor'),
152
- name: 'width',
153
- values: getWidthValues(twTheme),
154
- },
155
- {
156
- label: __('Min Width', 'webentor'),
157
- name: 'min-width',
158
- values: getMinWidthValues(twTheme),
159
- },
160
- {
161
- label: __('Max Width', 'webentor'),
162
- name: 'max-width',
163
- values: getMaxWidthValues(twTheme),
164
- },
165
- ],
166
- blockName,
167
- );
@@ -1,73 +0,0 @@
1
- import { getBlockSupport } from '@wordpress/blocks';
2
- import { SelectControl } from '@wordpress/components';
3
- import { Fragment } from '@wordpress/element';
4
-
5
- import { camelize, setImmutably } from '@webentorCore/_utils';
6
-
7
- import { DisabledSliderInfo } from '../../../components/DisabledSliderInfo';
8
- import { BlockPanelProps } from '../../../types';
9
- import { isSliderEnabledForBreakpoint } from '../../../utils';
10
- import { getDisplayProperties } from './properties';
11
-
12
- interface DisplaySettingsProps extends BlockPanelProps {
13
- breakpoint: string;
14
- }
15
-
16
- export const DisplaySettings = ({
17
- attributes,
18
- setAttributes,
19
- name,
20
- breakpoint,
21
- twTheme,
22
- }: DisplaySettingsProps) => {
23
- if (!attributes?.display) {
24
- return null;
25
- }
26
-
27
- const isSliderEnabled = isSliderEnabledForBreakpoint(
28
- name,
29
- attributes,
30
- breakpoint,
31
- );
32
-
33
- const displayProperties = getDisplayProperties(name, twTheme);
34
- const supports = getBlockSupport(name, 'webentor.display');
35
-
36
- return (
37
- <div style={{ marginTop: '16px' }}>
38
- {isSliderEnabled && <DisabledSliderInfo />}
39
-
40
- {displayProperties.map((property) => {
41
- // Check if block supports all properties, meaning its set to true
42
- if (supports !== true) {
43
- const propertyCamel = camelize(property.name); // Suports is defined in camelCase
44
- // Check if block supports specific property, e.g. only "display" or "height" is supported
45
- if (supports?.[propertyCamel] !== true) {
46
- return null;
47
- }
48
- }
49
-
50
- return (
51
- <Fragment key={property.name + breakpoint}>
52
- <SelectControl
53
- label={property.label}
54
- value={attributes.display?.[property.name]?.value?.[breakpoint]}
55
- help={property?.help}
56
- disabled={isSliderEnabled}
57
- options={property.values}
58
- onChange={(selected) =>
59
- setAttributes(
60
- setImmutably(
61
- attributes,
62
- ['display', property.name, 'value', breakpoint],
63
- selected,
64
- ),
65
- )
66
- }
67
- />
68
- </Fragment>
69
- );
70
- })}
71
- </div>
72
- );
73
- };
@@ -1,2 +0,0 @@
1
- export { FlexboxSettings } from './settings';
2
- export { getFlexboxProperties, getFlexboxItemProperties } from './properties';
@@ -1,187 +0,0 @@
1
- import { __ } from '@wordpress/i18n';
2
-
3
- import { WebentorConfig } from '@webentorCore/types/_webentor-config';
4
-
5
- import { getPixelFromRemValue } from '../../../utils';
6
-
7
- const getGapValues = (axis = '', twTheme: WebentorConfig['theme']) => {
8
- const values = Object.keys(twTheme?.gap)
9
- // Sort ASC manually because Object.keys() is sorting keys wrong
10
- .sort((a, b) => Number(a) - Number(b))
11
- .map((key) => ({
12
- label: `${Number(key) * 4}px`,
13
- value: `gap-${axis === 'x' ? 'x-' : axis === 'y' ? 'y-' : ''}${key}`,
14
- }));
15
-
16
- // Add none selected option as first item
17
- values.unshift({
18
- label: __('None selected', 'webentor'),
19
- value: '',
20
- });
21
-
22
- return values;
23
- };
24
-
25
- const getFlexBasisValues = (twTheme: WebentorConfig['theme']) => {
26
- const values = Object.keys(twTheme?.flexBasis)
27
- // Sort ASC manually because Object.keys() is sorting keys wrong
28
- .sort((a, b) => Number(a) - Number(b))
29
- .map((key) => ({
30
- label: `${key} (${getPixelFromRemValue(twTheme?.flexBasis[key])})`,
31
- value: `basis-${key}`,
32
- }));
33
-
34
- // Add none selected option as first item
35
- values.unshift({
36
- label: __('None selected', 'webentor'),
37
- value: '',
38
- });
39
-
40
- return values;
41
- };
42
-
43
- const getFlexDirectionValues = () => [
44
- { label: __('None selected', 'webentor'), value: '' },
45
- { label: __('Row', 'webentor'), value: 'flex-row' },
46
- { label: __('Row Reverse', 'webentor'), value: 'flex-row-reverse' },
47
- { label: __('Column', 'webentor'), value: 'flex-col' },
48
- { label: __('Column Reverse', 'webentor'), value: 'flex-col-reverse' },
49
- ];
50
-
51
- const getFlexWrapValues = () => [
52
- { label: __('None selected', 'webentor'), value: '' },
53
- { label: __('Wrap', 'webentor'), value: 'flex-wrap' },
54
- { label: __('Nowrap', 'webentor'), value: 'flex-nowrap' },
55
- { label: __('Wrap Reverse', 'webentor'), value: 'flex-wrap-reverse' },
56
- ];
57
-
58
- const getJustifyContentValues = () => [
59
- { label: __('None selected', 'webentor'), value: '' },
60
- { label: __('Normal', 'webentor'), value: 'justify-normal' },
61
- { label: __('Flex Start', 'webentor'), value: 'justify-start' },
62
- { label: __('Flex End', 'webentor'), value: 'justify-end' },
63
- { label: __('Center', 'webentor'), value: 'justify-center' },
64
- { label: __('Space Between', 'webentor'), value: 'justify-between' },
65
- { label: __('Space Around', 'webentor'), value: 'justify-around' },
66
- { label: __('Space Evenly', 'webentor'), value: 'justify-evenly' },
67
- { label: __('Stretch', 'webentor'), value: 'justify-stretch' },
68
- ];
69
-
70
- const getAlignItemsValues = () => [
71
- { label: __('None selected', 'webentor'), value: '' },
72
- { label: __('Flex Start', 'webentor'), value: 'items-start' },
73
- { label: __('Flex End', 'webentor'), value: 'items-end' },
74
- { label: __('Center', 'webentor'), value: 'items-center' },
75
- { label: __('Baseline', 'webentor'), value: 'items-baseline' },
76
- { label: __('Stretch', 'webentor'), value: 'items-stretch' },
77
- ];
78
-
79
- const getAlignContentValues = () => [
80
- { label: __('None selected', 'webentor'), value: '' },
81
- { label: __('Normal', 'webentor'), value: 'content-normal' },
82
- { label: __('Flex Start', 'webentor'), value: 'content-start' },
83
- { label: __('Flex End', 'webentor'), value: 'content-end' },
84
- { label: __('Center', 'webentor'), value: 'content-center' },
85
- { label: __('Space Between', 'webentor'), value: 'content-between' },
86
- { label: __('Space Around', 'webentor'), value: 'content-around' },
87
- { label: __('Space Evenly', 'webentor'), value: 'content-evenly' },
88
- { label: __('Baseline', 'webentor'), value: 'content-baseline' },
89
- { label: __('Stretch', 'webentor'), value: 'content-stretch' },
90
- ];
91
-
92
- const getFlexGrowValues = () => [
93
- { label: __('None selected', 'webentor'), value: '' },
94
- { label: __('Grow 0', 'webentor'), value: 'grow-0' },
95
- { label: __('Grow 1', 'webentor'), value: 'grow' },
96
- ];
97
-
98
- const getFlexShrinkValues = () => [
99
- { label: __('None selected', 'webentor'), value: '' },
100
- { label: __('Shrink 0', 'webentor'), value: 'shrink-0' },
101
- { label: __('Shrink 1', 'webentor'), value: 'shrink' },
102
- ];
103
-
104
- const getOrderValues = () => [
105
- { label: __('None selected', 'webentor'), value: '' },
106
- { label: __('Order First', 'webentor'), value: 'order-first' },
107
- { label: __('Order Last', 'webentor'), value: 'order-last' },
108
- { label: __('Order None', 'webentor'), value: 'order-none' },
109
- { label: __('Order 0', 'webentor'), value: 'order-0' },
110
- { label: __('Order 1', 'webentor'), value: 'order-1' },
111
- { label: __('Order 2', 'webentor'), value: 'order-2' },
112
- { label: __('Order 3', 'webentor'), value: 'order-3' },
113
- { label: __('Order 4', 'webentor'), value: 'order-4' },
114
- { label: __('Order 5', 'webentor'), value: 'order-5' },
115
- ];
116
-
117
- export const getFlexboxProperties = (twTheme: WebentorConfig['theme']) => [
118
- {
119
- label: __('Flex Gap', 'webentor'),
120
- name: 'gap',
121
- values: getGapValues('', twTheme),
122
- },
123
- {
124
- label: __('Flex Gap X', 'webentor'),
125
- name: 'gap-x',
126
- values: getGapValues('x', twTheme),
127
- help: __('Overrides Gap value', 'webentor'),
128
- },
129
- {
130
- label: __('Flex Gap Y', 'webentor'),
131
- name: 'gap-y',
132
- values: getGapValues('y', twTheme),
133
- help: __('Overrides Gap value', 'webentor'),
134
- },
135
- {
136
- label: __('Flex Direction', 'webentor'),
137
- name: 'flex-direction',
138
- values: getFlexDirectionValues(),
139
- },
140
- {
141
- label: __('Flex Wrap', 'webentor'),
142
- name: 'flex-wrap',
143
- values: getFlexWrapValues(),
144
- },
145
- {
146
- label: __('Justify Content', 'webentor'),
147
- name: 'justify-content',
148
- values: getJustifyContentValues(),
149
- },
150
- {
151
- label: __('Align Items', 'webentor'),
152
- name: 'align-items',
153
- values: getAlignItemsValues(),
154
- },
155
- {
156
- label: __('Align Content', 'webentor'),
157
- name: 'align-content',
158
- values: getAlignContentValues(),
159
- },
160
- ];
161
-
162
- export const getFlexboxItemProperties = (twTheme: WebentorConfig['theme']) => [
163
- {
164
- label: __('Flex Grow', 'webentor'),
165
- name: 'flex-grow',
166
- help: __('Applicable only on Flexbox child item', 'webentor'),
167
- values: getFlexGrowValues(),
168
- },
169
- {
170
- label: __('Flex Shrink', 'webentor'),
171
- name: 'flex-shrink',
172
- help: __('Applicable only on Flexbox child item', 'webentor'),
173
- values: getFlexShrinkValues(),
174
- },
175
- {
176
- label: __('Flex Basis', 'webentor'),
177
- name: 'flex-basis',
178
- help: __('Applicable only on Flexbox child item', 'webentor'),
179
- values: getFlexBasisValues(twTheme),
180
- },
181
- {
182
- label: __('Order', 'webentor'),
183
- name: 'order',
184
- help: __('Applicable only on Flexbox child item', 'webentor'),
185
- values: getOrderValues(),
186
- },
187
- ];
@@ -1,131 +0,0 @@
1
- import { SelectControl } from '@wordpress/components';
2
- import { Fragment } from '@wordpress/element';
3
- import { __ } from '@wordpress/i18n';
4
-
5
- import { setImmutably } from '@webentorCore/_utils';
6
- import { BlockPanelProps } from '@webentorCore/block-filters/responsive-settings/types';
7
- import { useBlockParent } from '@webentorCore/blocks-utils/_use-block-parent';
8
-
9
- import { DisabledSliderInfo } from '../../../components/DisabledSliderInfo';
10
- import { isSliderEnabledForBreakpoint } from '../../../utils';
11
- import { getFlexboxItemProperties, getFlexboxProperties } from './properties';
12
-
13
- interface FlexboxSettingsProps extends BlockPanelProps {
14
- breakpoint: string;
15
- }
16
-
17
- export const FlexboxSettings = ({
18
- attributes,
19
- setAttributes,
20
- name,
21
- breakpoint,
22
- twTheme,
23
- }: FlexboxSettingsProps) => {
24
- const isSliderEnabled = isSliderEnabledForBreakpoint(
25
- name,
26
- attributes,
27
- breakpoint,
28
- );
29
-
30
- // Get parent block data
31
- const parentBlock = useBlockParent();
32
-
33
- // TODO: how to check all previous breakpoints and determine if any of them is flex so we can display the settings?
34
- const isParentFlex =
35
- parentBlock?.attributes?.display?.display?.value?.[breakpoint] === 'flex';
36
- const isCurrentFlex =
37
- attributes?.display?.display?.value?.[breakpoint] === 'flex';
38
-
39
- if (!isCurrentFlex && !isParentFlex) {
40
- return null;
41
- }
42
-
43
- const flexboxProperties = getFlexboxProperties(twTheme);
44
- const flexboxItemProperties = getFlexboxItemProperties(twTheme);
45
-
46
- return (
47
- <>
48
- {isCurrentFlex && attributes?.flexbox && (
49
- <div
50
- style={{
51
- marginTop: '16px',
52
- border: '1px solid #e0e0e0',
53
- padding: '8px',
54
- }}
55
- >
56
- <h3 style={{ marginBottom: '8px' }}>
57
- {__('Flexbox settings', 'webentor')}
58
- </h3>
59
-
60
- {isSliderEnabled && <DisabledSliderInfo />}
61
-
62
- {flexboxProperties.map((property) => (
63
- <Fragment key={property.name + breakpoint}>
64
- <SelectControl
65
- label={property.label}
66
- value={attributes.flexbox?.[property.name]?.value?.[breakpoint]}
67
- disabled={isSliderEnabled}
68
- help={property?.help}
69
- options={property.values}
70
- onChange={(selected) =>
71
- setAttributes(
72
- setImmutably(
73
- attributes,
74
- ['flexbox', property.name, 'value', breakpoint],
75
- selected,
76
- ),
77
- )
78
- }
79
- />
80
- </Fragment>
81
- ))}
82
- </div>
83
- )}
84
-
85
- {isParentFlex && attributes?.flexboxItem && (
86
- <div
87
- style={{
88
- marginTop: '16px',
89
- border: '1px solid #e0e0e0',
90
- padding: '8px',
91
- }}
92
- >
93
- <h3 style={{ marginBottom: '8px' }}>
94
- {__('Flex Item settings', 'webentor')}
95
- </h3>
96
- <div style={{ marginBottom: '8px', fontSize: '12px' }}>
97
- {__(
98
- 'Parent block display setting is set to `Flex`, so current block also acts as flex item.',
99
- 'webentor',
100
- )}
101
- </div>
102
-
103
- {isSliderEnabled && <DisabledSliderInfo />}
104
-
105
- {flexboxItemProperties.map((property) => (
106
- <Fragment key={property.name + breakpoint}>
107
- <SelectControl
108
- label={property.label}
109
- value={
110
- attributes.flexboxItem?.[property.name]?.value?.[breakpoint]
111
- }
112
- disabled={isSliderEnabled}
113
- help={property?.help}
114
- options={property.values}
115
- onChange={(selected) =>
116
- setAttributes(
117
- setImmutably(
118
- attributes,
119
- ['flexboxItem', property.name, 'value', breakpoint],
120
- selected,
121
- ),
122
- )
123
- }
124
- />
125
- </Fragment>
126
- ))}
127
- </div>
128
- )}
129
- </>
130
- );
131
- };
@@ -1,2 +0,0 @@
1
- export { GridSettings } from './settings';
2
- export { getGridProperties, getGridItemProperties } from './properties';