@wordpress-gcb/fields 0.2.1 → 0.2.3
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/dist/conditional-logic.js +83 -0
- package/{src → dist}/control-context.js +3 -2
- package/{src → dist}/controls/MediaCapabilityGate.js +12 -8
- package/dist/controls/MediaPicker.js +149 -0
- package/dist/controls/MediaTriggerBadges.js +35 -0
- package/{src → dist}/controls/PopoverOrModal.js +49 -43
- package/dist/controls/SortableItem.js +126 -0
- package/dist/controls/button-group.js +46 -0
- package/dist/controls/checkbox-group.js +65 -0
- package/dist/controls/checkbox.js +15 -0
- package/dist/controls/code.js +24 -0
- package/dist/controls/color.js +249 -0
- package/dist/controls/date.js +55 -0
- package/dist/controls/datetime.js +61 -0
- package/dist/controls/email.js +17 -0
- package/dist/controls/file.js +163 -0
- package/dist/controls/gallery.js +371 -0
- package/dist/controls/google-map.js +143 -0
- package/dist/controls/heading-level.js +93 -0
- package/dist/controls/icon.js +292 -0
- package/dist/controls/image.js +360 -0
- package/dist/controls/index.js +88 -0
- package/dist/controls/message.js +86 -0
- package/dist/controls/number.js +19 -0
- package/dist/controls/oembed.js +42 -0
- package/{src → dist}/controls/page-link.js +1 -2
- package/dist/controls/post-object.js +913 -0
- package/dist/controls/radio.js +19 -0
- package/dist/controls/range.js +108 -0
- package/{src → dist}/controls/relationship.js +12 -7
- package/dist/controls/repeater.js +277 -0
- package/dist/controls/richtext.js +494 -0
- package/dist/controls/select.js +144 -0
- package/dist/controls/size.js +59 -0
- package/dist/controls/spacing.js +172 -0
- package/dist/controls/taxonomy.js +569 -0
- package/dist/controls/text.js +16 -0
- package/dist/controls/textarea.js +17 -0
- package/dist/controls/toggle-group.js +28 -0
- package/dist/controls/toggle.js +15 -0
- package/dist/controls/url.js +235 -0
- package/dist/controls/user.js +383 -0
- package/{src → dist}/controls/wysiwyg.js +1 -1
- package/{src → dist}/hooks/useTokens.js +25 -21
- package/{src → dist}/index.js +2 -8
- package/dist/inspector.js +163 -0
- package/{src → dist}/provider.js +18 -17
- package/dist/utils/map-utils.js +54 -0
- package/dist/utils/token-helper.js +396 -0
- package/{src → dist}/validation-context.js +4 -4
- package/package.json +20 -13
- package/src/conditional-logic.js +0 -77
- package/src/controls/MediaPicker.js +0 -139
- package/src/controls/MediaTriggerBadges.js +0 -31
- package/src/controls/SortableItem.js +0 -110
- package/src/controls/button-group.js +0 -49
- package/src/controls/checkbox-group.js +0 -55
- package/src/controls/checkbox.js +0 -13
- package/src/controls/code.js +0 -21
- package/src/controls/color.js +0 -235
- package/src/controls/date.js +0 -37
- package/src/controls/datetime.js +0 -54
- package/src/controls/email.js +0 -15
- package/src/controls/file.js +0 -134
- package/src/controls/gallery.js +0 -338
- package/src/controls/google-map.js +0 -117
- package/src/controls/heading-level.js +0 -99
- package/src/controls/icon.js +0 -301
- package/src/controls/image.js +0 -334
- package/src/controls/index.js +0 -95
- package/src/controls/message.js +0 -56
- package/src/controls/number.js +0 -17
- package/src/controls/oembed.js +0 -32
- package/src/controls/post-object.js +0 -788
- package/src/controls/radio.js +0 -18
- package/src/controls/range.js +0 -110
- package/src/controls/repeater.js +0 -290
- package/src/controls/richtext.js +0 -505
- package/src/controls/select.js +0 -141
- package/src/controls/size.js +0 -49
- package/src/controls/spacing.js +0 -141
- package/src/controls/taxonomy.js +0 -488
- package/src/controls/text.js +0 -14
- package/src/controls/textarea.js +0 -15
- package/src/controls/toggle-group.js +0 -34
- package/src/controls/toggle.js +0 -13
- package/src/controls/url.js +0 -164
- package/src/controls/user.js +0 -343
- package/src/inspector.js +0 -174
- package/src/utils/map-utils.js +0 -51
- package/src/utils/token-helper.js +0 -243
package/src/controls/index.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry of control type → React component.
|
|
3
|
-
*
|
|
4
|
-
* Each component receives `{ control, value, onChange, attributes }` and is
|
|
5
|
-
* responsible for its own UI. Some are thin wrappers around @wordpress/components;
|
|
6
|
-
* the richer ones (image, gallery, post-object, taxonomy, user, icon, google-map)
|
|
7
|
-
* carry full UI logic ported from the original plugin.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import TextField from './text';
|
|
11
|
-
import TextareaField from './textarea';
|
|
12
|
-
import NumberField from './number';
|
|
13
|
-
import EmailField from './email';
|
|
14
|
-
import UrlField from './url';
|
|
15
|
-
import CodeField from './code';
|
|
16
|
-
import SelectField from './select';
|
|
17
|
-
import RadioField from './radio';
|
|
18
|
-
import CheckboxField from './checkbox';
|
|
19
|
-
import CheckboxGroupField from './checkbox-group';
|
|
20
|
-
import ToggleField from './toggle';
|
|
21
|
-
import ToggleGroupField from './toggle-group';
|
|
22
|
-
import ButtonGroupField from './button-group';
|
|
23
|
-
import RangeField from './range';
|
|
24
|
-
import ColorField from './color';
|
|
25
|
-
import DateField from './date';
|
|
26
|
-
import DatetimeField from './datetime';
|
|
27
|
-
import SizeField from './size';
|
|
28
|
-
import SpacingField from './spacing';
|
|
29
|
-
import MessageField from './message';
|
|
30
|
-
import OembedField from './oembed';
|
|
31
|
-
import WysiwygField from './wysiwyg';
|
|
32
|
-
import ImageField from './image';
|
|
33
|
-
import GalleryField from './gallery';
|
|
34
|
-
import FileField from './file';
|
|
35
|
-
import IconField from './icon';
|
|
36
|
-
import GoogleMapField from './google-map';
|
|
37
|
-
import PostObjectField from './post-object';
|
|
38
|
-
import TaxonomyField from './taxonomy';
|
|
39
|
-
import UserField from './user';
|
|
40
|
-
import PageLinkField from './page-link';
|
|
41
|
-
import RelationshipField from './relationship';
|
|
42
|
-
import HeadingLevelField from './heading-level';
|
|
43
|
-
import RepeaterField from './repeater';
|
|
44
|
-
import RichtextField from './richtext';
|
|
45
|
-
|
|
46
|
-
export const controlComponents = {
|
|
47
|
-
// Text family
|
|
48
|
-
text: TextField,
|
|
49
|
-
textarea: TextareaField,
|
|
50
|
-
number: NumberField,
|
|
51
|
-
email: EmailField,
|
|
52
|
-
url: UrlField,
|
|
53
|
-
code: CodeField,
|
|
54
|
-
|
|
55
|
-
// Choice family
|
|
56
|
-
select: SelectField,
|
|
57
|
-
radio: RadioField,
|
|
58
|
-
checkbox: CheckboxField,
|
|
59
|
-
'checkbox-group': CheckboxGroupField,
|
|
60
|
-
toggle: ToggleField,
|
|
61
|
-
'toggle-group': ToggleGroupField,
|
|
62
|
-
'button-group': ButtonGroupField,
|
|
63
|
-
|
|
64
|
-
// Numeric / visual
|
|
65
|
-
range: RangeField,
|
|
66
|
-
color: ColorField,
|
|
67
|
-
date: DateField,
|
|
68
|
-
datetime: DatetimeField,
|
|
69
|
-
size: SizeField,
|
|
70
|
-
spacing: SpacingField,
|
|
71
|
-
'heading-level': HeadingLevelField,
|
|
72
|
-
|
|
73
|
-
// Display-only
|
|
74
|
-
message: MessageField,
|
|
75
|
-
wysiwyg: WysiwygField,
|
|
76
|
-
richtext: RichtextField,
|
|
77
|
-
oembed: OembedField,
|
|
78
|
-
|
|
79
|
-
// Media
|
|
80
|
-
image: ImageField,
|
|
81
|
-
gallery: GalleryField,
|
|
82
|
-
file: FileField,
|
|
83
|
-
icon: IconField,
|
|
84
|
-
|
|
85
|
-
// Reference
|
|
86
|
-
'post-object': PostObjectField,
|
|
87
|
-
taxonomy: TaxonomyField,
|
|
88
|
-
user: UserField,
|
|
89
|
-
'page-link': PageLinkField,
|
|
90
|
-
relationship: RelationshipField,
|
|
91
|
-
|
|
92
|
-
// Other
|
|
93
|
-
'google-map': GoogleMapField,
|
|
94
|
-
repeater: RepeaterField,
|
|
95
|
-
};
|
package/src/controls/message.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Message — informational note in the Inspector. No input.
|
|
3
|
-
*
|
|
4
|
-
* Variants: `neutral` (default) | `info` | `warning` | `danger` | `success`
|
|
5
|
-
* Pair with `conditionalLogic` to fire context-sensitive messages (e.g.
|
|
6
|
-
* a `danger` message that only shows when another field has an invalid
|
|
7
|
-
* value).
|
|
8
|
-
*
|
|
9
|
-
* Body source: `control.message` (preferred) or `control.helpText` fallback.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
const VARIANTS = {
|
|
13
|
-
neutral: { bg: '#f0f0f1', border: '#dcdcde', fg: '#1e1e1e', glyph: null },
|
|
14
|
-
info: { bg: '#f0f6fc', border: '#c5d9eb', fg: '#0b3b6f', glyph: 'ℹ' },
|
|
15
|
-
warning: { bg: '#fcf9e8', border: '#f5e6a8', fg: '#674e00', glyph: '⚠' },
|
|
16
|
-
danger: { bg: '#fcf0f1', border: '#facfd2', fg: '#7c0c0c', glyph: '✕' },
|
|
17
|
-
success: { bg: '#edfaef', border: '#b8e6bf', fg: '#0a4d12', glyph: '✓' },
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export default function MessageField({ control }) {
|
|
21
|
-
const variant = VARIANTS[control.variant] || VARIANTS.neutral;
|
|
22
|
-
const body = control.message || control.helpText || '';
|
|
23
|
-
|
|
24
|
-
return (
|
|
25
|
-
<div className={`components-base-control gcb-message-control gcb-message-control--${control.variant || 'neutral'}`}>
|
|
26
|
-
<div className="components-base-control__field">
|
|
27
|
-
{control.label && (
|
|
28
|
-
<label className="components-base-control__label">{control.label}</label>
|
|
29
|
-
)}
|
|
30
|
-
<div
|
|
31
|
-
className="gcb-message-control__content"
|
|
32
|
-
role={control.variant === 'danger' || control.variant === 'warning' ? 'alert' : undefined}
|
|
33
|
-
style={{
|
|
34
|
-
display: 'flex',
|
|
35
|
-
alignItems: 'flex-start',
|
|
36
|
-
gap: 8,
|
|
37
|
-
padding: '10px 12px',
|
|
38
|
-
backgroundColor: variant.bg,
|
|
39
|
-
border: `1px solid ${variant.border}`,
|
|
40
|
-
color: variant.fg,
|
|
41
|
-
borderRadius: 4,
|
|
42
|
-
fontSize: 13,
|
|
43
|
-
lineHeight: 1.5,
|
|
44
|
-
}}
|
|
45
|
-
>
|
|
46
|
-
{variant.glyph && (
|
|
47
|
-
<span aria-hidden style={{ flexShrink: 0, fontWeight: 600, lineHeight: 1.5 }}>
|
|
48
|
-
{variant.glyph}
|
|
49
|
-
</span>
|
|
50
|
-
)}
|
|
51
|
-
<span>{body}</span>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
);
|
|
56
|
-
}
|
package/src/controls/number.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { __experimentalNumberControl as NumberControl } from '@wordpress/components';
|
|
2
|
-
|
|
3
|
-
export default function NumberField({ control, value, onChange }) {
|
|
4
|
-
return (
|
|
5
|
-
<NumberControl
|
|
6
|
-
label={control.label}
|
|
7
|
-
help={control.helpText}
|
|
8
|
-
placeholder={control.placeholder}
|
|
9
|
-
value={value ?? 0}
|
|
10
|
-
onChange={(next) => onChange(next === '' ? 0 : Number(next))}
|
|
11
|
-
min={control.min}
|
|
12
|
-
max={control.max}
|
|
13
|
-
step={control.step ?? 1}
|
|
14
|
-
__nextHasNoMarginBottom
|
|
15
|
-
/>
|
|
16
|
-
);
|
|
17
|
-
}
|
package/src/controls/oembed.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* oEmbed — URL input with a quick preview underneath.
|
|
3
|
-
*/
|
|
4
|
-
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import { TextControl } from '@wordpress/components';
|
|
6
|
-
|
|
7
|
-
export default function OembedField({ control, value, onChange }) {
|
|
8
|
-
return (
|
|
9
|
-
<div className="components-base-control gcb-oembed-control">
|
|
10
|
-
<div className="components-base-control__field">
|
|
11
|
-
<label className="components-base-control__label">{control.label}</label>
|
|
12
|
-
</div>
|
|
13
|
-
{control.helpText && (
|
|
14
|
-
<p className="components-base-control__help">{control.helpText}</p>
|
|
15
|
-
)}
|
|
16
|
-
<TextControl
|
|
17
|
-
value={value || ''}
|
|
18
|
-
onChange={onChange}
|
|
19
|
-
placeholder={__('Enter URL to embed (YouTube, Twitter, etc.)', 'gcblite')}
|
|
20
|
-
type="url"
|
|
21
|
-
__nextHasNoMarginBottom
|
|
22
|
-
/>
|
|
23
|
-
{value && (
|
|
24
|
-
<div style={{ marginTop: 12, fontSize: 13 }}>
|
|
25
|
-
<wp-embed>
|
|
26
|
-
<a href={value}>{value}</a>
|
|
27
|
-
</wp-embed>
|
|
28
|
-
</div>
|
|
29
|
-
)}
|
|
30
|
-
</div>
|
|
31
|
-
);
|
|
32
|
-
}
|