PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.1.5
Tableberg – Simple Gutenberg Table Block v1.1.5
1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 trunk 0.0.2 0.2.1 0.3.2 0.3.3 0.4.1 0.5.0 0.5.1 0.5.2 0.5.3 0.5.4 0.5.5 0.5.6 0.5.7 All 42 releases
← All changes | renderer/Table/TableAttrs.php +49 -80 1.0.51.1.5 View file →
@@ -35,8 +35,18 @@
35 35 /** @var CellDefaults */
36 36 public $cellDefaults;
37 37
38 38 /**
39 + * Every attribute the table block carried, untouched. Pro registers
40 + * table-level attributes of its own, so its renderer reads them from
41 + * here rather than free having to know their names — mirrors
42 + * CellData->attrs.
43 + *
44 + * @var array<string, mixed>
45 + */
46 + public $attrs;
47 +
48 + /**
39 49 * @param array $data
40 50 * @return self
41 51 */
42 52 public static function from_array($data) {
@@ -43,8 +53,9 @@
43 53 $data = is_array($data) ? $data : [];
44 54 $defaults = Defaults::get_defaults();
45 55
46 56 $instance = new self();
57 + $instance->attrs = $data;
47 58 $instance->version = new NumberAttr(
48 59 getOrNull($data['version']),
49 60 $defaults['version']
50 61 );
@@ -136,13 +147,9 @@
136 147
137 148 $columns = [];
138 149
139 150 foreach ($data as $column => $column_config) {
140 - $columns[(int) $column] = ColumnConfig::from_array(
141 - $column_config,
142 - 'text',
143 - true
144 - );
151 + $columns[(int) $column] = ColumnConfig::from_array($column_config);
145 152 }
146 153
147 154 return $columns;
148 155 }
@@ -260,39 +267,8 @@
260 267 return $instance;
261 268 }
262 269 }
263 270
264 -class SearchConfig {
265 - /** @var BoolAttr */
266 - public $enabled;
267 -
268 - /** @var StringAttr */
269 - public $placeholder;
270 -
271 - /** @var StringAttr */
272 - public $highlightColor;
273 -
274 - /** @var StringAttr */
275 - public $position;
276 -
277 - /** @return self */
278 - public static function from_array($data) {
279 - $data = is_array($data) ? $data : [];
280 - $table_defaults = TableAttrs::get_table_defaults();
281 - $d = isset($table_defaults['search']) && is_array($table_defaults['search'])
282 - ? $table_defaults['search']
283 - : [];
284 -
285 - $instance = new self();
286 - $instance->enabled = new BoolAttr(getOrNull($data['enabled']), $d['enabled']);
287 - $instance->placeholder = new StringAttr(getOrNull($data['placeholder']), $d['placeholder']);
288 - $instance->highlightColor = new StringAttr(getOrNull($data['highlightColor']), $d['highlightColor']);
289 - $instance->position = new StringAttr(getOrNull($data['position']), $d['position'], ['left', 'right']);
290 -
291 - return $instance;
292 - }
293 -}
294 -
295 271 class ResponsiveBreakpointConfig {
296 272 /** @var BoolAttr */
297 273 public $enabled;
298 274
@@ -444,13 +420,23 @@
444 420
445 421 /** @var array<string, mixed>|null */
446 422 public $ribbon;
447 423
424 + /**
425 + * Every attribute the cell block carried, untouched. Pro registers cell
426 + * attributes of its own, so its renderer reads them from here rather
427 + * than free having to know their names.
428 + *
429 + * @var array<string, mixed>
430 + */
431 + public $attrs;
432 +
448 433 /** @return self */
449 434 public static function from_array($data) {
450 435 $data = is_array($data) ? $data : [];
451 436
452 437 $instance = new self();
438 + $instance->attrs = $data;
453 439 $instance->span = Span::from_array(getOrNull($data['span']));
454 440 $instance->className = new StringAttr(getOrNull($data['className']), '');
455 441 $instance->elements = [];
456 442
@@ -486,11 +472,8 @@
486 472
487 473 /** @var BoolAttr */
488 474 public $footerEnabled;
489 475
490 - /** @var BoolAttr */
491 - public $stickyHeader;
492 -
493 476 /** @var StringAttr */
494 477 public $caption;
495 478
496 479 /** @var StringAttr */
@@ -516,11 +499,8 @@
516 499
517 500 /** @var PaginationConfig */
518 501 public $pagination;
519 502
520 - /** @var SearchConfig */
521 - public $search;
522 -
523 503 /** @var ResponsiveConfig */
524 504 public $responsive;
525 505
526 506 /** @return self */
@@ -533,9 +513,8 @@
533 513 $instance->cols = new NumberAttr(getOrNull($data['cols']), $d['cols']);
534 514 $instance->className = new StringAttr(getOrNull($data['className']), '');
535 515 $instance->headerEnabled = new BoolAttr(getOrNull($data['headerEnabled']), $d['headerEnabled']);
536 516 $instance->footerEnabled = new BoolAttr(getOrNull($data['footerEnabled']), $d['footerEnabled']);
537 - $instance->stickyHeader = new BoolAttr(getOrNull($data['stickyHeader']), $d['stickyHeader']);
538 517 $instance->caption = new StringAttr(getOrNull($data['caption']), $d['caption']);
539 518 $instance->tableWidth = new StringAttr(
540 519 getOrNull($data['tableWidth']),
541 520 $d['tableWidth']
@@ -563,9 +542,8 @@
563 542 getOrNull($data['fixedColumnWidths']),
564 543 $d['fixedColumnWidths']
565 544 );
566 545 $instance->pagination = PaginationConfig::from_array(getOrNull($data['pagination']));
567 - $instance->search = SearchConfig::from_array(getOrNull($data['search']));
568 546 $instance->responsive = ResponsiveConfig::from_array(getOrNull($data['responsive']));
569 547
570 548 return $instance;
571 549 }
@@ -575,22 +553,28 @@
575 553 /** @var Sides */
576 554 public $padding;
577 555
578 556 /** @var StringAttr */
579 - public $orientation;
557 + public $elementGap;
580 558
581 559 /** @var StringAttr */
582 - public $elementGap;
560 + public $verticalAlign;
583 561
584 562 /** @var StringAttr */
585 - public $wrap;
563 + public $backgroundColor;
586 564
587 565 /** @var StringAttr */
588 - public $verticalAlign;
566 + public $headerBackgroundColor;
589 567
590 568 /** @var StringAttr */
591 - public $backgroundColor;
569 + public $footerBackgroundColor;
592 570
571 + /** @var StringAttr */
572 + public $evenRowBackgroundColor;
573 +
574 + /** @var StringAttr */
575 + public $oddRowBackgroundColor;
576 +
593 577 /** @var Sides */
594 578 public $border;
595 579
596 580 /** @var Corners */
@@ -605,22 +589,12 @@
605 589 $d = TableAttrs::get_cell_style_defaults();
606 590
607 591 $instance = new self();
608 592 $instance->padding = Sides::from_array(getOrNull($data['padding']), $d['padding']);
609 - $instance->orientation = new StringAttr(
610 - getOrNull($data['orientation']),
611 - $d['orientation'],
612 - ['vertical', 'horizontal']
613 - );
614 593 $instance->elementGap = new StringAttr(
615 594 getOrNull($data['elementGap']),
616 595 $d['elementGap']
617 596 );
618 - $instance->wrap = new StringAttr(
619 - getOrNull($data['wrap']),
620 - $d['wrap'],
621 - ['wrap', 'nowrap']
622 - );
623 597 $instance->verticalAlign = new StringAttr(
624 598 getOrNull($data['verticalAlign']),
625 599 $d['verticalAlign'],
626 600 ['top', 'middle', 'bottom']
@@ -625,8 +599,12 @@
625 599 $d['verticalAlign'],
626 600 ['top', 'middle', 'bottom']
627 601 );
628 602 $instance->backgroundColor = new StringAttr(getOrNull($data['backgroundColor']), $d['backgroundColor']);
603 + $instance->headerBackgroundColor = new StringAttr(getOrNull($data['headerBackgroundColor']), $d['headerBackgroundColor']);
604 + $instance->footerBackgroundColor = new StringAttr(getOrNull($data['footerBackgroundColor']), $d['footerBackgroundColor']);
605 + $instance->evenRowBackgroundColor = new StringAttr(getOrNull($data['evenRowBackgroundColor']), $d['evenRowBackgroundColor']);
606 + $instance->oddRowBackgroundColor = new StringAttr(getOrNull($data['oddRowBackgroundColor']), $d['oddRowBackgroundColor']);
629 607 $instance->border = Sides::from_array(getOrNull($data['border']), $d['border']);
630 608 $instance->borderRadius = Corners::from_array(getOrNull($data['borderRadius']), $d['borderRadius']);
631 609 $instance->cells = is_array(getOrNull($data['cells'])) ? $data['cells'] : $d['cells'];
632 610
@@ -661,36 +639,17 @@
661 639 }
662 640
663 641 class ColumnConfig {
664 642 /** @var StringAttr|null */
665 - public $sortable;
666 -
667 - /** @var StringAttr|null */
668 643 public $width;
669 644
670 - /**
671 - * @param array|null $data
672 - * @param string $defaultSortable
673 - * @param bool $allowNull
674 - * @return self
675 - */
676 - public static function from_array($data, $defaultSortable = 'text', $allowNull = false) {
645 + /** @return self */
646 + public static function from_array($data) {
677 647 $data = is_array($data) ? $data : [];
678 - $sortable = getOrNull($data['sortable']);
679 648 $width = getOrNull($data['width']);
680 649
681 650 $instance = new self();
682 651
683 - if ($allowNull && ($sortable === null || $sortable === '')) {
684 - $instance->sortable = null;
685 - } else {
686 - $instance->sortable = new StringAttr(
687 - $sortable,
688 - $defaultSortable,
689 - ['text', 'number', 'date']
690 - );
691 - }
692 -
693 652 if ($width === null || $width === '') {
694 653 $instance->width = null;
695 654 } else {
696 655 $instance->width = new StringAttr($width, '');
@@ -704,8 +663,17 @@
704 663 /** @var StringAttr|null */
705 664 public $height;
706 665
707 666 /**
667 + * Every attribute the row block carried, untouched. Pro registers row
668 + * attributes of its own (e.g. backgroundColor), so its renderer reads
669 + * them from here rather than free having to know their names.
670 + *
671 + * @var array<string, mixed>
672 + */
673 + public $attrs;
674 +
675 + /**
708 676 * @param array|null $data
709 677 * @return self
710 678 */
711 679 public static function from_array($data) {
@@ -712,8 +680,9 @@
712 680 $data = is_array($data) ? $data : [];
713 681 $height = getOrNull($data['height']);
714 682
715 683 $instance = new self();
684 + $instance->attrs = $data;
716 685
717 686 if ($height === null || $height === '') {
718 687 $instance->height = null;
719 688 } else {