Skip to content

Commit d2f3661

Browse files
committed
Enhances patternkit display options
feat(patternkit.links, PatternkitBlock)
1 parent 7a0bd17 commit d2f3661

8 files changed

+52
-17
lines changed

js/patternkit.jsoneditor.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
document.getElementsByTagName('head')[0].appendChild(icons_element);
4040
editor_dom += '<link rel="stylesheet" id="icon_stylesheet" href="' + drupalSettings.patternkitEditor.iconStylesheet + '">';
4141
}
42-
editor_dom += '<div id="editor_holder" style="all: initial"></div>';
42+
editor_dom += '<div id="editor_holder"></div>';
4343
shadow.innerHTML += editor_dom;
4444

4545
var data = {};
@@ -54,7 +54,8 @@
5454
JSONEditor.defaults.options.iconlib = drupalSettings.patternkitEditor.icons;
5555
JSONEditor.defaults.options.keep_oneof_values = false;
5656
JSONEditor.defaults.options.disable_edit_json = true;
57-
JSONEditor.defaults.options.disable_collapse = true;
57+
JSONEditor.defaults.options.disable_collapse = false;
58+
JSONEditor.defaults.options.collapse = false;
5859
JSONEditor.defaults.options.ajax = true;
5960

6061
// Override how references are resolved.

patternkit.links.menu.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
patternkit.links.settings:
2+
title: Patternkit
3+
description: 'Configure Patternkit pattern library support.'
4+
route_name: patternkit.settings
5+
parent: system.admin_config_ui

patternkit.links.task.yml

+8-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ entity.patternkit_block.collection:
22
title: 'Patternkit library'
33
route_name: entity.patternkit_block.collection
44
base_route: block.admin_display
5-
patternkit.list_sub:
6-
title: Blocks
7-
route_name: entity.patternkit_block.collection
8-
parent_id: entity.patternkit_block.collection
9-
105
entity.patternkit_block.canonical:
116
title: Edit
127
route_name: entity.patternkit_block.canonical
@@ -15,3 +10,11 @@ entity.patternkit_block.delete_form:
1510
title: Delete
1611
route_name: entity.patternkit_block.delete_form
1712
base_route: entity.patternkit_block.canonical
13+
patternkit.list_sub:
14+
title: Blocks
15+
route_name: entity.patternkit_block.collection
16+
parent_id: entity.patternkit_block.collection
17+
patternkit.settings.json_settings:
18+
title: 'JSON Pattern Library Settings'
19+
route_name: patternkit.settings.json_settings
20+
base_route: patternkit.settings

patternkit.routing.yml

+10
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,13 @@ patternkit.settings:
3939
_admin_route: TRUE
4040
requirements:
4141
_permission: 'access administration pages'
42+
patternkit.settings.json_settings:
43+
path: '/admin/config/user-interface/patternkit/json'
44+
defaults:
45+
_form: '\Drupal\patternkit\Form\PatternLibraryJSONForm'
46+
_title: 'Patternkit JSON Library settings'
47+
_description: 'Configure Patternkit JSON Pattern Library Support.'
48+
options:
49+
_admin_route: TRUE
50+
requirements:
51+
_permission: 'access administration pages'

src/JSONSchemaEditorTrait.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public function schemaEditor(array $schema, PatternEditorConfig $config): array
105105
}
106106
// @todo Move to own JS file & Drupal Settings config var.
107107
$markup = <<<HTML
108-
<div id="editor-shadow-injection-target"></div>
108+
<div id="editor-shadow-injection-target" style="all: initial; background: white; display: inline-block; width: 100%;"></div>
109109
HTML;
110110

111111
return [

src/PatternLibraryJSONParserTrait.php

-4
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ public static function schemaDereference($properties, array &$metadata) {
4040
if ($property !== '$ref') {
4141
continue;
4242
}
43-
if (!isset($metadata[$value])) {
44-
unset($properties[$property]);
45-
continue;
46-
}
4743
$properties[$property] = 'api/patternkit/' . trim($value, '@');
4844
}
4945
return $properties;

src/Plugin/Block/PatternkitBlock.php

+23-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
* @Block(
2525
* id = "patternkit_block",
2626
* admin_label = @Translation("Patternkit block"),
27-
* category="Patternkit",
27+
* category = @Translation("Patternkit Reusable"),
2828
* deriver = "Drupal\patternkit\Plugin\Derivative\PatternkitBlock"
2929
* )
3030
*/
@@ -159,9 +159,12 @@ public function blockForm($form, FormStateInterface $form_state): array {
159159
return ['#markup' => $this->t('Unable to edit a Patternkit block when the pattern fails to load.')];
160160
}
161161
$form_state->set('pattern', $pattern);
162-
// Remove the title override fields.
163-
unset($form['label'],
164-
$form['label_display']);
162+
163+
$form['reusable'] = [
164+
'#type' => 'checkbox',
165+
'#title' => $this->t('Reusable'),
166+
'#default_value' => $configuration['reusable'] ?? FALSE,
167+
];
165168

166169
// @TODO: Re-enable the other formats like JSON and webcomponent.
167170
$form['presentation_style'] = [
@@ -231,6 +234,7 @@ public function blockSubmit($form, FormStateInterface $form_state) {
231234
$values = [
232235
'data' => $form_state->getValue('instance_config'),
233236
'info' => $form_state->getValue('label'),
237+
'reusable' => $form_state->getValue('reusable'),
234238
'published' => TRUE,
235239
];
236240
/** @var \Drupal\patternkit\Entity\PatternkitBlock $patternkit_block */
@@ -414,6 +418,21 @@ public function build() {
414418
return $content;
415419
}
416420

421+
/**
422+
* {@inheritDoc}
423+
*/
424+
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
425+
$form = parent::buildConfigurationForm($form, $form_state);
426+
// Remove the title override fields.
427+
unset($form['label_display']);
428+
$form['label']['#states'] = [
429+
'visible' => [
430+
':input[name="settings[reusable]"]' => ['checked' => TRUE],
431+
],
432+
];
433+
return $form;
434+
}
435+
417436
/**
418437
* Returns a new PatternkitBlock instance.
419438
*

src/Plugin/Derivative/PatternkitBlock.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Drupal\patternkit\PatternkitLibraryDiscoveryInterface;
1010
use Exception;
1111
use Symfony\Component\DependencyInjection\ContainerInterface;
12+
use function strstr;
1213

1314
class PatternkitBlock extends DeriverBase implements ContainerDeriverInterface {
1415

@@ -84,7 +85,7 @@ public function getDerivativeDefinitions($base_definition): array {
8485
'category' => t(
8586
'Patternkit:@lib/@category',
8687
[
87-
'@lib' => $pattern->library ?? 'patternkit',
88+
'@lib' => strstr($pattern_id, '.', TRUE) ?? 'patternkit',
8889
'@category' => $pattern->category ?? 'default',
8990
]
9091
),

0 commit comments

Comments
 (0)