@wordpress/block-library 9.28.0 → 9.29.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 (196) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/edit.js +123 -0
  3. package/build/accordion/edit.js.map +1 -0
  4. package/build/accordion/icon.js +33 -0
  5. package/build/accordion/icon.js.map +1 -0
  6. package/build/accordion/index.js +100 -0
  7. package/build/accordion/index.js.map +1 -0
  8. package/build/accordion/init.js +12 -0
  9. package/build/accordion/init.js.map +1 -0
  10. package/build/accordion/save.js +36 -0
  11. package/build/accordion/save.js.map +1 -0
  12. package/build/accordion/view.js +49 -0
  13. package/build/accordion/view.js.map +1 -0
  14. package/build/accordion-content/edit.js +129 -0
  15. package/build/accordion-content/edit.js.map +1 -0
  16. package/build/accordion-content/icon.js +35 -0
  17. package/build/accordion-content/icon.js.map +1 -0
  18. package/build/accordion-content/icons.js +30 -0
  19. package/build/accordion-content/icons.js.map +1 -0
  20. package/build/accordion-content/index.js +76 -0
  21. package/build/accordion-content/index.js.map +1 -0
  22. package/build/accordion-content/init.js +12 -0
  23. package/build/accordion-content/init.js.map +1 -0
  24. package/build/accordion-content/save.js +37 -0
  25. package/build/accordion-content/save.js.map +1 -0
  26. package/build/accordion-header/edit.js +118 -0
  27. package/build/accordion-header/edit.js.map +1 -0
  28. package/build/accordion-header/icon.js +25 -0
  29. package/build/accordion-header/icon.js.map +1 -0
  30. package/build/accordion-header/index.js +121 -0
  31. package/build/accordion-header/index.js.map +1 -0
  32. package/build/accordion-header/init.js +12 -0
  33. package/build/accordion-header/init.js.map +1 -0
  34. package/build/accordion-header/save.js +81 -0
  35. package/build/accordion-header/save.js.map +1 -0
  36. package/build/accordion-panel/edit.js +59 -0
  37. package/build/accordion-panel/edit.js.map +1 -0
  38. package/build/accordion-panel/icon.js +22 -0
  39. package/build/accordion-panel/icon.js.map +1 -0
  40. package/build/accordion-panel/index.js +105 -0
  41. package/build/accordion-panel/index.js.map +1 -0
  42. package/build/accordion-panel/init.js +12 -0
  43. package/build/accordion-panel/init.js.map +1 -0
  44. package/build/accordion-panel/save.js +46 -0
  45. package/build/accordion-panel/save.js.map +1 -0
  46. package/build/cover/index.js +2 -1
  47. package/build/cover/index.js.map +1 -1
  48. package/build/freeform/edit.js +6 -0
  49. package/build/freeform/edit.js.map +1 -1
  50. package/build/index.js +10 -0
  51. package/build/index.js.map +1 -1
  52. package/build/media-text/media-container.js +2 -1
  53. package/build/media-text/media-container.js.map +1 -1
  54. package/build/media-text/transforms.js +7 -3
  55. package/build/media-text/transforms.js.map +1 -1
  56. package/build/post-comments-link/edit.js +6 -1
  57. package/build/post-comments-link/edit.js.map +1 -1
  58. package/build/query-title/edit.js +52 -2
  59. package/build/query-title/edit.js.map +1 -1
  60. package/build/query-title/index.js +1 -0
  61. package/build/query-title/index.js.map +1 -1
  62. package/build/query-title/use-post-type-label.js +42 -0
  63. package/build/query-title/use-post-type-label.js.map +1 -0
  64. package/build/query-title/variations.js +10 -0
  65. package/build/query-title/variations.js.map +1 -1
  66. package/build/site-logo/edit.js +56 -41
  67. package/build/site-logo/edit.js.map +1 -1
  68. package/build/site-title/edit.js +9 -3
  69. package/build/site-title/edit.js.map +1 -1
  70. package/build/video/edit-common-settings.js +6 -3
  71. package/build/video/edit-common-settings.js.map +1 -1
  72. package/build-module/accordion/edit.js +116 -0
  73. package/build-module/accordion/edit.js.map +1 -0
  74. package/build-module/accordion/icon.js +27 -0
  75. package/build-module/accordion/icon.js.map +1 -0
  76. package/build-module/accordion/index.js +92 -0
  77. package/build-module/accordion/index.js.map +1 -0
  78. package/build-module/accordion/init.js +6 -0
  79. package/build-module/accordion/init.js.map +1 -0
  80. package/build-module/accordion/save.js +27 -0
  81. package/build-module/accordion/save.js.map +1 -0
  82. package/build-module/accordion/view.js +46 -0
  83. package/build-module/accordion/view.js.map +1 -0
  84. package/build-module/accordion-content/edit.js +120 -0
  85. package/build-module/accordion-content/edit.js.map +1 -0
  86. package/build-module/accordion-content/icon.js +29 -0
  87. package/build-module/accordion-content/icon.js.map +1 -0
  88. package/build-module/accordion-content/icons.js +22 -0
  89. package/build-module/accordion-content/icons.js.map +1 -0
  90. package/build-module/accordion-content/index.js +68 -0
  91. package/build-module/accordion-content/index.js.map +1 -0
  92. package/build-module/accordion-content/init.js +6 -0
  93. package/build-module/accordion-content/init.js.map +1 -0
  94. package/build-module/accordion-content/save.js +28 -0
  95. package/build-module/accordion-content/save.js.map +1 -0
  96. package/build-module/accordion-header/edit.js +108 -0
  97. package/build-module/accordion-header/edit.js.map +1 -0
  98. package/build-module/accordion-header/icon.js +19 -0
  99. package/build-module/accordion-header/icon.js.map +1 -0
  100. package/build-module/accordion-header/index.js +113 -0
  101. package/build-module/accordion-header/index.js.map +1 -0
  102. package/build-module/accordion-header/init.js +6 -0
  103. package/build-module/accordion-header/init.js.map +1 -0
  104. package/build-module/accordion-header/save.js +71 -0
  105. package/build-module/accordion-header/save.js.map +1 -0
  106. package/build-module/accordion-panel/edit.js +50 -0
  107. package/build-module/accordion-panel/edit.js.map +1 -0
  108. package/build-module/accordion-panel/icon.js +16 -0
  109. package/build-module/accordion-panel/icon.js.map +1 -0
  110. package/build-module/accordion-panel/index.js +97 -0
  111. package/build-module/accordion-panel/index.js.map +1 -0
  112. package/build-module/accordion-panel/init.js +6 -0
  113. package/build-module/accordion-panel/init.js.map +1 -0
  114. package/build-module/accordion-panel/save.js +37 -0
  115. package/build-module/accordion-panel/save.js.map +1 -0
  116. package/build-module/cover/index.js +2 -1
  117. package/build-module/cover/index.js.map +1 -1
  118. package/build-module/freeform/edit.js +6 -0
  119. package/build-module/freeform/edit.js.map +1 -1
  120. package/build-module/index.js +10 -0
  121. package/build-module/index.js.map +1 -1
  122. package/build-module/media-text/media-container.js +2 -1
  123. package/build-module/media-text/media-container.js.map +1 -1
  124. package/build-module/media-text/transforms.js +7 -3
  125. package/build-module/media-text/transforms.js.map +1 -1
  126. package/build-module/post-comments-link/edit.js +6 -1
  127. package/build-module/post-comments-link/edit.js.map +1 -1
  128. package/build-module/query-title/edit.js +52 -2
  129. package/build-module/query-title/edit.js.map +1 -1
  130. package/build-module/query-title/index.js +1 -0
  131. package/build-module/query-title/index.js.map +1 -1
  132. package/build-module/query-title/use-post-type-label.js +36 -0
  133. package/build-module/query-title/use-post-type-label.js.map +1 -0
  134. package/build-module/query-title/variations.js +10 -0
  135. package/build-module/query-title/variations.js.map +1 -1
  136. package/build-module/site-logo/edit.js +57 -42
  137. package/build-module/site-logo/edit.js.map +1 -1
  138. package/build-module/site-title/edit.js +10 -4
  139. package/build-module/site-title/edit.js.map +1 -1
  140. package/build-module/video/edit-common-settings.js +6 -3
  141. package/build-module/video/edit-common-settings.js.map +1 -1
  142. package/build-style/accordion/style-rtl.css +223 -0
  143. package/build-style/accordion/style.css +223 -0
  144. package/build-style/style-rtl.css +88 -0
  145. package/build-style/style.css +88 -0
  146. package/package.json +36 -35
  147. package/src/accordion/block.json +69 -0
  148. package/src/accordion/edit.js +133 -0
  149. package/src/accordion/icon.js +23 -0
  150. package/src/accordion/index.js +21 -0
  151. package/src/accordion/index.php +61 -0
  152. package/src/accordion/init.js +6 -0
  153. package/src/accordion/save.js +23 -0
  154. package/src/accordion/style.scss +91 -0
  155. package/src/accordion/view.js +38 -0
  156. package/src/accordion-content/block.json +45 -0
  157. package/src/accordion-content/edit.js +149 -0
  158. package/src/accordion-content/icon.js +28 -0
  159. package/src/accordion-content/icons.js +23 -0
  160. package/src/accordion-content/index.js +21 -0
  161. package/src/accordion-content/index.php +73 -0
  162. package/src/accordion-content/init.js +6 -0
  163. package/src/accordion-content/save.js +25 -0
  164. package/src/accordion-header/block.json +93 -0
  165. package/src/accordion-header/edit.js +131 -0
  166. package/src/accordion-header/icon.js +16 -0
  167. package/src/accordion-header/index.js +21 -0
  168. package/src/accordion-header/init.js +6 -0
  169. package/src/accordion-header/save.js +79 -0
  170. package/src/accordion-panel/block.json +74 -0
  171. package/src/accordion-panel/edit.js +61 -0
  172. package/src/accordion-panel/icon.js +15 -0
  173. package/src/accordion-panel/index.js +21 -0
  174. package/src/accordion-panel/init.js +6 -0
  175. package/src/accordion-panel/save.js +51 -0
  176. package/src/block/index.php +16 -14
  177. package/src/cover/block.json +2 -1
  178. package/src/file/index.php +28 -22
  179. package/src/freeform/edit.js +7 -0
  180. package/src/index.js +12 -0
  181. package/src/media-text/media-container.js +1 -0
  182. package/src/media-text/transforms.js +5 -1
  183. package/src/navigation/edit/test/navigation-menu-selector.js +2 -2
  184. package/src/post-comments-link/edit.js +7 -1
  185. package/src/post-excerpt/index.php +16 -12
  186. package/src/query-title/block.json +1 -0
  187. package/src/query-title/edit.js +58 -1
  188. package/src/query-title/index.php +30 -5
  189. package/src/query-title/use-post-type-label.js +34 -0
  190. package/src/query-title/variations.js +13 -0
  191. package/src/site-logo/edit.js +33 -12
  192. package/src/site-title/edit.js +24 -16
  193. package/src/social-link/README.md +4 -1
  194. package/src/social-link/index.php +1 -1
  195. package/src/style.scss +1 -0
  196. package/src/video/edit-common-settings.js +14 -5
@@ -0,0 +1,34 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store as coreStore } from '@wordpress/core-data';
5
+ import { useSelect } from '@wordpress/data';
6
+
7
+ /**
8
+ * Hook to fetch the singular label for the current post type.
9
+ *
10
+ * @param {string} contextPostType Context provided post type.
11
+ */
12
+ export function usePostTypeLabel( contextPostType ) {
13
+ const currentPostType = useSelect( ( select ) => {
14
+ // Access core/editor by string to avoid @wordpress/editor dependency.
15
+ // eslint-disable-next-line @wordpress/data-no-store-string-literals
16
+ const { getCurrentPostType } = select( 'core/editor' );
17
+ return getCurrentPostType();
18
+ }, [] );
19
+
20
+ // Fetch the post type label from the core data store
21
+ return useSelect(
22
+ ( select ) => {
23
+ const { getPostType } = select( coreStore );
24
+ const postTypeSlug = contextPostType || currentPostType;
25
+ const postType = getPostType( postTypeSlug );
26
+
27
+ // Return the singular name of the post type
28
+ return {
29
+ postTypeLabel: postType ? postType.labels.singular_name : '',
30
+ };
31
+ },
32
+ [ contextPostType, currentPostType ]
33
+ );
34
+ }
@@ -30,6 +30,19 @@ const variations = [
30
30
  },
31
31
  scope: [ 'inserter' ],
32
32
  },
33
+ {
34
+ isDefault: false,
35
+ name: 'post-type-label',
36
+ title: __( 'Post Type Label' ),
37
+ description: __(
38
+ 'Display the post type label based on the queried object.'
39
+ ),
40
+ icon: title,
41
+ attributes: {
42
+ type: 'post-type',
43
+ },
44
+ scope: [ 'inserter' ],
45
+ },
33
46
  ];
34
47
 
35
48
  /**
@@ -38,6 +38,7 @@ import {
38
38
  useBlockProps,
39
39
  store as blockEditorStore,
40
40
  __experimentalImageEditor as ImageEditor,
41
+ useBlockEditingMode,
41
42
  } from '@wordpress/block-editor';
42
43
  import { useSelect, useDispatch } from '@wordpress/data';
43
44
  import { store as coreStore } from '@wordpress/core-data';
@@ -73,6 +74,16 @@ const SiteLogo = ( {
73
74
  const [ isEditingImage, setIsEditingImage ] = useState( false );
74
75
  const { toggleSelection } = useDispatch( blockEditorStore );
75
76
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
77
+
78
+ // Check if we're in contentOnly mode
79
+ const blockEditingMode = useBlockEditingMode();
80
+ const isNavigationMode = useSelect(
81
+ ( select ) => select( blockEditorStore ).isNavigationMode(),
82
+ []
83
+ );
84
+ const isContentOnlyMode = blockEditingMode === 'contentOnly';
85
+ const isContentOnlyWriteMode = isNavigationMode && isContentOnlyMode;
86
+
76
87
  const { imageEditing, maxWidth, title } = useSelect( ( select ) => {
77
88
  const settings = select( blockEditorStore ).getSettings();
78
89
  const siteEntities = select( coreStore ).getEntityRecord(
@@ -205,8 +216,12 @@ const SiteLogo = ( {
205
216
  const canEditImage =
206
217
  logoId && naturalWidth && naturalHeight && imageEditing;
207
218
 
208
- const imgEdit =
209
- canEditImage && isEditingImage ? (
219
+ // Hide crop and dimensions editing in write mode
220
+ const shouldShowCropAndDimensions = ! isContentOnlyWriteMode;
221
+
222
+ let imgEdit;
223
+ if ( canEditImage && isEditingImage ) {
224
+ imgEdit = (
210
225
  <ImageEditor
211
226
  id={ logoId }
212
227
  url={ logoUrl }
@@ -221,13 +236,16 @@ const SiteLogo = ( {
221
236
  setIsEditingImage( false );
222
237
  } }
223
238
  />
224
- ) : (
239
+ );
240
+ } else {
241
+ // Always render ResizableBox but disable resize functionality in contentOnly mode
242
+ imgEdit = (
225
243
  <ResizableBox
226
244
  size={ {
227
245
  width: currentWidth,
228
246
  height: currentHeight,
229
247
  } }
230
- showHandle={ isSelected }
248
+ showHandle={ isSelected && shouldShowCropAndDimensions }
231
249
  minWidth={ minWidth }
232
250
  maxWidth={ maxWidthBuffer }
233
251
  minHeight={ minHeight }
@@ -251,6 +269,7 @@ const SiteLogo = ( {
251
269
  { imgWrapper }
252
270
  </ResizableBox>
253
271
  );
272
+ }
254
273
 
255
274
  // Support the previous location for the Site Icon settings. To be removed
256
275
  // when the required WP core version for Gutenberg is >= 6.5.0.
@@ -371,15 +390,17 @@ const SiteLogo = ( {
371
390
  ) }
372
391
  </ToolsPanel>
373
392
  </InspectorControls>
374
- <BlockControls group="block">
375
- { canEditImage && ! isEditingImage && (
376
- <ToolbarButton
377
- onClick={ () => setIsEditingImage( true ) }
378
- icon={ crop }
379
- label={ __( 'Crop' ) }
380
- />
393
+ { canEditImage &&
394
+ ! isEditingImage &&
395
+ shouldShowCropAndDimensions && (
396
+ <BlockControls group="block">
397
+ <ToolbarButton
398
+ onClick={ () => setIsEditingImage( true ) }
399
+ icon={ crop }
400
+ label={ __( 'Crop' ) }
401
+ />
402
+ </BlockControls>
381
403
  ) }
382
- </BlockControls>
383
404
  { imgEdit }
384
405
  </>
385
406
  );
@@ -16,6 +16,8 @@ import {
16
16
  BlockControls,
17
17
  useBlockProps,
18
18
  HeadingLevelDropdown,
19
+ useBlockEditingMode,
20
+ store as blockEditorStore,
19
21
  } from '@wordpress/block-editor';
20
22
  import {
21
23
  ToggleControl,
@@ -36,9 +38,11 @@ export default function SiteTitleEdit( {
36
38
  insertBlocksAfter,
37
39
  } ) {
38
40
  const { level, levelOptions, textAlign, isLink, linkTarget } = attributes;
39
- const { canUserEdit, title } = useSelect( ( select ) => {
41
+ const { canUserEdit, title, isNavigationMode } = useSelect( ( select ) => {
40
42
  const { canUser, getEntityRecord, getEditedEntityRecord } =
41
43
  select( coreStore );
44
+ const { isNavigationMode: _isNavigationMode } =
45
+ select( blockEditorStore );
42
46
  const canEdit = canUser( 'update', {
43
47
  kind: 'root',
44
48
  name: 'site',
@@ -49,10 +53,12 @@ export default function SiteTitleEdit( {
49
53
  return {
50
54
  canUserEdit: canEdit,
51
55
  title: canEdit ? settings?.title : readOnlySettings?.name,
56
+ isNavigationMode: _isNavigationMode(),
52
57
  };
53
58
  }, [] );
54
59
  const { editEntityRecord } = useDispatch( coreStore );
55
60
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
61
+ const blockEditingMode = useBlockEditingMode();
56
62
 
57
63
  function setTitle( newTitle ) {
58
64
  editEntityRecord( 'root', 'site', undefined, {
@@ -103,21 +109,23 @@ export default function SiteTitleEdit( {
103
109
  );
104
110
  return (
105
111
  <>
106
- <BlockControls group="block">
107
- <HeadingLevelDropdown
108
- value={ level }
109
- options={ levelOptions }
110
- onChange={ ( newLevel ) =>
111
- setAttributes( { level: newLevel } )
112
- }
113
- />
114
- <AlignmentControl
115
- value={ textAlign }
116
- onChange={ ( nextAlign ) => {
117
- setAttributes( { textAlign: nextAlign } );
118
- } }
119
- />
120
- </BlockControls>
112
+ { ! isNavigationMode && blockEditingMode === 'default' && (
113
+ <BlockControls group="block">
114
+ <HeadingLevelDropdown
115
+ value={ level }
116
+ options={ levelOptions }
117
+ onChange={ ( newLevel ) =>
118
+ setAttributes( { level: newLevel } )
119
+ }
120
+ />
121
+ <AlignmentControl
122
+ value={ textAlign }
123
+ onChange={ ( nextAlign ) => {
124
+ setAttributes( { textAlign: nextAlign } );
125
+ } }
126
+ />
127
+ </BlockControls>
128
+ ) }
121
129
  <InspectorControls>
122
130
  <ToolsPanel
123
131
  label={ __( 'Settings' ) }
@@ -18,4 +18,7 @@ To evaluate if a social service should be added, contributors will consider the
18
18
 
19
19
  ## Adding custom social icons
20
20
 
21
- Starting from WordPress 6.9, it's possible to add custom social icons to your site. See: [#70261](https://github.com/WordPress/gutenberg/pull/70261).
21
+ Starting from WordPress 6.9, it's possible to add custom social icons to your site. See:
22
+
23
+ * Pull Request that introduced custom social icons - [#70261](https://github.com/WordPress/gutenberg/pull/70261).
24
+ * Developer Blog tutorial for custom social icons - [Registering custom social icons in WordPress 6.9](https://developer.wordpress.org/news/2025/08/registering-custom-social-icons-in-wordpress-6-9/).
@@ -274,7 +274,7 @@ function block_core_social_link_services( $service = '', $field = '' ) {
274
274
  'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.065,2a5.526,5.526,0,0,1,3.132.892A5.854,5.854,0,0,1,17.326,5.4a5.821,5.821,0,0,1,.351,2.33q0,.612-.117,2.487a.809.809,0,0,0,.365.091,1.93,1.93,0,0,0,.664-.176,1.93,1.93,0,0,1,.664-.176,1.3,1.3,0,0,1,.729.234.7.7,0,0,1,.351.6.839.839,0,0,1-.41.7,2.732,2.732,0,0,1-.9.41,3.192,3.192,0,0,0-.9.378.728.728,0,0,0-.41.618,1.575,1.575,0,0,0,.156.56,6.9,6.9,0,0,0,1.334,1.953,5.6,5.6,0,0,0,1.881,1.315,5.875,5.875,0,0,0,1.042.3.42.42,0,0,1,.365.456q0,.911-2.852,1.341a1.379,1.379,0,0,0-.143.507,1.8,1.8,0,0,1-.182.605.451.451,0,0,1-.429.241,5.878,5.878,0,0,1-.807-.085,5.917,5.917,0,0,0-.833-.085,4.217,4.217,0,0,0-.807.065,2.42,2.42,0,0,0-.82.293,6.682,6.682,0,0,0-.755.5q-.351.267-.755.527a3.886,3.886,0,0,1-.989.436A4.471,4.471,0,0,1,11.831,22a4.307,4.307,0,0,1-1.256-.176,3.784,3.784,0,0,1-.976-.436q-.4-.26-.749-.527a6.682,6.682,0,0,0-.755-.5,2.422,2.422,0,0,0-.807-.293,4.432,4.432,0,0,0-.82-.065,5.089,5.089,0,0,0-.853.1,5,5,0,0,1-.762.1.474.474,0,0,1-.456-.241,1.819,1.819,0,0,1-.182-.618,1.411,1.411,0,0,0-.143-.521q-2.852-.429-2.852-1.341a.42.42,0,0,1,.365-.456,5.793,5.793,0,0,0,1.042-.3,5.524,5.524,0,0,0,1.881-1.315,6.789,6.789,0,0,0,1.334-1.953A1.575,1.575,0,0,0,6,12.9a.728.728,0,0,0-.41-.618,3.323,3.323,0,0,0-.9-.384,2.912,2.912,0,0,1-.9-.41.814.814,0,0,1-.41-.684.71.71,0,0,1,.338-.593,1.208,1.208,0,0,1,.716-.241,1.976,1.976,0,0,1,.625.169,2.008,2.008,0,0,0,.69.169.919.919,0,0,0,.416-.091q-.117-1.849-.117-2.474A5.861,5.861,0,0,1,6.385,5.4,5.516,5.516,0,0,1,8.625,2.819,7.075,7.075,0,0,1,12.062,2Z"></path></svg>',
275
275
  ),
276
276
  'soundcloud' => array(
277
- 'name' => _x( 'Soundcloud', 'social link block variation name' ),
277
+ 'name' => _x( 'SoundCloud', 'social link block variation name' ),
278
278
  'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M8.9,16.1L9,14L8.9,9.5c0-0.1,0-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c-0.1,0-0.1,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1L8.3,14l0.1,2.1 c0,0.1,0,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1C8.8,16.3,8.9,16.3,8.9,16.1z M11.4,15.9l0.1-1.8L11.4,9c0-0.1,0-0.2-0.1-0.2 c0,0-0.1,0-0.1,0s-0.1,0-0.1,0c-0.1,0-0.1,0.1-0.1,0.2l0,0.1l-0.1,5c0,0,0,0.7,0.1,2v0c0,0.1,0,0.1,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.1 c0.1,0,0.1,0,0.2-0.1c0.1,0,0.1-0.1,0.1-0.2L11.4,15.9z M2.4,12.9L2.5,14l-0.2,1.1c0,0.1,0,0.1-0.1,0.1c0,0-0.1,0-0.1-0.1L2.1,14 l0.1-1.1C2.2,12.9,2.3,12.9,2.4,12.9C2.3,12.9,2.4,12.9,2.4,12.9z M3.1,12.2L3.3,14l-0.2,1.8c0,0.1,0,0.1-0.1,0.1 c-0.1,0-0.1,0-0.1-0.1L2.8,14L3,12.2C3,12.2,3,12.2,3.1,12.2C3.1,12.2,3.1,12.2,3.1,12.2z M3.9,11.9L4.1,14l-0.2,2.1 c0,0.1,0,0.1-0.1,0.1c-0.1,0-0.1,0-0.1-0.1L3.5,14l0.2-2.1c0-0.1,0-0.1,0.1-0.1C3.9,11.8,3.9,11.8,3.9,11.9z M4.7,11.9L4.9,14 l-0.2,2.1c0,0.1-0.1,0.1-0.1,0.1c-0.1,0-0.1,0-0.1-0.1L4.3,14l0.2-2.2c0-0.1,0-0.1,0.1-0.1C4.7,11.7,4.7,11.8,4.7,11.9z M5.6,12 l0.2,2l-0.2,2.1c0,0.1-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0c0,0,0-0.1,0-0.1L5.1,14l0.2-2c0,0,0-0.1,0-0.1s0.1,0,0.1,0 C5.5,11.9,5.5,11.9,5.6,12L5.6,12z M6.4,10.7L6.6,14l-0.2,2.1c0,0,0,0.1,0,0.1c0,0-0.1,0-0.1,0c-0.1,0-0.1-0.1-0.2-0.2L5.9,14 l0.2-3.3c0-0.1,0.1-0.2,0.2-0.2c0,0,0.1,0,0.1,0C6.4,10.7,6.4,10.7,6.4,10.7z M7.2,10l0.2,4.1l-0.2,2.1c0,0,0,0.1,0,0.1 c0,0-0.1,0-0.1,0c-0.1,0-0.2-0.1-0.2-0.2l-0.1-2.1L6.8,10c0-0.1,0.1-0.2,0.2-0.2c0,0,0.1,0,0.1,0S7.2,9.9,7.2,10z M8,9.6L8.2,14 L8,16.1c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2L7.5,14l0.1-4.4c0-0.1,0-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1c0.1,0,0.1,0,0.1,0.1 C8,9.6,8,9.6,8,9.6z M11.4,16.1L11.4,16.1L11.4,16.1z M9.7,9.6L9.8,14l-0.1,2.1c0,0.1,0,0.1-0.1,0.2s-0.1,0.1-0.2,0.1 c-0.1,0-0.1,0-0.1-0.1s-0.1-0.1-0.1-0.2L9.2,14l0.1-4.4c0-0.1,0-0.1,0.1-0.2s0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0.1S9.7,9.5,9.7,9.6 L9.7,9.6z M10.6,9.8l0.1,4.3l-0.1,2c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2-0.1c0,0-0.1-0.1-0.1-0.2L10,14 l0.1-4.3c0-0.1,0-0.1,0.1-0.2c0,0,0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0.1S10.6,9.7,10.6,9.8z M12.4,14l-0.1,2c0,0.1,0,0.1-0.1,0.2 c-0.1,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2l-0.1-1l-0.1-1l0.1-5.5v0c0-0.1,0-0.2,0.1-0.2 c0.1,0,0.1-0.1,0.2-0.1c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.1,0.2L12.4,14z M22.1,13.9c0,0.7-0.2,1.3-0.7,1.7c-0.5,0.5-1.1,0.7-1.7,0.7 h-6.8c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2V8.2c0-0.1,0.1-0.2,0.2-0.3c0.5-0.2,1-0.3,1.6-0.3c1.1,0,2.1,0.4,2.9,1.1 c0.8,0.8,1.3,1.7,1.4,2.8c0.3-0.1,0.6-0.2,1-0.2c0.7,0,1.3,0.2,1.7,0.7C21.8,12.6,22.1,13.2,22.1,13.9L22.1,13.9z"></path></svg>',
279
279
  ),
280
280
  'spotify' => array(
package/src/style.scss CHANGED
@@ -1,3 +1,4 @@
1
+ @import "./accordion/style.scss";
1
2
  @import "./archives/style.scss";
2
3
  @import "./avatar/style.scss";
3
4
  @import "./audio/style.scss";
@@ -35,8 +35,12 @@ const VideoSettings = ( { setAttributes, attributes } ) => {
35
35
  return ( newValue ) => {
36
36
  setAttributes( {
37
37
  [ attribute ]: newValue,
38
- // Set muted when autoplay changes
39
- ...( attribute === 'autoplay' && { muted: newValue } ),
38
+ // Set muted and playsInLine when autoplay changes
39
+ // playsInline is set to true when autoplay is true to support iOS devices
40
+ ...( attribute === 'autoplay' && {
41
+ muted: newValue,
42
+ playsInline: newValue,
43
+ } ),
40
44
  } );
41
45
  };
42
46
  };
@@ -135,9 +139,14 @@ const VideoSettings = ( { setAttributes, attributes } ) => {
135
139
  label={ __( 'Play inline' ) }
136
140
  onChange={ toggleFactory.playsInline }
137
141
  checked={ !! playsInline }
138
- help={ __(
139
- 'When enabled, videos will play directly within the webpage on mobile browsers, instead of opening in a fullscreen player.'
140
- ) }
142
+ disabled={ autoplay }
143
+ help={
144
+ autoplay
145
+ ? __( 'Play inline enabled because of Autoplay.' )
146
+ : __(
147
+ 'When enabled, videos will play directly within the webpage on mobile browsers, instead of opening in a fullscreen player.'
148
+ )
149
+ }
141
150
  />
142
151
  </ToolsPanelItem>
143
152
  <ToolsPanelItem