Merge branch 'release/0.17.2'

This commit is contained in:
vnmedeiros 2020-12-10 16:20:41 -03:00
commit f5545ffc9f
83 changed files with 4154 additions and 2180 deletions

View File

@ -124,7 +124,8 @@
text-decoration: none;
padding: 8px 16px;
display: block;
line-height: 1.2em; }
line-height: 1.2em;
word-break: break-word; }
.wp-block-tainacan-carousel-collections-list .tainacan-carousel .swiper-container a > img {
width: 100%;
height: auto; }

File diff suppressed because one or more lines are too long

View File

@ -131,7 +131,8 @@
text-decoration: none;
padding: 8px 16px;
display: block;
line-height: 1.2em; }
line-height: 1.2em;
word-break: break-word; }
.wp-block-tainacan-carousel-items-list .tainacan-carousel .swiper-container a > img {
width: 100%;
height: auto; }

File diff suppressed because one or more lines are too long

View File

@ -124,7 +124,8 @@
text-decoration: none;
padding: 8px 16px;
display: block;
line-height: 1.2em; }
line-height: 1.2em;
word-break: break-word; }
.wp-block-tainacan-carousel-terms-list .tainacan-carousel .swiper-container a > img {
width: 100%;
height: auto; }

File diff suppressed because one or more lines are too long

View File

@ -84,6 +84,7 @@
.wp-block-tainacan-modal .modal-search-area {
display: flex;
justify-content: center;
align-items: flex-end;
margin-bottom: 6px; }
.wp-block-tainacan-modal .modal-search-area .components-base-control {
width: 60%; }
@ -128,7 +129,7 @@
padding-left: 1px; }
.wp-block-tainacan-modal .modal-checkbox-list svg.components-checkbox-control__checked,
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field svg.components-checkbox-control__checked {
fill: black; }
fill: inherit; }
.wp-block-tainacan-modal .modal-checkbox-list .modal-checkbox-list-item,
.wp-block-tainacan-modal .modal-checkbox-list .components-radio-control__option,
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field .modal-checkbox-list-item,

View File

@ -1,6 +1,6 @@
{
"version": 3,
"mappings": "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",
"mappings": "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",
"sources": ["../../views/gutenberg-blocks/gutenberg-blocks-style.scss","../../views/gutenberg-blocks/gutenberg-blocks-variables.scss"],
"names": [],
"file": "tainacan-gutenberg-block-common-styles.css"

View File

@ -179,47 +179,6 @@
width: 100%;
border: 1px solid var(--tainacan-block-gray3, #cbcbcb);
box-shadow: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid {
padding: 0;
flex-wrap: wrap;
display: flex;
display: -ms-grid;
display: grid;
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(auto-fill, 220px);
grid-gap: 0px;
justify-content: space-evenly;
list-style-type: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item {
position: relative;
display: block;
margin: 12px;
width: 185px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item a {
color: var(--tainacan-block-gray5, #454647);
border: none;
font-weight: bold;
line-height: normal; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item img {
height: auto;
width: 185px;
min-width: 185px;
padding: 0px;
margin-bottom: 0.5em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item span.facet-item-count,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item span.facet-item-count {
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-without-image img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-without-image img {
display: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:hover a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; }
.wp-block-tainacan-facets-list ul.facets-list-edit li.facet-list-item {
display: flex;
align-items: flex-start; }
@ -250,34 +209,288 @@
.wp-block-tainacan-facets-list ul.facets-list-edit li.facet-list-item:hover button:hover {
background-color: white !important;
border: 1px solid var(--tainacan-block-gray3, #cbcbcb) !important; }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid {
grid-template-columns: repeat(auto-fill, 100%); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item {
width: 100%; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item img {
width: 100%; } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid {
padding: 0;
flex-wrap: wrap;
display: flex;
display: -ms-grid;
display: grid;
justify-content: space-evenly;
list-style-type: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7) {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(7, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(6, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5 {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4 {
-ms-grid-columns: 220px 220px 220px 220px;
grid-template-columns: repeat(4, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3 {
-ms-grid-columns: 220px 220px 220px;
grid-template-columns: repeat(3, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-2 {
-ms-grid-columns: 220px 220px;
grid-template-columns: repeat(2, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-1,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-1 {
-ms-grid-columns: 220px;
grid-template-columns: repeat(1, 1fr); }
@media only screen and (max-width: 1600px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(6, 1fr); } }
@media only screen and (max-width: 1400px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5 {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr); } }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4 {
-ms-grid-columns: 220px 220px 220px 220px;
grid-template-columns: repeat(4, 1fr); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3 {
-ms-grid-columns: 220px 220px 220px;
grid-template-columns: repeat(3, 1fr); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-2 {
-ms-grid-columns: 220px 220px;
grid-template-columns: repeat(2, 1fr); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-2, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-1,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-1 {
-ms-grid-columns: 220px;
grid-template-columns: repeat(1, 1fr); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item {
position: relative;
display: block;
width: 100%;
flex-basis: 220px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item a {
color: var(--tainacan-block-gray5, #454647);
border: none;
font-weight: bold;
line-height: normal;
display: block; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) img {
height: auto;
width: 100%;
padding: 0px;
margin-bottom: 0.5em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) span.facet-item-count,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) span.facet-item-count {
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span {
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.75);
opacity: 0;
padding: 8px 12px;
word-break: break-word;
transition: opacity 0.5s ease;
max-width: 100%; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:first-of-type,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:first-of-type {
left: 0;
bottom: 0;
border-top-right-radius: 2px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:last-of-type,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:last-of-type {
right: 0;
top: 0;
border-bottom-left-radius: 2px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:hover.facet-with-name-inside-image a span,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:hover.facet-with-name-inside-image a span {
opacity: 1; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:hover a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item svg,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item svg {
fill: var(--tainacan-block-gray4, #555758);
margin-left: auto;
overflow: visible; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list {
padding: 0;
display: flex;
padding-left: 0;
margin: 0;
margin-left: 0;
flex-wrap: wrap;
align-items: center;
display: flex;
display: -ms-grid;
display: grid;
align-items: self-start;
list-style-type: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(7, auto); }
@media only screen and (max-width: 1600px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(6, auto); } }
@media only screen and (max-width: 1400px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(5, auto); } }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(4, auto); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(6, auto); }
@media only screen and (max-width: 1400px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(5, auto); } }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(4, auto); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(5, auto); }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(4, auto); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(4, auto); }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-3 {
grid-template-columns: repeat(3, auto); }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-3 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-3 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-2 {
grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-2 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-1,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-1 {
grid-template-columns: repeat(1, auto); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list > div,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list > div {
flex-basis: 220px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item {
position: relative;
margin: 12px 12px 24px 12px;
margin-bottom: 12px;
display: inline-block;
padding: 12px 12px 24px 12px;
margin-bottom: 0px;
min-height: 54px;
min-width: calc(20% - 24px);
width: calc(20% - 24px); }
min-width: 100%;
width: 100%; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item a {
color: var(--tainacan-block-gray5, #454647);
line-height: normal;
height: auto;
display: flex;
align-items: center;
@ -290,12 +503,18 @@
min-width: 54px;
padding: 0px;
margin-right: 20px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item svg,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item svg {
fill: var(--tainacan-block-gray4, #555758);
margin-left: auto;
overflow: visible; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image {
min-height: 0.875em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image a {
height: 0.875em; }
height: auto;
min-height: 0.875em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image img {
display: none; }
@ -307,26 +526,29 @@
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item:hover a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; }
@media only screen and (max-width: 1600px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item {
min-width: calc(25% - 24px);
width: calc(25% - 24px); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item {
min-width: calc(33.333% - 24px);
width: calc(33.333% - 24px); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item {
min-width: calc(50% - 24px);
width: calc(50% - 24px); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item {
min-width: calc(100% - 24px);
width: calc(100% - 24px); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-term-with-children,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-term-with-children {
font-weight: bold !important;
cursor: pointer; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets {
padding-left: 7px;
margin: 12px 0px -12px 0px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets img {
width: 36px;
min-width: 36px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets .facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets .facet-list-item {
padding: 12px;
font-weight: normal; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets .no-child-facet-found,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets .no-child-facet-found {
font-weight: normal;
font-style: italic;
font-size: 0.875em;
margin: 0;
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud {
padding: 0;
@ -352,15 +574,28 @@
min-width: 54px;
padding: 0px;
margin-right: 20px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item svg,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item svg {
fill: var(--tainacan-block-gray4, #555758);
margin-left: auto;
overflow: visible;
margin-bottom: -12px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item.facet-without-image img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item.facet-without-image img {
display: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item span.facet-item-count,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item span.facet-item-count {
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover a {
color: var(--tainacan-block-primary, #298596);
text-decoration: none;
cursor: pointer; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; }
.wp-block-tainacan-facets-list .show-more-button {
margin: 12px auto;
@ -376,4 +611,16 @@
.wp-block-tainacan-facets-list .show-more-button i > svg {
fill: white; }
.child-reveal-enter-active {
overflow: hidden;
animation-name: filter-item-in;
animation-duration: 0.1s;
animation-timing-function: ease; }
.child-reveal-leave-active {
overflow: hidden;
animation-name: filter-item-out;
animation-duration: 0.1s;
animation-timing-function: ease; }
/*# sourceMappingURL=tainacan-gutenberg-block-facets-list.css.map */

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
.wp-block-tainacan-search-bar .tainacan-search-container {
width: 100%; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block {
height: 32px;
height: 2em;
max-width: 100%;
display: flex;
justify-content: center;
@ -29,7 +29,9 @@
margin: 0;
border: none;
padding: 4px 0.75em;
text-overflow: ellipsis; }
text-overflow: ellipsis;
overflow: hidden;
font-size: 0.875em; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button {
height: auto !important;
display: flex;
@ -41,8 +43,9 @@
padding: 4px 1em;
font-size: 1em; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button .icon {
height: 28px; }
height: 1.75em; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button .icon svg {
transform: scale(1);
fill: var(--tainacan-block-primary, #298596); }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block {
@ -89,12 +92,12 @@
.wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block input#tainacan-search-bar-block_input::placeholder {
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block button {
margin-right: 0.75em;
margin-right: 12px;
padding: 0 0.35em;
min-height: 28px;
min-height: 1.75em;
z-index: 2;
border: none;
background: transparent;
background: transparent !important;
cursor: pointer; }
.wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block button .icon svg {
fill: var(--tainacan-block-gray3, #cbcbcb);
@ -124,7 +127,7 @@
fill: var(--tainacan-block-gray2, #dbdbdb) !important; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block {
width: 100%;
height: 53px;
height: 3.3125em;
display: flex;
flex-direction: row;
border: none; }
@ -132,29 +135,29 @@
border: none; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block:hover input#tainacan-search-bar-block_input {
width: 100%;
padding-right: 52px;
padding-left: 24px;
padding-right: 3.25em;
padding-left: 1.625em;
border-width: 0; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input {
width: 0%;
min-width: 0%;
border-radius: 28px;
margin-right: -56px;
padding-right: 27px;
padding-left: 26px;
border-radius: 3.3125em;
margin-right: -3.5em;
padding-right: 1.6875em;
padding-left: 1.625em;
font-size: 1em;
border-width: 0;
background: var(--tainacan-block-gray1, #f2f2f2);
transition: width 0.5s ease-in, padding 0.5s ease-in; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:focus, .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:active, .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:hover {
width: 100%;
padding-right: 52px;
padding-left: 24px;
padding-right: 3.25em;
padding-left: 1.625em;
border-width: 0; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block button {
margin-left: 0.875em;
padding: 0 0.35em;
min-height: 28px;
min-height: 1.75em;
z-index: 2;
border: none;
background: transparent;
@ -165,38 +168,38 @@
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block button:hover {
background: transparent !important; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container:not(.is-aligned-right):not(.is-aligned-left) .tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 53px);
width: calc(100% - 4.1667vw - 53px);
width: calc(100% - var(--tainacan-one-column) - 3.3125em);
width: calc(100% - 4.1667vw - 3.3125em);
bottom: calc(-50% + 38px);
position: absolute; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container:not(.is-aligned-right):not(.is-aligned-left) .search-bar-collection-header-title {
margin-bottom: 26px; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-right .tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 26px);
width: calc(100% - 4.1667vw - 26px);
width: calc(100% - var(--tainacan-one-column) - 1.625em);
width: calc(100% - 4.1667vw - 1.625em);
top: calc(-50% + 26px);
right: calc(var(--tainacan-one-column) + 26px);
right: calc(4.1667vw + 26px);
right: calc(var(--tainacan-one-column) + 1.625em);
right: calc(4.1667vw + 1.625em);
position: absolute; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-left .tainacan-search-container {
width: calc(100% - 1em - 26px);
width: calc(100% - 1em - 1.625em);
top: calc(-50% + 26px);
left: calc(var(--tainacan-one-column) + 26px);
left: calc(4.1667vw + 26px);
left: calc(var(--tainacan-one-column) + 1.625em);
left: calc(4.1667vw + 1.625em);
position: absolute; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container #tainacan-search-bar-block input#tainacan-search-bar-block_input {
background: white;
border-width: 3px;
border-style: solid;
margin-right: -56px;
padding-right: 24px;
padding-left: 24px; }
margin-right: -3.5em;
padding-right: 1.5em;
padding-left: 1.5em; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container #tainacan-search-bar-block input#tainacan-search-bar-block_input:hover {
border-width: 3px !important; }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 53px) !important;
width: calc(100% - 4.1667vw - 53px) !important;
width: calc(100% - var(--tainacan-one-column) - 3.3125em) !important;
width: calc(100% - 4.1667vw - 3.3125em) !important;
bottom: calc(-50% + 38px) !important;
position: absolute !important; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-right .search-bar-collection-header-title, .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-left .search-bar-collection-header-title {

View File

@ -1,6 +1,6 @@
{
"version": 3,
"mappings": "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",
"mappings": "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",
"sources": ["../../views/gutenberg-blocks/tainacan-items/search-bar/search-bar.scss"],
"names": [],
"file": "tainacan-gutenberg-block-search-bar.css"

File diff suppressed because one or more lines are too long

View File

@ -141,9 +141,15 @@ class REST_Facets_Controller extends REST_Controller {
$second_arg = $val['taxonomy'];
}
$entity = $metadatum_type_object->get_repository()->fetch( (int) $val['value'], $second_arg );
if ($entity) {
$val['entity'] = $entity->_toArray();
}
$add_attt_item = function($array_item, $item) {
$array_item['thumbnail'] = $item->get_thumbnail();
return $array_item;
};
add_filter('tainacan-item-to-array', $add_attt_item, 10, 2);
$val['entity'] = $entity->_toArray();
remove_filter( 'tainacan-item-to-array', $add_attt_item, 10);
return $val;
}, $all_values['values']);
}

View File

@ -183,11 +183,10 @@ class REST_Importers_Controller extends REST_Controller {
* @return string|\WP_Error|\WP_REST_Response
*/
public function update_item( $request ) {
$session_id = $request['session_id'];
$session_id = $request['session_id'];
$body = json_decode($request->get_body(), true);
$body = json_decode($request->get_body(), true);
if(!empty($body)){
if (!empty($body)) {
$attributes = [];
foreach ($body as $att => $value){
@ -197,10 +196,8 @@ class REST_Importers_Controller extends REST_Controller {
global $Tainacan_Importer_Handler;
$importer = $Tainacan_Importer_Handler->get_importer_instance_by_session_id($session_id);
if($importer) {
foreach ($body as $att => $value){
if ($importer) {
foreach ($body as $att => $value) {
if ($att == 'collection') {
if (is_array($value) && isset($value['id'])) {
if ($importer->add_collection($value) === false ) {
@ -383,8 +380,5 @@ class REST_Importers_Controller extends REST_Controller {
return new \WP_REST_Response( $importers, 200 );
}
}
?>

View File

@ -482,8 +482,12 @@ class REST_Metadata_Controller extends REST_Controller {
$attributes = [];
$metadatum_id = $request['metadatum_id'];
$confirm_repository = false;
foreach ($body as $att => $value){
if ($att === "repository_level" && $value === "yes") {
$confirm_repository = true;
continue;
}
$attributes[$att] = $value;
}
@ -491,25 +495,28 @@ class REST_Metadata_Controller extends REST_Controller {
$error_message = __('Metadata with this ID was not found', 'tainacan');
if($metadatum){
if ($metadatum) {
// These conditions are for verify if endpoints are used correctly
if(!$collection_id && $metadatum->get_collection_id() !== 'default') {
$error_message = __('This metadata is not a default metadata', 'tainacan');
return new \WP_REST_Response( [
'error_message' => $error_message,
'metadatum_id' => $metadatum_id
'metadatum_id' => $metadatum_id
] );
} elseif ($collection_id && $metadatum->get_collection_id() === 'default'){
$error_message = __('This metadata is not a collection metadata', 'tainacan');
return new \WP_REST_Response( [
'error_message' => $error_message,
'metadatum_id' => $metadatum_id
'metadatum_id' => $metadatum_id
] );
}
if (isset($request['repository_level']) && $confirm_repository) {
$attributes['collection_id'] = "default";
}
$prepared_metadata = $this->prepare_item_for_updating($metadatum, $attributes);
if($prepared_metadata->validate()){
@ -523,7 +530,7 @@ class REST_Metadata_Controller extends REST_Controller {
return new \WP_REST_Response([
'error_message' => __('One or more values are invalid.', 'tainacan'),
'errors' => $prepared_metadata->get_errors(),
'metadatum' => $this->prepare_item_for_response($prepared_metadata, $request)
'metadatum' => $this->prepare_item_for_response($prepared_metadata, $request)
], 400);
}

View File

@ -53,7 +53,7 @@ class REST_Roles_Controller extends REST_Controller {
),
'schema' => [$this, 'get_schema']
));
register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<role>[a-z-]+)', array(
register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<role>[a-z0-9-_]+)', array(
array(
'methods' => \WP_REST_Server::DELETABLE,
'callback' => array($this, 'delete_item'),
@ -119,6 +119,14 @@ class REST_Roles_Controller extends REST_Controller {
$role_slug = sanitize_title($name);
// allow restricted name format ...
if( preg_match('/^[a-zA-Z0-9-_ ]*$/', $name) == false ) {
return new \WP_REST_Response([
'error_message' => __('This role name is not allowed. Use only letters, numbers, underscore and hyphen', 'tainacan'),
'error' => $name
], 400);
}
// avoid confusion ...
if ( in_array($role_slug, $this->core_roles) ) {
return new \WP_REST_Response([
@ -236,6 +244,14 @@ class REST_Roles_Controller extends REST_Controller {
if ( isset($request['name']) ) {
$name = esc_html( esc_sql( $request['name'] ) );
// allow restricted name format ...
if( preg_match('/^[a-zA-Z0-9-_ ]*$/', $name) == false ) {
return new \WP_REST_Response([
'error_message' => __('This role name is not allowed. Use only letters, numbers, underscore and hyphen', 'tainacan'),
'error' => $name
], 400);
}
// the slug remains the same
\wp_roles()->roles[$role_slug]['name'] = $name;
update_option( \wp_roles()->role_key, \wp_roles()->roles );

View File

@ -9,35 +9,35 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
*/
class Metadatum extends Entity {
protected
$name,
$slug,
$order,
$parent,
$description,
$required,
$multiple,
$name,
$slug,
$order,
$parent,
$description,
$required,
$multiple,
$display,
$cardinality,
$collection_key,
$mask,
$default_value,
$metadata_type,
$metadata_type_options;
$cardinality,
$collection_key,
$mask,
$default_value,
$metadata_type,
$metadata_type_options;
// Collection getter and setter declared here
use \Tainacan\Traits\Entity_Collection_Relation;
// Collection getter and setter declared here
use \Tainacan\Traits\Entity_Collection_Relation;
public $enabled_for_collection = true;
static $post_type = 'tainacan-metadatum';
static $post_type = 'tainacan-metadatum';
/**
/**
* {@inheritDoc}
* @see \Tainacan\Entities\Entity::capability_type
* @see \Tainacan\Entities\Entity::capability_type
* @var string
*/
protected static $capability_type = ['tainacan-metadatum', 'tainacan-metadata'];
protected static $capability_type = ['tainacan-metadatum', 'tainacan-metadata'];
/**
@ -66,332 +66,332 @@ class Metadatum extends Entity {
return $this->get_mapped_property('display');
}
/**
* Return the metadatum name
*
* @return string
*/
function get_name() {
return $this->get_mapped_property('name');
}
/**
* Get metadatum slug
*
* @return string
*/
function get_slug() {
return $this->get_mapped_property('slug');
}
/**
* Return the metadatum name
*
* @return string
*/
function get_name() {
return $this->get_mapped_property('name');
}
/**
* Get metadatum slug
*
* @return string
*/
function get_slug() {
return $this->get_mapped_property('slug');
}
/**
* Return the metadatum order type
*
* @return string
*/
function get_order() {
return $this->get_mapped_property('order');
}
/**
* Return the metadatum order type
*
* @return string
*/
function get_order() {
return $this->get_mapped_property('order');
}
/**
* Return the parent ID
*
* @return string
*/
function get_parent() {
return $this->get_mapped_property('parent');
}
/**
* Return the parent ID
*
* @return string
*/
function get_parent() {
return $this->get_mapped_property('parent');
}
/**
* Return the metadatum description
*
* @return string
*/
function get_description() {
return $this->get_mapped_property('description');
}
/**
* Return the metadatum description
*
* @return string
*/
function get_description() {
return $this->get_mapped_property('description');
}
/**
* Return if is a required metadatum
*
* @return boolean
*/
function get_required(){
return $this->get_mapped_property('required');
}
/**
* Return if is a multiple metadatum
*
* @return boolean
*/
function get_multiple(){
return $this->get_mapped_property('multiple');
}
/**
* Return the cardinality
*
* @return string
*/
function get_cardinality(){
return $this->get_mapped_property('cardinality');
}
/**
* Return if metadatum is key
*
* @return boolean
*/
function get_collection_key(){
return $this->get_mapped_property('collection_key');
}
/**
* Return if is a required metadatum
*
* @return boolean
*/
function get_required(){
return $this->get_mapped_property('required');
}
/**
* Return if is a multiple metadatum
*
* @return boolean
*/
function get_multiple(){
return $this->get_mapped_property('multiple');
}
/**
* Return the cardinality
*
* @return string
*/
function get_cardinality(){
return $this->get_mapped_property('cardinality');
}
/**
* Return if metadatum is key
*
* @return boolean
*/
function get_collection_key(){
return $this->get_mapped_property('collection_key');
}
/**
* Return the mask
*
* @return string
*/
function get_mask(){
return $this->get_mapped_property('mask');
}
/**
* Return the mask
*
* @return string
*/
function get_mask(){
return $this->get_mapped_property('mask');
}
/**
* Return the metadatum default value
*
* @return string || integer
*/
function get_default_value(){
return $this->get_mapped_property('default_value');
}
/**
* Return the metadatum default value
*
* @return string || integer
*/
function get_default_value(){
return $this->get_mapped_property('default_value');
}
/**
* Return the an object child of \Tainacan\metadatum_Types\Metadata_Type with options
*
* @return \Tainacan\Metadata_Types\Metadata_Type The metadatum type class with filled options
*/
function get_metadata_type_object(){
$class_name = $this->get_metadata_type();
/**
* Return the an object child of \Tainacan\metadatum_Types\Metadata_Type with options
*
* @return \Tainacan\Metadata_Types\Metadata_Type The metadatum type class with filled options
*/
function get_metadata_type_object(){
$class_name = $this->get_metadata_type();
if( !class_exists( $class_name ) ) {
$class_name = "Tainacan\\Metadata_Types\\Text";
if( !class_exists( $class_name ) ){
return null;
}
}
if( !class_exists( $class_name ) ) {
$class_name = "Tainacan\\Metadata_Types\\Text";
if( !class_exists( $class_name ) ){
return null;
}
}
$object_type = new $class_name();
$object_type->set_options( $this->get_mapped_property('metadata_type_options') );
return $object_type;
}
$object_type = new $class_name();
$object_type->set_options( $this->get_mapped_property('metadata_type_options') );
return $object_type;
}
/**
* Return the class name for the metadatum type
*
* @return string The
*/
function get_metadata_type(){
return $this->get_mapped_property('metadata_type');
}
/**
* Return the class name for the metadatum type
*
* @return string The
*/
function get_metadata_type(){
return $this->get_mapped_property('metadata_type');
}
/**
* Return the actual options for the current metadatum type
*
* @return array Configurations for the metadatum type object
*/
function get_metadata_type_options(){
/**
* Return the actual options for the current metadatum type
*
* @return array Configurations for the metadatum type object
*/
function get_metadata_type_options(){
$object = $this->get_metadata_type_object();
if ($object) {
return $object->get_options(); // merge with dedault metadata type options
}
if ($object) {
return $object->get_options(); // merge with dedault metadata type options
}
return $this->get_mapped_property('metadata_type_options');
}
}
/**
* Return true if this metadatum allow community suggestions, false otherwise
* @return bool
*/
function get_accept_suggestion() {
return $this->get_mapped_property('accept_suggestion');
}
/**
* Return array of exposer mapping configurations
* @return array
*/
public function get_exposer_mapping() {
return $this->get_mapped_property('exposer_mapping');
}
/**
* Return the semantic_uri
*
* @return string
*/
function get_semantic_uri(){
return $this->get_mapped_property('semantic_uri');
}
/**
* Return true if this metadatum allow community suggestions, false otherwise
* @return bool
*/
function get_accept_suggestion() {
return $this->get_mapped_property('accept_suggestion');
}
/**
* Return array of exposer mapping configurations
* @return array
*/
public function get_exposer_mapping() {
return $this->get_mapped_property('exposer_mapping');
}
/**
* Return the semantic_uri
*
* @return string
*/
function get_semantic_uri(){
return $this->get_mapped_property('semantic_uri');
}
/**
* Set the metadatum name
*
* @param [string] $value
* @return void
*/
function set_name($value) {
$this->set_mapped_property('name', $value);
}
/**
* Set the metadatum name
*
* @param [string] $value
* @return void
*/
function set_name($value) {
$this->set_mapped_property('name', $value);
}
/**
* Set the metadatum slug
*
* If you dont set the metadatum slug, it will be set automatically based on the name and
* following WordPress default behavior of creating slugs for posts.
*
* If you set the slug for an existing one, WordPress will append a number at the end of in order
* to make it unique (e.g slug-1, slug-2)
*
* @param [string] $value
* @return void
*/
function set_slug($value) {
$this->set_mapped_property('slug', $value);
}
/**
* Set the metadatum slug
*
* If you dont set the metadatum slug, it will be set automatically based on the name and
* following WordPress default behavior of creating slugs for posts.
*
* If you set the slug for an existing one, WordPress will append a number at the end of in order
* to make it unique (e.g slug-1, slug-2)
*
* @param [string] $value
* @return void
*/
function set_slug($value) {
$this->set_mapped_property('slug', $value);
}
/**
* Set manually the order of the metadatum
*
* @param [string] $value
* @return void
*/
function set_order($value) {
$this->set_mapped_property('order', $value);
}
/**
* Set manually the order of the metadatum
*
* @param [string] $value
* @return void
*/
function set_order($value) {
$this->set_mapped_property('order', $value);
}
/**
* Set the metadatum parent ID
*
* @param [integer] $value The ID from parent
* @return void
*/
function set_parent($value) {
$this->set_mapped_property('parent', $value);
}
/**
* Set the metadatum parent ID
*
* @param [integer] $value The ID from parent
* @return void
*/
function set_parent($value) {
$this->set_mapped_property('parent', $value);
}
/**
* Set metadatum description
*
* @param [string] $value The text description
* @return void
*/
function set_description($value) {
$this->set_mapped_property('description', $value);
}
/**
* Set metadatum description
*
* @param [string] $value The text description
* @return void
*/
function set_description($value) {
$this->set_mapped_property('description', $value);
}
/**
* Allow the metadatum be required
*
* @param [boolean] $value
* @return void
*/
function set_required( $value ){
$this->set_mapped_property('required', $value);
}
/**
* Allow multiple metadata
*
* @param [boolean] $value
* @return void
*/
function set_multiple( $value ){
$this->set_mapped_property('multiple', $value);
}
/**
* The number of possible metadata
*
* @param [string] $value
* @return void
*/
function set_cardinality( $value ){
$this->set_mapped_property('cardinality', $value);
}
/**
* Define if the value is key on the collection
*
* @param [string] $value
* @return void
*/
function set_collection_key( $value ){
$this->set_mapped_property('collection_key', $value);
}
/**
* Allow the metadatum be required
*
* @param [boolean] $value
* @return void
*/
function set_required( $value ){
$this->set_mapped_property('required', $value);
}
/**
* Allow multiple metadata
*
* @param [boolean] $value
* @return void
*/
function set_multiple( $value ){
$this->set_mapped_property('multiple', $value);
}
/**
* The number of possible metadata
*
* @param [string] $value
* @return void
*/
function set_cardinality( $value ){
$this->set_mapped_property('cardinality', $value);
}
/**
* Define if the value is key on the collection
*
* @param [string] $value
* @return void
*/
function set_collection_key( $value ){
$this->set_mapped_property('collection_key', $value);
}
/**
* Set mask for the metadatum
*
* @param [string] $value
* @return void
*/
function set_mask( $value ){
$this->set_mapped_property('mask', $value);
}
/**
* Set mask for the metadatum
*
* @param [string] $value
* @return void
*/
function set_mask( $value ){
$this->set_mapped_property('mask', $value);
}
/**
* Set default value
*
* @param [string || integer] $value
* @return void
*/
function set_default_value( $value ){
$this->set_mapped_property('default_property', $value);
}
/**
* Set default value
*
* @param [string || integer] $value
* @return void
*/
function set_default_value( $value ){
$this->set_mapped_property('default_property', $value);
}
/**
* set the metadatum type class name
*
* @param string | \Tainacan\Metadata_Types\Metadata_Type $value The name of the class or the instance
*/
public function set_metadata_type( $value ){
$this->set_mapped_property('metadata_type', ( is_object( $value ) ) ? get_class( $value ) : $value ) ; // Encode to avoid backslaches removal
}
/**
* Set if this metadatum allow community suggestions
* @param bool $value
*/
function set_accept_suggestion( $value ) {
$this->set_mapped_property('accept_suggestion', $value);
}
/**
* Set Metadatum type options
*
* @param [string || integer] $value
* @return void
*/
function set_metadata_type_options( $value ){
$this->set_mapped_property('metadata_type_options', $value);
}
/**
* Set exposers mapping configuration for this metadatum
* @param array $value
*/
public function set_exposer_mapping( $value ) {
$this->set_mapped_property('exposer_mapping', $value);
}
/**
* Set Semantic URI for the metadatum
*
* @param [string] $value
* @return void
*/
function set_semantic_uri( $value ){
$this->set_mapped_property('semantic_uri', $value);
}
/**
* set the metadatum type class name
*
* @param string | \Tainacan\Metadata_Types\Metadata_Type $value The name of the class or the instance
*/
public function set_metadata_type( $value ){
$this->set_mapped_property('metadata_type', ( is_object( $value ) ) ? get_class( $value ) : $value ) ; // Encode to avoid backslaches removal
}
/**
* Set if this metadatum allow community suggestions
* @param bool $value
*/
function set_accept_suggestion( $value ) {
$this->set_mapped_property('accept_suggestion', $value);
}
/**
* Set Metadatum type options
*
* @param [string || integer] $value
* @return void
*/
function set_metadata_type_options( $value ){
$this->set_mapped_property('metadata_type_options', $value);
}
/**
* Set exposers mapping configuration for this metadatum
* @param array $value
*/
public function set_exposer_mapping( $value ) {
$this->set_mapped_property('exposer_mapping', $value);
}
/**
* Set Semantic URI for the metadatum
*
* @param [string] $value
* @return void
*/
function set_semantic_uri( $value ){
$this->set_mapped_property('semantic_uri', $value);
}
/**
* Transient property used to store the status of the metadatum for a particular collection
@ -407,7 +407,7 @@ class Metadatum extends Entity {
}
// helpers
// helpers
/**
* Return true if is multiple, else return false
@ -415,8 +415,8 @@ class Metadatum extends Entity {
* @return boolean
*/
function is_multiple() {
return $this->get_multiple() === 'yes';
}
return $this->get_multiple() === 'yes';
}
/**
* Return true if is collection key, else return false
@ -424,8 +424,8 @@ class Metadatum extends Entity {
* @return boolean
*/
function is_collection_key() {
return $this->get_collection_key() === 'yes';
}
return $this->get_collection_key() === 'yes';
}
/**
* Return true if is required, else return false
@ -433,8 +433,8 @@ class Metadatum extends Entity {
* @return boolean
*/
function is_required() {
return $this->get_required() === 'yes';
}
return $this->get_required() === 'yes';
}
/**
* {@inheritdoc }
@ -444,13 +444,12 @@ class Metadatum extends Entity {
* @return bool valid or not
* @throws \Exception
*/
public function validate() {
$is_valid = parent::validate();
if (false === $is_valid)
return false;
public function validate() {
$is_valid = parent::validate();
if (false === $is_valid)
return false;
// You cant have a multiple metadatum inside a compound metadatum (except taxonomy)
if ($this->get_parent() > 0) {
if ( $this->is_multiple() && $this->get_metadata_type_object()->get_primitive_type() != 'term') {
@ -467,7 +466,7 @@ class Metadatum extends Entity {
return false;
}
}
if ( $this->get_metadata_type() == 'Tainacan\Metadata_Types\Compound' && $this->is_multiple() ) {
if ( $this->get_metadata_type() == 'Tainacan\Metadata_Types\Compound' && $this->is_multiple() && $this->get_id() != null ) {
$Tainacan_Metadata = \Tainacan\Repositories\Metadata::get_instance();
$children_taxonomy = $Tainacan_Metadata->fetch(
@ -496,30 +495,26 @@ class Metadatum extends Entity {
$this->add_error($this->get_id(), __("Compound metadata with multiple values can't have a children metadata set to as required", 'tainacan'));
return false;
}
}
}
}
}
$fto = $this->get_metadata_type_object();
$fto = $this->get_metadata_type_object();
if (is_object($fto)) {
$is_valid = $fto->validate_options($this);
}
if (true === $is_valid) {
$this->set_as_valid();
if (is_object($fto)) {
$is_valid = $fto->validate_options($this);
}
if (true === $is_valid) {
$this->set_as_valid();
return true;
}
return true;
}
if (!is_array($is_valid)) {
throw new \Exception( "Return of validate_options metadatum type method should be an Array in case of error" );
}
if (!is_array($is_valid)) {
throw new \Exception( "Return of validate_options metadatum type method should be an Array in case of error" );
}
$this->add_error('metadata_type_options', $is_valid);
return false;
}
$this->add_error('metadata_type_options', $is_valid);
return false;
}
}

View File

@ -653,7 +653,7 @@ class CSV extends Importer {
*
* @param array $processed_item Associative array with metadatum source's as index with
* its value or values
* @param integet $collection_index The index in the $this->collections array of the collection the item is beeing inserted into
* @param integer $collection_index The index in the $this->collections array of the collection the item is being inserted into
*
* @return Tainacan\Entities\Item Item inserted
*/
@ -721,7 +721,7 @@ class CSV extends Importer {
if( is_array( $processed_item ) ) {
foreach ( $processed_item as $metadatum_source => $values ) {
if ( $metadatum_source == 'special_document' ||
if ($metadatum_source == 'special_document' ||
$metadatum_source == 'special_attachments' ||
$metadatum_source == 'special_item_status' ||
$metadatum_source == 'special_comment_status') {
@ -735,9 +735,9 @@ class CSV extends Importer {
}
$metadatum = $Tainacan_Metadata->fetch( $tainacan_metadatum_id );
if( $this->is_empty_value( $values ) ) continue;
if ($this->is_empty_value($values)) continue;
if( $metadatum instanceof Entities\Metadatum ) {
if ($metadatum instanceof Entities\Metadatum) {
$singleItemMetadata = new Entities\Item_Metadata_Entity( $item, $metadatum); // *empty item will be replaced by inserted in the next foreach
if( $metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy' ) {
if( !is_array( $values ) ) {
@ -958,18 +958,25 @@ class CSV extends Importer {
public function add_collection(array $collection) {
if (isset($collection['id'])) {
if( isset($collection['mapping']) && is_array($collection['mapping']) ){
if (isset($collection['mapping']) && is_array($collection['mapping'])) {
foreach( $collection['mapping'] as $metadatum_id => $header ){
if( !is_numeric($metadatum_id) ) {
$metadatum = $this->create_new_metadata( $header, $collection['id']);
if ( $metadatum == false ) {
if (!is_numeric($metadatum_id)) {
$repo_key = "create_repository_metadata";
$collection_id = $collection['id'];
if (strpos($metadatum_id, $repo_key) !== false) {
$collection_id = "default";
}
$metadatum = $this->create_new_metadata($header, $collection_id);
if ($metadatum == false) {
$this->add_error_log( __("Error while creating metadatum, please review the metadatum description.", 'tainacan') );
$this->abort();
return false;
}
if( is_object($metadatum) && $metadatum instanceof \Tainacan\Entities\Metadatum ){
if (is_object($metadatum) && $metadatum instanceof \Tainacan\Entities\Metadatum) {
$collection['mapping'][$metadatum->get_id()] = $header;
} elseif ( is_array($metadatum) && sizeof($metadatum) == 2) {
$parent_header = key($header);

View File

@ -11,7 +11,6 @@ class Importer_Handler {
$this->bg_importer = new Background_Importer();
add_action('init', array(&$this, 'init'));
}
public function init() {
@ -220,5 +219,3 @@ class Importer_Handler {
global $Tainacan_Importer_Handler;
$Tainacan_Importer_Handler = new Importer_Handler();
?>

View File

@ -199,7 +199,17 @@ class Metadata extends Repository {
'validation' => v::optional( v::url() ),
'description' => __( 'The semantic metadatum description URI like: ', 'tainacan' ) . 'https://schema.org/URL',
'default' => ''
]
],
'repository_level' => [
'map' => 'meta',
'title' => __( 'Repository metadata', 'tainacan' ),
'type' => 'string',
'description' => __( 'Makes this metadatum a repository level metadatum instead of collection metadatum', 'tainacan' ),
'on_error' => __( 'Invalid value for repository metadata', 'tainacan' ),
'validation' => v::stringType()->in( [ 'yes', 'no' ] ),
// yes or no. It cant be multiple if its collection_key
'default' => 'no'
],
] );
}

View File

@ -2,9 +2,9 @@
Contributors: andrebenedito, daltonmartins, fabianobn, jacsonp, leogermani, weryques, wetah, eduardohumberto, ravipassos, jessicafpx, marinagiolo, omarceloavila, vnmedeiros, tainacan
Tags: museums, libraries, archives, GLAM, collections, repository
Requires at least: 4.8
Tested up to: 5.5
Tested up to: 5.6
Requires PHP: 5.6
Stable tag: 0.17.1
Stable tag: 0.17.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html

View File

@ -4,13 +4,13 @@ Plugin Name: Tainacan
Plugin URI: https://tainacan.org/
Description: Open source, powerfull and flexible repository platform for WordPress. Manage and publish you digital collections as easily as publishing a post to your blog, while having all the tools of a professional respository platform.
Author: Tainacan.org
Version: 0.17.1
Version: 0.17.2
Text Domain: tainacan
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html
*/
const TAINACAN_VERSION = '0.17.1';
const TAINACAN_VERSION = '0.17.2';
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
$TAINACAN_BASE_URL = plugins_url('', __FILE__);
@ -34,3 +34,9 @@ add_action( 'after_setup_theme', function() {
} );
add_action('init', ['Tainacan\Migrations', 'run_migrations']);
//https://core.trac.wordpress.org/ticket/23022
//https://core.trac.wordpress.org/ticket/23022#comment:13
add_filter( 'wp_untrash_post_status', function( $new_status, $post_id, $previous_status ) {
return $previous_status;
}, 10, 3 );

View File

@ -579,14 +579,14 @@
style="margin-left: auto;"
class="control">
<button
v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata')"
v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata') && !fromImporter"
id="button-submit-goto-metadata"
@click.prevent="onSubmit('metadata')"
class="button is-secondary">{{ $i18n.get('label_save_goto_metadata') }}</button>
</div>
<div class="control">
<button
v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata')"
v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata') && !fromImporter"
id="button-submit-goto-filter"
@click.prevent="onSubmit('filters')"
class="button is-secondary">{{ $i18n.get('label_save_goto_filter') }}</button>
@ -886,9 +886,9 @@ export default {
this.formErrorMessage = '';
this.editFormErrors = {};
if (this.fromImporter)
if (this.fromImporter) {
this.$router.go(-1);
else {
} else {
if (goTo == 'metadata')
this.$router.push(this.$routerHelper.getCollectionMetadataPath(this.collectionId));
else if (goTo == 'filters')

View File

@ -80,6 +80,11 @@
:value="'create_metadata' + index">
{{ $i18n.get('label_create_metadatum') }}
</option>
<option
v-if="collection && collection.current_user_can_edit_metadata"
:value="'create_repository_metadata' + index">
{{ $i18n.get('label_create_repository_metadata') }}
</option>
<option
v-for="(collectionMetadatum, metadatumIndex) of collectionMetadata"
:key="metadatumIndex"

View File

@ -209,6 +209,24 @@
:message="$i18n.getHelperMessage('metadata', 'collection_key')"/>
</b-checkbox>
</b-field>
<b-field
v-if="!isRepositoryLevel && isOnModal"
>
<b-checkbox
class="is-inline-block"
v-model="editForm.repository_level"
@input="clearErrors('repository_level')"
name="repository_level"
true-value="yes"
false-value="no"
>
{{ $i18n.get('label_repository_metadata') }}
<help-button
:title="$i18n.getHelperTitle('metadata', 'repository_level')"
:message="$i18n.getHelperMessage('metadata', 'repository_level')"/>
</b-checkbox>
</b-field>
</b-field>
<component
@ -282,13 +300,10 @@
}
},
created() {
this.editForm = this.editedMetadatum;
this.formErrors = this.editForm.formErrors != undefined ? this.editForm.formErrors : {};
this.formErrorMessage = this.editForm.formErrors != undefined ? this.editForm.formErrorMessage : '';
this.oldForm = JSON.parse(JSON.stringify(this.originalMetadatum));
},
mounted() {
// Fills hook forms with it's real values
@ -312,10 +327,13 @@
...mapActions('metadata', [
'updateMetadatum'
]),
saveEdition(metadatum) {
saveEdition(metadatum) {
if ((metadatum.metadata_type_object && metadatum.metadata_type_object.form_component) || metadatum.edit_form == '') {
let repository = this.editForm.repository_level;
if (repository && repository === 'yes') {
this.isRepositoryLevel = true;
}
if ((metadatum.metadata_type_object && metadatum.metadata_type_object.form_component) || metadatum.edit_form == '') {
this.fillExtraFormData(this.editForm);
this.isUpdating = true;
this.updateMetadatum({

View File

@ -379,7 +379,7 @@
},
beforeDestroy() {
if (jQuery && jQuery( document )) {
jQuery( document ).unbind( 'heartbeat-tick', this.onHeartBitTickList)
jQuery( document ).off( 'heartbeat-tick', this.onHeartBitTickList)
}
},
methods: {

View File

@ -47,7 +47,7 @@
<div
class="skeleton"
:style="{
minHeight: (childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-checkbox' || childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-taxonomycheckbox') ? '150px' : '30px'
minHeight: (childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-checkbox' || childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-taxonomy-checkbox') ? '150px' : '30px'
}" />
</div>
<tainacan-form-item

View File

@ -229,12 +229,13 @@ class Relationship extends Metadata_Type {
if ( isset($opt['search']) && !empty($opt['search']) ) {
$search_id = $opt['search'];
$metadata = \Tainacan\Repositories\Metadata::get_instance()->fetch($search_id, 'OBJECT');
$opt = array_merge(['related_primitive_type' => $metadata->get_metadata_type_object()->get_primitive_type()], $opt);
if( $metadata instanceof \Tainacan\Entities\Metadatum ) {
$opt = array_merge(['related_primitive_type' => $metadata->get_metadata_type_object()->get_primitive_type()], $opt);
if ($metadata->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy') {
$taxonomy_id = $metadata->get_metadata_type_options()['taxonomy_id'];
return array_merge(['search_by_tax' => $taxonomy_id], $opt);
if ($metadata->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy') {
$taxonomy_id = $metadata->get_metadata_type_options()['taxonomy_id'];
return array_merge(['search_by_tax' => $taxonomy_id], $opt);
}
}
}
return $opt;

View File

@ -11,7 +11,7 @@
}">
<a :style="{ fontWeight: 'bold', color: 'var(--tainacan-gray5) !important' }">
{{ $i18n.get('label_all_published_items') }}
<span class="has-text-gray">&nbsp;{{ collection && collection.total_items ? ` (${Number(collection.total_items.private) + Number(collection.total_items.publish)})` : (isRepositoryLevel && repositoryTotalItems) ? ` (${ repositoryTotalItems.private + repositoryTotalItems.publish })` : '' }}</span>
<span class="has-text-gray">&nbsp;{{ (isRepositoryLevel && repositoryTotalItems) ? ` (${ repositoryTotalItems.private + repositoryTotalItems.publish })` : (collection && collection.total_items ? ` (${Number(collection.total_items.private) + Number(collection.total_items.publish)})` : '') }}</span>
</a>
</li>
<li
@ -36,7 +36,7 @@
/>
</span>
{{ statusOption.name }}
<span class="has-text-gray">&nbsp;{{ collection && collection.total_items ? ` (${collection.total_items[statusOption.slug]})` : (isRepositoryLevel && repositoryTotalItems) ? ` (${ repositoryTotalItems[statusOption.slug] })` : '' }}</span>
<span class="has-text-gray">&nbsp;{{ (isRepositoryLevel && repositoryTotalItems) ? ` (${ repositoryTotalItems[statusOption.slug] })` : (collection && collection.total_items ? ` (${collection.total_items[statusOption.slug]})` : '') }}</span>
</a>
</li>
</ul>

View File

@ -207,7 +207,7 @@ export default {
},
beforeDestroy() {
if (jQuery && jQuery( document )) {
jQuery( document ).unbind( 'heartbeat-tick', this.onHeartBitTickPopup)
jQuery( document ).off( 'heartbeat-tick', this.onHeartBitTickPopup)
}
},
methods: {

View File

@ -3,7 +3,7 @@ import { SnackbarProgrammatic as Snackbar } from 'buefy';
import { ModalProgrammatic as Modal } from 'buefy';
import CustomDialog from '../components/other/custom-dialog.vue'
// Simpler version of the i18n plugin to translate error feedbac messages
// Simpler version of the i18n plugin to translate error feedback messages
const i18nGet = function (key) {
let string = tainacan_plugin.i18n[key];
return (string !== undefined && string !== null && string !== '' ) ? string : "ERROR: Invalid i18n key!";

View File

@ -68,8 +68,9 @@ export const createRole = ({ commit }, role) => {
commit('setRole', role);
resolve(role);
})
.catch(error => {
reject(error);
.catch((error) => {
if (error.response)
reject(error.response.data);
});
});
};
@ -85,7 +86,8 @@ export const updateRole = ({ commit }, role) => {
resolve(updatedRole);
})
.catch(error => {
reject(error);
if (error.response)
reject(error.response.data);
});
});
};

View File

@ -698,7 +698,8 @@
return this.getStatus();
},
adminViewMode() {
return this.getAdminViewMode();
const currentAdminViewMode = this.getAdminViewMode();
return ['table', 'cards', 'records', 'grid', 'masonry', 'list'].indexOf(currentAdminViewMode) >= 0 ? currentAdminViewMode : 'table';
},
orderBy() {
return this.getOrderBy();
@ -1186,7 +1187,7 @@
.catch(() => this.isLoadingMetadata = false);
},
updateCollectionInfo () {
// Only needed for displayting totalItems on tabs.
// Only needed for displaying totalItems on tabs.
if (this.collectionId)
this.fetchCollectionBasics({ collectionId: this.collectionId, isContextEdit: true });
},

View File

@ -114,6 +114,7 @@
.modal-search-area {
display: flex;
justify-content: center;
align-items: flex-end;
margin-bottom: 6px;
.components-base-control {
@ -165,7 +166,7 @@
}
svg.components-checkbox-control__checked {
fill: black;
fill: inherit;
}
.modal-checkbox-list-item,

View File

@ -49,5 +49,6 @@
var g2 = el('g', { transform: 'translate(-85.490815,-209.14412)' });
var svgIcon = el( 'svg', { width: 20, height: 20, viewBox: '0 0 20 20'}, path4, path6, path8, path10, path12, path14, path16, path18, path20, g1, g2);
wp.blocks.updateCategory( 'tainacan-blocks', { icon: svgIcon } );
if (wp.blocks.updateCategory)
wp.blocks.updateCategory( 'tainacan-blocks', { icon: svgIcon } );
} )();

View File

@ -0,0 +1,33 @@
const { Button, Toolbar, ToolbarGroup, ToolbarButton } = wp.components;
export default function TainacanBlocksCompatToolbar({ label, icon, onClick, onClickParams, controls }) {
if (controls !== undefined)
return tainacan_blocks.wp_version < '5.4' ? <Toolbar controls={ controls } /> : <ToolbarGroup controls={ controls } />
else
return tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', backgroundColor: '#fff', alignItems: 'center', borderTop: '1px solid #b5bcc2', borderBottom: '1px solid #b5bcc2' }} onClick={ () => onClick(onClickParams) }>
<p style={{ margin: 0 }}>
{ icon }
</p>&nbsp;
{ label }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => onClick(onClickParams) }>
<p>
{ icon }
</p>&nbsp;
{ label }
</Button>
:
<ToolbarButton onClick={ () => onClick(onClickParams) }>
<p>
{ icon }
</p>&nbsp;
{ label }
</ToolbarButton>
}
</ToolbarGroup>
}

View File

@ -0,0 +1,269 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collections: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
selectedCollections: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxCollectionsNumber: {
type: Number,
value: undefined
},
maxCollectionsPerScreen: {
type: Number,
value: 6
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
arrowsPosition: {
type: String,
value: 'search'
},
largeArrows: {
type: Boolean,
value: false
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideName: {
type: Boolean,
value: true
},
showCollectionThumbnail: {
type: Boolean,
value: false
},
cropImagesToSquare: {
type: Boolean,
value: true
},
collection: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
supports: {
align: ['full', 'wide'],
html: false,
multiple: true
},
save({ attributes, className }){
const {
content,
blockId,
selectedCollections,
arrowsPosition,
largeArrows,
cropImagesToSquare,
maxCollectionsPerScreen,
maxCollectionsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showCollectionThumbnail
} = attributes;
return <div
className={ className }
selected-collections={ JSON.stringify(selectedCollections.map((collection) => { return collection.id })) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
large-arrows={ '' + largeArrows }
crop-images-to-square={ '' + cropImagesToSquare }
max-collections-number={ maxCollectionsNumber }
max-collections-per-screen={ maxCollectionsPerScreen }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-collection-thumbnail={ '' + showCollectionThumbnail }
id={ 'wp-block-tainacan-carousel-collections-list_' + blockId }>
{ content }
</div>
}
},
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collections: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
selectedCollections: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxCollectionsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
arrowsPosition: {
type: String,
value: 'search'
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideName: {
type: Boolean,
value: true
},
showCollectionThumbnail: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
save({ attributes, className }){
const {
content,
blockId,
selectedCollections,
arrowsPosition,
maxCollectionsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showCollectionThumbnail
} = attributes;
return <div
className={ className }
selected-collections={ JSON.stringify(selectedCollections.map((collection) => { return collection.id })) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-collections-number={ maxCollectionsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-collection-thumbnail={ '' + showCollectionThumbnail }
id={ 'wp-block-tainacan-carousel-collections-list_' + blockId }>
{ content }
</div>
},
},
{
save({ attributes, className }){
const {
content,
blockId,
selectedCollections,
arrowsPosition,
maxCollectionsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showCollectionThumbnail
} = attributes;
return <div
className={ className }
selected-collections={ JSON.stringify(selectedCollections) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-collections-number={ maxCollectionsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-collection-thumbnail={ '' + showCollectionThumbnail }
id={ 'wp-block-tainacan-carousel-collections-list_' + blockId }>
{ content }
</div>
}
}
]

View File

@ -237,7 +237,7 @@ export default {
preventInteractionOnTransition: true,
allowClick: true,
allowTouchMove: true,
slidesPerView: this.showCollectionThumbnail ? 6 : 5,
slidesPerView: 1,
slidesPerGroup: 1,
spaceBetween: this.showCollectionThumbnail ? 32 : 16,
slideToClickedSlide: true,
@ -264,13 +264,13 @@ export default {
if (!isNaN(this.maxCollectionsPerScreen)) {
this.swiperOptions.breakpoints = {
498: { slidesPerView: this.maxCollectionsPerScreen - 5 > 0 ? this.maxCollectionsPerScreen - 5 : 1 },
768: { slidesPerView: this.maxCollectionsPerScreen - 4 > 0 ? this.maxCollectionsPerScreen - 4 : 1 },
1024: { slidesPerView: this.maxCollectionsPerScreen - 3 > 0 ? this.maxCollectionsPerScreen - 3 : 1 },
1366: { slidesPerView: this.maxCollectionsPerScreen - 2 > 0 ? this.maxCollectionsPerScreen - 2 : 1 },
1600: { slidesPerView: this.maxCollectionsPerScreen - 1 > 0 ? this.maxCollectionsPerScreen - 1 : 1 },
498: { slidesPerView: this.maxCollectionsPerScreen - 4 > 0 ? this.maxCollectionsPerScreen - 4 : 1 },
768: { slidesPerView: this.maxCollectionsPerScreen - 3 > 0 ? this.maxCollectionsPerScreen - 3 : 1 },
1024: { slidesPerView: this.maxCollectionsPerScreen - 2 > 0 ? this.maxCollectionsPerScreen - 2 : 1 },
1366: { slidesPerView: this.maxCollectionsPerScreen - 1 > 0 ? this.maxCollectionsPerScreen - 1 : 1 },
1600: { slidesPerView: this.maxCollectionsPerScreen > 0 ? this.maxCollectionsPerScreen : 1 },
}
this.swiperOptions.slidesPerView = this.maxCollectionsPerScreen;
this.swiperOptions.slidesPerView = 1;
}
},
methods: {

View File

@ -145,6 +145,7 @@
padding: 8px 16px;
display: block;
line-height: 1.2em;
word-break: break-word;
}
a>img {
width: 100%;

View File

@ -275,7 +275,7 @@ export default class CollectionsModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -291,7 +291,7 @@ export default class CollectionsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => this.cancelSelection() }>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -2,14 +2,16 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { RangeControl, Spinner, Button, BaseControl, ToggleControl, SelectControl, Placeholder, IconButton, PanelBody, ToolbarGroup, ToolbarButton } = wp.components;
const { RangeControl, Spinner, Button, BaseControl, ToggleControl, SelectControl, Placeholder, IconButton, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import CarouselCollectionsModal from './carousel-collections-modal.js';
import tainacan from '../../js/axios.js';
import axios from 'axios';
import qs from 'qs';
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import DeprecatedBlocks from './carousel-collections-deprecated.js'
registerBlockType('tainacan/carousel-collections-list', {
title: __('Tainacan Collections Carousel', 'tainacan'),
@ -121,9 +123,10 @@ registerBlockType('tainacan/carousel-collections-list', {
supports: {
align: ['full', 'wide'],
html: false,
multiple: true
multiple: true,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected, clientId }){
edit({ attributes, setAttributes, className, isSelected, clientId }) {
let {
collections,
content,
@ -160,10 +163,17 @@ registerBlockType('tainacan/carousel-collections-list', {
<li
key={ collection.id }
className={ 'collection-list-item ' + (!showCollectionThumbnail ? 'collection-list-item-grid ' : '') + (maxCollectionsPerScreen ? ' max-collections-per-screen-' + maxCollectionsPerScreen : '') }>
<IconButton
onClick={ () => removeItemOfId(collection.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
{ tainacan_blocks.wp_version < '5.4' ?
<IconButton
onClick={ () => removeItemOfId(collection.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
:
<Button
onClick={ () => removeItemOfId(collection.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
}
<a
id={ isNaN(collection.id) ? collection.id : 'collection-id-' + collection.id }
href={ collection.url }
@ -322,49 +332,18 @@ registerBlockType('tainacan/carousel-collections-list', {
{ collections.length ?
<BlockControls>
{ tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openCarouselModal() } >
<p style={{ margin: 0 }}>
<svg
{
TainacanBlocksCompatToolbar({
label: __('Add more collections', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
viewBox="0 -2 24 24"
height="24px"
width="24px">
<path d="M18,17v2H12a5.65,5.65,0,0,0-.36-2ZM2,7v7.57a5.74,5.74,0,0,1,2-1.2V7ZM20,6H15L13,4H8A2,2,0,0,0,6,6v7a6,6,0,0,1,5.19,3H20a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM7,16.05v6.06l3.06-3.06ZM5,22.11V16.05L1.94,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more collections', 'tainacan') }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openCarouselModal() } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M18,17v2H12a5.65,5.65,0,0,0-.36-2ZM2,7v7.57a5.74,5.74,0,0,1,2-1.2V7ZM20,6H15L13,4H8A2,2,0,0,0,6,6v7a6,6,0,0,1,5.19,3H20a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM7,16.05v6.06l3.06-3.06ZM5,22.11V16.05L1.94,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more collections', 'tainacan') }
</Button>
:
<ToolbarButton onClick={ () => openCarouselModal() } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M18,17v2H12a5.65,5.65,0,0,0-.36-2ZM2,7v7.57a5.74,5.74,0,0,1,2-1.2V7ZM20,6H15L13,4H8A2,2,0,0,0,6,6v7a6,6,0,0,1,5.19,3H20a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM7,16.05v6.06l3.06-3.06ZM5,22.11V16.05L1.94,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more collections', 'tainacan') }
</ToolbarButton>
}
</ToolbarGroup>
</svg>,
onClick: openCarouselModal
})
}
</BlockControls>
: null }
@ -642,143 +621,5 @@ registerBlockType('tainacan/carousel-collections-list', {
{ content }
</div>
},
deprecated: [
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collections: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
selectedCollections: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxCollectionsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
arrowsPosition: {
type: String,
value: 'search'
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideName: {
type: Boolean,
value: true
},
showCollectionThumbnail: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
save({ attributes, className }){
const {
content,
blockId,
selectedCollections,
arrowsPosition,
maxCollectionsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showCollectionThumbnail
} = attributes;
return <div
className={ className }
selected-collections={ JSON.stringify(selectedCollections.map((collection) => { return collection.id })) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-collections-number={ maxCollectionsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-collection-thumbnail={ '' + showCollectionThumbnail }
id={ 'wp-block-tainacan-carousel-collections-list_' + blockId }>
{ content }
</div>
},
},
{
save({ attributes, className }){
const {
content,
blockId,
selectedCollections,
arrowsPosition,
maxCollectionsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showCollectionThumbnail
} = attributes;
return <div
className={ className }
selected-collections={ JSON.stringify(selectedCollections) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-collections-number={ maxCollectionsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-collection-thumbnail={ '' + showCollectionThumbnail }
id={ 'wp-block-tainacan-carousel-collections-list_' + blockId }>
{ content }
</div>
}
}
]
deprecated: DeprecatedBlocks
});

View File

@ -0,0 +1,84 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
selectedCollectionsObject: {
type: 'array',
source: 'query',
selector: 'a',
query: {
id: {
type: 'string',
source: 'attribute',
attribute: 'id'
},
url: {
type: 'string',
source: 'attribute',
attribute: 'href'
},
name: {
type: 'string',
source: 'text'
},
thumbnail: {
source: 'query',
selector: 'img',
query: {
src: {
source: 'attribute',
attribute: 'src'
},
alt: {
source: 'attribute',
attribute: 'alt'
},
}
},
},
default: []
},
content: {
type: 'array',
source: 'children',
selector: 'div'
},
query: {
type: Object,
default: {}
},
selectedCollectionsHTML: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showName: {
type: Boolean,
default: true
},
layout: {
type: String,
default: 'grid'
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
}
},
supports: {
align: ['full', 'wide'],
html: false,
},
save({ attributes, className }){
const { content } = attributes;
return <div className={className}>{ content }</div>
}
}
];

View File

@ -277,7 +277,7 @@ export default class CollectionsModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -293,7 +293,7 @@ export default class CollectionsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => this.cancelSelection() }>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -2,11 +2,13 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { RangeControl, IconButton, Button, ToggleControl, Placeholder, Toolbar, ToolbarGroup, PanelBody, ToolbarButton } = wp.components;
const { RangeControl, IconButton, Button, ToggleControl, Placeholder, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import CollectionsModal from './collections-modal.js';
import DeprecatedBlocks from './collections-list-deprecated.js';
registerBlockType('tainacan/collections-list', {
title: __('Tainacan Collections List', 'tainacan'),
@ -99,6 +101,7 @@ registerBlockType('tainacan/collections-list', {
supports: {
align: ['full', 'wide'],
html: false,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected }){
let {
@ -118,10 +121,17 @@ registerBlockType('tainacan/collections-list', {
key={ collection.id }
className="collection-list-item"
style={{ marginBottom: layout == 'grid' ? (showName ? gridMargin + 12 : gridMargin) + 'px' : ''}}>
<IconButton
onClick={ () => removeCollectionOfId(collection.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
{ tainacan_blocks.wp_version < '5.4' ?
<IconButton
onClick={ () => removeCollectionOfId(collection.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
:
<Button
onClick={ () => removeCollectionOfId(collection.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
}
<a
id={ isNaN(collection.id) ? collection.id : 'collection-id-' + collection.id }
href={ collection.url }
@ -219,45 +229,17 @@ registerBlockType('tainacan/collections-list', {
<div>
<BlockControls>
<Toolbar controls={ layoutControls } />
{ TainacanBlocksCompatToolbar({ controls: layoutControls }) }
{ selectedCollectionsHTML.length ?
tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ openCollectionsModal } >
<p style={{ margin: 0 }}>
<svg width="24" height="24" viewBox="0 -5 12 16">
<path
d="M10,8.8v1.3H1.2C0.6,10.1,0,9.5,0,8.8V2.5h1.3v6.3H10z M6.9,0H3.8C3.1,0,2.5,0.6,2.5,1.3l0,5c0,0.7,0.6,1.2,1.3,1.2h7.5
c0.7,0,1.3-0.6,1.3-1.2V2.5c0-0.7-0.6-1.2-1.3-1.2H8.2L6.9,0z"/>
</svg>
</p>&nbsp;
{ __( 'Select collections', 'tainacan' ) }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ openCollectionsModal } >
<p>
<svg width="24" height="24" viewBox="0 -5 12 16">
<path
d="M10,8.8v1.3H1.2C0.6,10.1,0,9.5,0,8.8V2.5h1.3v6.3H10z M6.9,0H3.8C3.1,0,2.5,0.6,2.5,1.3l0,5c0,0.7,0.6,1.2,1.3,1.2h7.5
c0.7,0,1.3-0.6,1.3-1.2V2.5c0-0.7-0.6-1.2-1.3-1.2H8.2L6.9,0z"/>
</svg>
</p>&nbsp;
{ __( 'Select collections', 'tainacan' ) }
</Button>
:
<ToolbarButton onClick={ openCollectionsModal } >
<p>
<svg width="24" height="24" viewBox="0 -5 12 16">
<path
d="M10,8.8v1.3H1.2C0.6,10.1,0,9.5,0,8.8V2.5h1.3v6.3H10z M6.9,0H3.8C3.1,0,2.5,0.6,2.5,1.3l0,5c0,0.7,0.6,1.2,1.3,1.2h7.5
c0.7,0,1.3-0.6,1.3-1.2V2.5c0-0.7-0.6-1.2-1.3-1.2H8.2L6.9,0z"/>
</svg>
</p>&nbsp;
{ __( 'Select collections', 'tainacan' ) }
</ToolbarButton>
}
</ToolbarGroup>
TainacanBlocksCompatToolbar({
label: __( 'Select collections', 'tainacan' ),
icon: <svg width="24" height="24" viewBox="0 -5 12 16">
<path
d="M10,8.8v1.3H1.2C0.6,10.1,0,9.5,0,8.8V2.5h1.3v6.3H10z M6.9,0H3.8C3.1,0,2.5,0.6,2.5,1.3l0,5c0,0.7,0.6,1.2,1.3,1.2h7.5
c0.7,0,1.3-0.6,1.3-1.2V2.5c0-0.7-0.6-1.2-1.3-1.2H8.2L6.9,0z"/>
</svg>,
onClick: openCollectionsModal
})
: null }
</BlockControls>
</div>
@ -372,5 +354,6 @@ registerBlockType('tainacan/collections-list', {
save({ attributes, className }){
const { content } = attributes;
return <div className={className}>{ content }</div>
}
},
deprecated: DeprecatedBlocks
});

View File

@ -309,7 +309,7 @@ export default class CollectionModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -325,7 +325,7 @@ export default class CollectionModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -16,11 +16,13 @@ const {
ToolbarGroup,
Dropdown,
ToolbarButton,
ToolbarItem,
DropdownMenu,
MenuGroup,
MenuItemsChoice
} = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import CollectionModal from './collection-modal.js';
import TermModal from './term-modal.js';
@ -410,7 +412,7 @@ registerBlockType('tainacan/faceted-search', {
contentClassName="wp-block-tainacan__dropdown"
renderToggle={ ( { isOpen, onToggle } ) =>
<Button
style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2', height: '100%' }}
style={{ whiteSpace: 'nowrap', backgroundColor: '#fff', alignItems: 'center', borderTop: '1px solid #b5bcc2', borderBottom: '1px solid #b5bcc2', height: '100%' }}
onClick={ onToggle }
aria-expanded={ isOpen }>
{ __('Items list source', 'tainacan') }
@ -432,38 +434,68 @@ registerBlockType('tainacan/faceted-search', {
/>
:
<ToolbarGroup>
<Dropdown
contentClassName="wp-block-tainacan__dropdown"
renderToggle={ ( { isOpen, onToggle } ) => (
tainacan_blocks.wp_version < '5.5' ?
<Button
style={{ whiteSpace: 'nowrap' }}
onClick={ onToggle }
aria-expanded={ isOpen }>
{ __('Items list source', 'tainacan') }
<span class="components-dropdown-menu__indicator"></span>
</Button>
:
<ToolbarButton
onClick={ onToggle }
aria-expanded={ isOpen }>
{ __('Items list source', 'tainacan') }
<span class="components-dropdown-menu__indicator"></span>
</ToolbarButton>
) }
renderContent={ ( { onToggle } ) => (
<MenuGroup>
<MenuItemsChoice
choices={ listTypeChoices }
value={ listType }
onSelect={ (value) => {
onUpdateListType(value);
onToggle();
}}>
</MenuItemsChoice>
</MenuGroup>
) }
/>
{ tainacan_blocks.wp_version < '5.6' ?
<Dropdown
contentClassName="wp-block-tainacan__dropdown"
renderToggle={ ( { isOpen, onToggle } ) => (
tainacan_blocks.wp_version < '5.5' ?
<Button
style={{ whiteSpace: 'nowrap' }}
onClick={ onToggle }
aria-expanded={ isOpen }>
{ __('Items list source', 'tainacan') }
<span class="components-dropdown-menu__indicator"></span>
</Button>
:
<ToolbarButton
onClick={ onToggle }
aria-expanded={ isOpen }>
{ __('Items list source', 'tainacan') }
<span class="components-dropdown-menu__indicator"></span>
</ToolbarButton>
) }
renderContent={ ( { onToggle } ) => (
<MenuGroup>
<MenuItemsChoice
choices={ listTypeChoices }
value={ listType }
onSelect={ (value) => {
onUpdateListType(value);
onToggle();
}}>
</MenuItemsChoice>
</MenuGroup>
) }
/>
:
<ToolbarItem>
{ () => (
<Dropdown
contentClassName="wp-block-tainacan__dropdown"
renderToggle={ ( { isOpen, onToggle } ) => (
<ToolbarButton
onClick={ onToggle }
aria-expanded={ isOpen }>
{ __('Items list source', 'tainacan') }
<span class="components-dropdown-menu__indicator"></span>
</ToolbarButton>
) }
renderContent={ ( { onToggle } ) => (
<MenuGroup>
<MenuItemsChoice
choices={ listTypeChoices }
value={ listType }
onSelect={ (value) => {
onUpdateListType(value);
onToggle();
}}>
</MenuItemsChoice>
</MenuGroup>
) }
/>
) }
</ToolbarItem>
}
</ToolbarGroup>
:null }
</BlockControls>

View File

@ -355,7 +355,7 @@ export default class TermModal extends React.Component {
{
this.state.modalTerms.length < this.state.totalModalTerms ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalTerms(this.state.modalTerms.length, this.state.taxonomyId) }>
{__('Load more', 'tainacan')}
@ -371,7 +371,7 @@ export default class TermModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => this.resetTaxonomies() }>
{__('Switch taxonomy', 'tainacan')}
</Button>
@ -475,7 +475,7 @@ export default class TermModal extends React.Component {
{
this.state.modalTaxonomies.length < this.state.totalModalTaxonomies ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalTaxonomies() }>
{__('Load more', 'tainacan')}
@ -491,7 +491,7 @@ export default class TermModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -0,0 +1,280 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize, columns count and append child term options */
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
collectionSlug: {
type: String,
default: undefined
},
facets: {
type: Array,
default: []
},
facetsObject: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showItemsCount: {
type: Boolean,
default: true
},
showLoadMore: {
type: Boolean,
default: false
},
showSearchBar: {
type: Boolean,
value: false
},
layout: {
type: String,
default: 'grid'
},
cloudRate: {
type: Number,
default: 1
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
},
metadatumId: {
type: String,
default: undefined
},
metadatumType: {
type: String,
default: undefined
},
facetsRequestSource: {
type: String,
default: undefined
},
maxFacetsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
searchString: {
type: String,
default: undefined
},
blockId: {
type: String,
default: undefined
},
parentTerm: {
type: Number,
default: null
},
isParentTermModalOpen: {
type: Boolean,
default: false
}
},
supports: {
align: ['full', 'wide'],
html: false,
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
collectionSlug,
parentTerm,
showImage,
showItemsCount,
showLoadMore,
layout,
cloudRate,
gridMargin,
metadatumId,
metadatumType,
maxFacetsNumber,
showSearchBar,
} = attributes;
return <div
className={ className }
metadatum-id={ metadatumId }
metadatum-type={ metadatumType }
collection-id={ collectionId }
collection-slug={ collectionSlug }
parent-term-id={ parentTerm ? parentTerm.id : null }
show-image={ '' + showImage }
show-items-count={ '' + showItemsCount }
show-search-bar={ '' + showSearchBar }
show-load-more={ '' + showLoadMore }
layout={ layout }
cloud-rate={ cloudRate }
grid-margin={ gridMargin }
max-facets-number={ maxFacetsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
tainacan-site-url={ tainacan_blocks.site_url }
id={ 'wp-block-tainacan-facets-list_' + blockId }>
{ content }
</div>
}
},
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
collectionSlug: {
type: String,
default: undefined
},
facets: {
type: Array,
default: []
},
facetsObject: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showItemsCount: {
type: Boolean,
default: true
},
showLoadMore: {
type: Boolean,
default: false
},
showSearchBar: {
type: Boolean,
value: false
},
layout: {
type: String,
default: 'grid'
},
cloudRate: {
type: Number,
default: 1
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
},
metadatumId: {
type: String,
default: undefined
},
metadatumType: {
type: String,
default: undefined
},
facetsRequestSource: {
type: String,
default: undefined
},
maxFacetsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
searchString: {
type: String,
default: undefined
},
blockId: {
type: String,
default: undefined
}
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
collectionSlug,
showImage,
showItemsCount,
showLoadMore,
layout,
cloudRate,
gridMargin,
metadatumId,
metadatumType,
maxFacetsNumber,
showSearchBar,
} = attributes;
return <div
className={ className }
metadatum-id={ metadatumId }
metadatum-type={ metadatumType }
collection-id={ collectionId }
collection-slug={ collectionSlug }
show-image={ '' + showImage }
show-items-count={ '' + showItemsCount }
show-search-bar={ '' + showSearchBar }
show-load-more={ '' + showLoadMore }
layout={ layout }
cloud-rate={ cloudRate }
grid-margin={ gridMargin }
max-facets-number={ maxFacetsNumber }
tainacan-api-root={ tainacan_plugin.root }
tainacan-base-url={ tainacan_plugin.base_url }
tainacan-site-url={ tainacan_plugin.site_url }
id={ 'wp-block-tainacan-facets-list_' + blockId }>
{ content }
</div>
}
}
]

View File

@ -0,0 +1,167 @@
<template>
<li
class="facet-list-item"
:class="(!showImage ? 'facet-without-image' : '') + (nameInsideImage ? ' facet-with-name-inside-image' : '') + ((appendChildTerms && facet.total_children > 0) ? ' facet-term-with-children': '')">
<a
:id="isNaN(facetId) ? facetId : 'facet-id-' + facetId"
:href="(appendChildTerms && facet.total_children > 0) ? null : ((linkTermFacetsToTermPage && isMetadatumTypeTaxonomy) ? facet.term_url : facet.url)"
@click="() => { (appendChildTerms && facet.total_children > 0) ? displayChildTerms(facetId) : null }"
target="_blank"
:style="{ fontSize: layout == 'cloud' && facet.total_items ? + (1 + (cloudRate/4) * Math.log(facet.total_items)) + 'em' : ''}">
<img
v-if="isMetadatumTypeTaxonomy"
:src="
facet.entity && facet.entity['header_image']
?
facet.entity['header_image']
:
`${tainacanBaseUrl}/assets/images/placeholder_square.png`
"
:alt="facet.label ? facet.label : $root.__('Thumbnail', 'tainacan')">
<img
v-if="isMetadatumTypeRelationship"
:src="
facet.entity.thumbnail && facet.entity.thumbnail['tainacan-medium'][0] && facet.entity.thumbnail['tainacan-medium'][0]
?
facet.entity.thumbnail['tainacan-medium'][0]
:
(facet.entity.thumbnail && facet.entity.thumbnail['thumbnail'][0] && facet.entity.thumbnail['thumbnail'][0]
?
facet.entity.thumbnail['thumbnail'][0]
:
`${tainacanBaseUrl}/assets/images/placeholder_square.png`)
"
:alt="facet.label ? facet.label : $root.__('Thumbnail', 'tainacan')">
<span>{{ facet.label ? facet.label : '' }}</span>
<span
v-if="facet.total_items"
class="facet-item-count"
:style="{ display: !showItemsCount ? 'none' : '' }">
&nbsp;({{ facet.total_items }})
</span>
<template v-if="appendChildTerms && facet.total_children > 0">
<svg
v-if="childFacetsObject[facetId] && childFacetsObject[facetId].visible"
xmlns="http://www.w3.org/2000/svg"
viewBox="-4 -3 16 16"
height="32px"
width="32px">
<g transform="translate(-69.294715,-148.68529)">
<path d="m 71.096008,154.8776 2.43204,-2.4257 2.4257,2.4257 0.7493,-0.74294 -3.175,-3.175 -3.175,3.175 z" />
</g>
</svg>
<svg
v-else
xmlns="http://www.w3.org/2000/svg"
viewBox="-4 -3 16 16"
height="32px"
width="32px">
<g transform="translate(-69.294715,-148.68529)">
<path d="m 71.096008,150.95966 2.43204,2.4257 2.4257,-2.4257 0.7493,0.74294 -3.175,3.175 -3.175,-3.175 z" />
</g>
</svg>
</template>
</a>
<template v-if="appendChildTerms && facet.total_children > 0">
<ul
v-if="isLoadingChildTerms == (facet.id != undefined ? facet.id : facet.value)"
:style="{
gridGap: layout == 'grid' ? (gridMargin + 'px') : 'inherit',
marginTop: showSearchBar ? '1.5em' : '4px'
}"
class="facets-list"
:class="'facets-layout-' + layout + (!showName ? ' facets-list-without-margin' : '') + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '')">
<li
:key="childFacet"
v-for="childFacet in Number(facet.total_children)"
class="facet-list-item skeleton"
:style="{
minHeight: getSkeletonHeight(),
marginTop: layout == 'list' ? '4px' : '',
marginLeft: layout == 'list' ? '7px' : '',
marginBottom: layout == 'grid' && showImage ? (showName ? gridMargin + 12 : gridMargin) + 'px' : ''
}" />
</ul>
<template v-else>
<transition name="child-reveal">
<ul
v-if="childFacetsObject[facet.id != undefined ? facet.id : facet.value] && childFacetsObject[facet.id != undefined ? facet.id : facet.value].visible"
class="child-term-facets">
<template v-if="childFacetsObject[facet.id != undefined ? facet.id : facet.value].facets.length">
<facets-list-theme-unit
v-for="(aChildTermFacet, childFacetIndex) of childFacetsObject[facet.id != undefined ? facet.id : facet.value].facets"
:key="childFacetIndex"
:show-image="showImage"
:name-inside-image="nameInsideImage"
:child-facets-object="childFacetsObject"
:facet="aChildTermFacet"
:cloud-rate="cloudRate"
:tainacan-base-url="tainacanBaseUrl"
:layout="layout"
:append-child-terms="appendChildTerms"
:metadatum-type="metadatumType"
:show-items-count="showItemsCount"
:is-loading-child-terms="isloadingChildTerms"
:link-term-facets-to-term-page="linkTermFacetsToTermPage"
:is-metadatum-type-taxonomy="isMetadatumTypeTaxonomy"
:is-metadatum-type-relationship="isMetadatumTypeRelationship"
@on-display-child-terms="displayChildTerms" />
</template>
<p
v-else
class="no-child-facet-found">
{{ $root.__( 'This facet children terms do not contain items.', 'tainacan' ) }}
</p>
</ul>
</transition>
</template>
</template>
</li>
</template>
<script>
export default {
props: {
appendChildTerms: Boolean,
facet: Object,
tainacanBaseUrl: String,
showImage: Boolean,
showItemsCount: Boolean,
showSearchBar: Boolean,
nameInsideImage: Boolean,
isLoadingChildTerms: Boolean,
linkTermFacetsToTermPage: Boolean,
layout: String,
cloudRate: Number,
metadatumType: String,
childFacetsObject: Object,
isMetadatumTypeTaxonomy: Boolean,
isMetadatumTypeRelationship: Boolean
},
computed:{
facetId() {
return (this.facet.id != undefined ? this.facet.id : this.facet.value);
}
},
methods: {
displayChildTerms(facetId) {
this.$emit('on-display-child-terms', facetId)
},
getSkeletonHeight() {
switch(this.layout) {
case 'grid':
if ((this.isMetadatumTypeRelationship || this.isMetadatumTypeTaxonomy) && this.showImage)
return '230px';
else
return '24px'
case 'list':
if ((this.isMetadatumTypeRelationship || this.isMetadatumTypeTaxonomy) && this.showImage)
return '54px';
else
return '24px'
default: return '54px';
}
}
}
}
</script>

View File

@ -1,8 +1,10 @@
import Vue from 'vue';
import FacetsListTheme from './facets-list-theme.vue';
import FacetsListThemeUnit from './facets-list-theme-unit.vue';
// Vue Dev Tools!
Vue.config.devtools = process && process.env && process.env.NODE_ENV === 'development';
Vue.component('facets-list-theme-unit', FacetsListThemeUnit);
// This is rendered on the theme side.
document.addEventListener("DOMContentLoaded", () => {
@ -28,10 +30,14 @@ document.addEventListener("DOMContentLoaded", () => {
showItemsCount: true,
showSearchBar: false,
showLoadMore: false,
nameInsideImage: false,
linkTermFacetsToTermPage: true,
appendChildTerms: false,
layout: 'grid',
cloudRate: 1,
gridMargin: 0,
gridMargin: 24,
maxFacetsNumber: 12,
maxColumnsCount: 5,
tainacanApiRoot: '',
tainacanBaseUrl: '',
tainacanSiteUrl: '',
@ -46,13 +52,17 @@ document.addEventListener("DOMContentLoaded", () => {
collectionSlug: this.collectionSlug,
parentTermId: this.parentTermId,
showImage: this.showImage,
nameInsideImage: this.nameInsideImage,
showItemsCount: this.showItemsCount,
showSearchBar: this.showSearchBar,
showLoadMore: this.showLoadMore,
layout: this.layout,
cloudRate: this.cloudRate,
gridMargin: this.gridMargin,
linkTermFacetsToTermPage: this.linkTermFacetsToTermPage,
appendChildTerms: this.appendChildTerms,
maxFacetsNumber: this.maxFacetsNumber,
maxColumnsCount: this.maxColumnsCount,
tainacanApiRoot: this.tainacanApiRoot,
tainacanBaseUrl: this.tainacanBaseUrl,
tainacanSiteUrl: this.tainacanSiteUrl,
@ -65,15 +75,19 @@ document.addEventListener("DOMContentLoaded", () => {
this.metadatumType = this.$el.attributes['metadatum-type'] != undefined ? this.$el.attributes['metadatum-type'].value : undefined;
this.collectionId = this.$el.attributes['collection-id'] != undefined ? this.$el.attributes['collection-id'].value : undefined;
this.collectionSlug = this.$el.attributes['collection-slug'] != undefined ? this.$el.attributes['collection-slug'].value : undefined;
this.appendChildTerms = this.$el.attributes['append-child-terms'] != undefined ? this.$el.attributes['append-child-terms'].value == 'true' : false;
this.parentTermId = this.$el.attributes['parent-term-id'] != undefined ? this.$el.attributes['parent-term-id'].value : undefined;
this.showImage = this.$el.attributes['show-image'] != undefined ? this.$el.attributes['show-image'].value == 'true' : true;
this.nameInsideImage = this.$el.attributes['name-inside-image'] != undefined ? this.$el.attributes['name-inside-image'].value == 'true' : false;
this.showItemsCount = this.$el.attributes['show-items-count'] != undefined ? this.$el.attributes['show-items-count'].value == 'true' : true;
this.showSearchBar = this.$el.attributes['show-search-bar'] != undefined ? this.$el.attributes['show-search-bar'].value == 'true' : false;
this.showLoadMore = this.$el.attributes['show-load-more'] != undefined ? this.$el.attributes['show-load-more'].value == 'true' : false;
this.layout = this.$el.attributes['layout'] != undefined ? this.$el.attributes['layout'].value : undefined;
this.cloudRate = this.$el.attributes['cloud-rate'] != undefined ? Number(this.$el.attributes['cloud-rate'].value) : undefined;
this.gridMargin = this.$el.attributes['grid-margin'] != undefined ? Number(this.$el.attributes['grid-margin'].value) : undefined;
this.linkTermFacetsToTermPage = this.$el.attributes['link-term-facets-to-term-page'] != undefined ? this.$el.attributes['link-term-facets-to-term-page'].value == 'true' : true;
this.maxFacetsNumber = this.$el.attributes['max-facets-number'] != undefined ? this.$el.attributes['max-facets-number'].value : undefined;
this.maxColumnsCount = this.$el.attributes['max-columns-count'] != undefined ? this.$el.attributes['max-columns-count'].value : 5;
this.tainacanApiRoot = this.$el.attributes['tainacan-api-root'] != undefined ? this.$el.attributes['tainacan-api-root'].value : undefined;
this.tainacanBaseUrl = this.$el.attributes['tainacan-base-url'] != undefined ? this.$el.attributes['tainacan-base-url'].value : undefined;
this.tainacanSiteUrl = this.$el.attributes['tainacan-site-url'] != undefined ? this.$el.attributes['tainacan-site-url'].value : undefined;

View File

@ -30,76 +30,105 @@
@input="(value) => applySearchString(value)"
type="text">
</div>
<ul
v-if="isLoading"
:style="{
gridTemplateColumns: layout == 'grid' ? 'repeat(auto-fill, ' + (gridMargin + 185) + 'px)' : 'inherit',
marginTop: showSearchBar ? '1.5em' : '0px'
}"
class="facets-list"
:class="'facets-layout-' + layout + (!showName ? ' facets-list-without-margin' : '')">
<template v-if="isLoading">
<ul
v-if="layout !== 'list'"
:style="{
gridGap: layout == 'grid' ? (gridMargin + 'px') : 'inherit',
marginTop: showSearchBar ? '1.5em' : '4px'
}"
class="facets-list"
:class="'facets-layout-' + layout + (!showName ? ' facets-list-without-margin' : '') + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '')">
<li
:key="facet"
v-for="facet in Number(maxFacetsNumber)"
class="facet-list-item skeleton"
:style="{
marginBottom: layout == 'grid' && ((metadatumType == 'Relationship' || metadatumType == 'Taxonomy') && showImage) ? (showName ? gridMargin + 12 : gridMargin) + 'px' : '',
height: getSkeletonHeight()
marginBottom: layout == 'grid' && ((isMetadatumTypeRelationship || isMetadatumTypeTaxonomy) && showImage) ? (showName ? gridMargin + 12 : gridMargin) + 'px' : '',
minHeight: getSkeletonHeight()
}" />
</ul>
</ul>
<ul
v-else
:style="{
marginTop: showSearchBar ? '1.5em' : '4px'
}"
class="facets-list"
:class="'facets-layout-' + layout + (!showName ? ' facets-list-without-margin' : '') + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '')">
<div
style="margin: 2px 6px"
v-for="column in Number(maxColumnsCount)"
:key="column">
<li
v-for="facet in Math.ceil(maxFacetsNumber/maxColumnsCount)"
:key="facet"
class="facet-list-item skeleton"
:style="{
marginBottom: layout == 'grid' && ((isMetadatumTypeRelationship || isMetadatumTypeTaxonomy) && showImage) ? (showName ? gridMargin + 12 : gridMargin) + 'px' : '',
minHeight: getSkeletonHeight()
}" />
</div>
</ul>
</template>
<div v-else>
<ul
v-if="facets.length > 0"
v-if="facets.length > 0 && layout != 'list'"
:style="{
gridTemplateColumns: layout == 'grid' ? 'repeat(auto-fill, ' + (gridMargin + 185) + 'px)' : 'inherit',
gridGap: layout == 'grid' ? (gridMargin + 'px') : 'inherit',
marginTop: showSearchBar ? '1.5em' : '0px'
}"
class="facets-list"
:class="'facets-layout-' + layout">
<li
:key="index"
:class="'facets-layout-' + layout + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '')">
<facets-list-theme-unit
v-for="(facet, index) of facets"
class="facet-list-item"
:class="(!showImage ? 'facet-without-image' : '')"
:style="{ marginBottom: layout == 'grid' ? gridMargin + 'px' : ''}">
<a
:id="isNaN(facet.id) ? facet.id : 'facet-id-' + facet.id"
:href="facet.url"
target="_blank"
:style="{ fontSize: layout == 'cloud' && facet.total_items ? + (1 + (cloudRate/4) * Math.log(facet.total_items)) + 'em' : ''}">
<img
v-if="metadatumType == 'Taxonomy'"
:src="
facet.entity && facet.entity['header_image']
?
facet.entity['header_image']
:
`${tainacanBaseUrl}/assets/images/placeholder_square.png`
"
:alt="facet.title ? facet.title : $root.__('Thumbnail', 'tainacan')">
<img
v-if="metadatumType == 'Relationship'"
:src="
facet.entity.thumbnail && facet.entity.thumbnail['tainacan-medium'][0] && facet.entity.thumbnail['tainacan-medium'][0]
?
facet.entity.thumbnail['tainacan-medium'][0]
:
(facet.entity.thumbnail && facet.entity.thumbnail['thumbnail'][0] && facet.entity.thumbnail['thumbnail'][0]
?
facet.entity.thumbnail['thumbnail'][0]
:
`${tainacanBaseUrl}/assets/images/placeholder_square.png`)
"
:alt="facet.title ? facet.title : $root.__('Thumbnail', 'tainacan')">
<span>{{ facet.label ? facet.label : '' }}</span>
<span
v-if="facet.total_items"
class="facet-item-count"
:style="{ display: !showItemsCount ? 'none' : '' }">
&nbsp;({{ facet.total_items }})
</span>
</a>
</li>
:key="index"
:show-search-bar="showSearchBar"
:show-image="showImage"
:name-inside-image="nameInsideImage"
:child-facets-object="childFacetsObject"
:append-child-terms="appendChildTerms"
:facet="facet"
:cloud-rate="cloudRate"
:tainacan-base-url="tainacanBaseUrl"
:layout="layout"
:metadatum-type="metadatumType"
:show-items-count="showItemsCount"
:is-loading-child-terms="isloadingChildTerms"
:link-term-facets-to-term-page="linkTermFacetsToTermPage"
:is-metadatum-type-taxonomy="isMetadatumTypeTaxonomy"
:is-metadatum-type-relationship="isMetadatumTypeRelationship"
@on-display-child-terms="displayChildTerms" />
</ul>
<ul
v-if="facets.length > 0 && layout == 'list'"
:style="{
marginTop: showSearchBar ? '1.5em' : '0px'
}"
class="facets-list"
:class="'facets-layout-' + layout + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '')">
<div
v-for="column in Number(maxColumnsCount)"
:key="column">
<facets-list-theme-unit
v-for="(facet, index) of facets.slice((column - 1) * Math.ceil(facets.length/maxColumnsCount), column * Math.ceil(facets.length/maxColumnsCount))"
:key="index"
:show-search-bar="showSearchBar"
:show-image="showImage"
:name-inside-image="nameInsideImage"
:child-facets-object="childFacetsObject"
:append-child-terms="appendChildTerms"
:facet="facet"
:cloud-rate="cloudRate"
:tainacan-base-url="tainacanBaseUrl"
:layout="layout"
:metadatum-type="metadatumType"
:show-items-count="showItemsCount"
:is-loading-child-terms="isloadingChildTerms"
:link-term-facets-to-term-page="linkTermFacetsToTermPage"
:is-metadatum-type-taxonomy="isMetadatumTypeTaxonomy"
:is-metadatum-type-relationship="isMetadatumTypeRelationship"
@on-display-child-terms="displayChildTerms" />
</div>
</ul>
<button
@ -143,15 +172,19 @@ export default {
metadatumType: String,
collectionId: String,
collectionSlug: String,
parentTermId: String,
parentTermId: String,
showImage: Boolean,
nameInsideImage: Boolean,
showItemsCount: Boolean,
showSearchBar: Boolean,
showLoadMore: Boolean,
appendChildTerms: Boolean,
linkTermFacetsToTermPage: Boolean,
layout: String,
cloudRate: Number,
gridMargin: Number,
maxFacetsNumber: Number,
maxColumnsCount: Number,
tainacanApiRoot: String,
tainacanBaseUrl: String,
tainacanSiteUrl: String,
@ -160,10 +193,12 @@ export default {
data() {
return {
facets: [],
childFacetsObject: {},
collection: undefined,
facetsRequestSource: undefined,
searchString: '',
isLoading: false,
isloadingChildTerms: null,
isLoadingCollection: false,
localMaxFacetsNumber: undefined,
localOrder: undefined,
@ -173,6 +208,14 @@ export default {
lastTerm: undefined
}
},
computed: {
isMetadatumTypeRelationship() {
return (this.metadatumType == 'Tainacan\\Metadata_Types\\Relationship') || (this.metadatumType == this.$root.__('Relationship', 'tainacan')) || (this.metadatumType == 'Relationship');
},
isMetadatumTypeTaxonomy() {
return (this.metadatumType == 'Tainacan\\Metadata_Types\\Taxonomy') || (this.metadatumType == this.$root.__('Taxonomy', 'tainacan')) || (this.metadatumType == 'Taxonomy');
}
},
created() {
this.tainacanAxios = axios.create({ baseURL: this.tainacanApiRoot });
this.offset = 0;
@ -235,7 +278,7 @@ export default {
queryObject.last_term = this.lastTerm;
// Set up parentTerm for taxonomies
if (this.parentTermId !== undefined && this.parentTermId !== null && this.parentTermId !== '' && this.metadatumType == 'Taxonomy')
if (this.parentTermId !== undefined && this.parentTermId !== null && this.parentTermId !== '' && this.isMetadatumTypeTaxonomy)
queryObject.parent = this.parentTermId;
else {
delete queryObject.parent;
@ -250,10 +293,11 @@ export default {
this.tainacanAxios.get(endpoint, { cancelToken: this.facetsRequestSource.token })
.then(response => {
if (this.metadatumType == 'Taxonomy') {
if (this.isMetadatumTypeTaxonomy) {
for (let facet of response.data.values) {
this.facets.push(Object.assign({
url: facet.entity && facet.entity.url ? facet.entity.url : this.tainacanSiteUrl + '/' + this.collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value
term_url: facet.entity && facet.entity.url ? facet.entity.url : this.tainacanSiteUrl + '/' + this.collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value,
url: this.tainacanSiteUrl + '/' + this.collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value
}, facet));
}
} else {
@ -273,15 +317,82 @@ export default {
// console.log(error);
});
},
fetchChildTerms(parentTermId) {
this.isloadingChildTerms = parentTermId;
let endpoint = '/facets/' + this.metadatumId;
let query = endpoint.split('?')[1];
let queryObject = qs.parse(query);
// Set up max facets to be shown
if (this.maxFacetsNumber != undefined && Number(this.maxFacetsNumber) > 0)
queryObject.number = this.maxFacetsNumber;
else if (queryObject.number != undefined && queryObject.number > 0)
this.localMaxFacetsNumber = queryObject.number;
else {
queryObject.number = 12;
this.localMaxFacetsNumber = 12;
}
// Set up searching string
if (this.searchString != undefined)
queryObject.search = this.searchString;
else if (queryObject.search != undefined)
this.searchString = queryObject.search;
else {
delete queryObject.search;
this.searchString = undefined;
}
// Set up paging
queryObject.offset = this.offset;
if (this.lastTerm != undefined)
queryObject.last_term = this.lastTerm;
// Parameter fo tech entity object with image and url
queryObject['context'] = 'extended';
queryObject['parent'] = parentTermId
endpoint = endpoint.split('?')[0] + '?' + qs.stringify(queryObject);
this.tainacanAxios.get(endpoint, { cancelToken: this.facetsRequestSource.token })
.then(response => {
let childFacets = [];
for (let facet of response.data.values) {
childFacets.push(Object.assign({
term_url: facet.entity && facet.entity.url ? facet.entity.url : this.tainacanSiteUrl + '/' + this.collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value,
url: this.tainacanSiteUrl + '/' + this.collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value
}, facet));
}
this.$set(this.childFacetsObject, parentTermId, {
facets: childFacets,
visible: true
});
this.isloadingChildTerms = null;
}).catch(() => {
this.isloadingChildTerms = null;
// console.log(error);
});
},
displayChildTerms(parentTermId) {
if (this.childFacetsObject[parentTermId]) {
this.$set(this.childFacetsObject[parentTermId], 'visible', !this.childFacetsObject[parentTermId].visible);
} else
this.fetchChildTerms(parentTermId)
},
getSkeletonHeight() {
switch(this.layout) {
case 'grid':
if ((this.metadatumType == 'Relationship' || this.metadatumType == 'Taxonomy') && this.showImage)
if ((this.isMetadatumTypeRelationship || this.isMetadatumTypeTaxonomy) && this.showImage)
return '230px';
else
return '24px'
case 'list':
if ((this.metadatumType == 'Relationship' || this.metadatumType == 'Taxonomy') && this.showImage)
if ((this.isMetadatumTypeRelationship || this.isMetadatumTypeTaxonomy) && this.showImage)
return '54px';
else
return '24px'

View File

@ -217,52 +217,7 @@
}
}
// Grid View Mode ----------------------------------------------------
ul.facets-list.facets-layout-grid,
ul.facets-list-edit.facets-layout-grid {
padding: 0;
@include display-grid;
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(auto-fill, 220px);
grid-gap: 0px;
justify-content: space-evenly;
list-style-type: none;
li.facet-list-item {
position: relative;
display: block;
margin: 12px;
width: 185px;
a {
color: var(--tainacan-block-gray5, $gray5);
border: none;
font-weight: bold;
line-height: normal;
}
img {
height: auto;
width: 185px;
min-width: 185px;
padding: 0px;
margin-bottom: 0.5em;
}
span.facet-item-count {
color: var(--tainacan-block-gray3, $gray3);
}
&.facet-without-image img {
display: none;
}
&:hover a {
color: var(--tainacan-block-gray5, $gray5);
text-decoration: none;
}
}
}
// Apply to all view modes
ul.facets-list-edit li.facet-list-item {
display: flex;
align-items: flex-start;
@ -299,15 +254,165 @@
border: 1px solid var(--tainacan-block-gray3, $gray3) !important;
}
}
@media only screen and (max-width: 498px) {
ul.facets-list.facets-layout-grid,
ul.facets-list-edit.facets-layout-grid {
grid-template-columns: repeat(auto-fill, 100%);
li.facet-list-item {
// Grid View Mode ----------------------------------------------------
ul.facets-list.facets-layout-grid,
ul.facets-list-edit.facets-layout-grid {
padding: 0;
@include display-grid;
justify-content: space-evenly;
list-style-type: none;
&:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7) {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr);
}
&.max-columns-count-7 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(7, 1fr);
}
&.max-columns-count-6 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(6, 1fr);
}
&.max-columns-count-5 {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr);
}
&.max-columns-count-4 {
-ms-grid-columns: 220px 220px 220px 220px;
grid-template-columns: repeat(4, 1fr);
}
&.max-columns-count-3 {
-ms-grid-columns: 220px 220px 220px;
grid-template-columns: repeat(3, 1fr);
}
&.max-columns-count-2 {
-ms-grid-columns: 220px 220px;
grid-template-columns: repeat(2, 1fr);
}
&.max-columns-count-1 {
-ms-grid-columns: 220px;
grid-template-columns: repeat(1, 1fr);
}
@media only screen and (max-width: 1600px) {
&.max-columns-count-7,
&.max-columns-count-6 { -ms-grid-columns: 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(6, 1fr);
}
}
@media only screen and (max-width: 1400px) {
&.max-columns-count-7,
&.max-columns-count-6,
&.max-columns-count-5 {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr);
}
}
@media only screen and (max-width: 1280px) {
&:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
&.max-columns-count-7,
&.max-columns-count-6,
&.max-columns-count-5,
&.max-columns-count-4 {
-ms-grid-columns: 220px 220px 220px 220px;
grid-template-columns: repeat(4, 1fr);
}
}
@media only screen and (max-width: 1024px) {
&:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
&.max-columns-count-7,
&.max-columns-count-6,
&.max-columns-count-5,
&.max-columns-count-4,
&.max-columns-count-3 {
-ms-grid-columns: 220px 220px 220px;
grid-template-columns: repeat(3, 1fr);
}
}
@media only screen and (max-width: 768px) {
&:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
&.max-columns-count-7,
&.max-columns-count-6,
&.max-columns-count-5,
&.max-columns-count-4,
&.max-columns-count-3,
&.max-columns-count-2 {
-ms-grid-columns: 220px 220px;
grid-template-columns: repeat(2, 1fr);
}
}
@media only screen and (max-width: 498px) {
&:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
&.max-columns-count-7,
&.max-columns-count-6,
&.max-columns-count-5,
&.max-columns-count-4,
&.max-columns-count-3,
&.max-columns-count-2,
&.max-columns-count-1 {
-ms-grid-columns: 220px;
grid-template-columns: repeat(1, 1fr);
}
}
li.facet-list-item {
position: relative;
display: block;
width: 100%;
flex-basis: 220px; // Helps with the flex fallback in case grid is not available;
a {
color: var(--tainacan-block-gray5, $gray5);
border: none;
font-weight: bold;
line-height: normal;
display: block;
}
&:not(.facet-with-name-inside-image) img {
height: auto;
width: 100%;
img { width: 100%; }
padding: 0px;
margin-bottom: 0.5em;
}
&:not(.facet-with-name-inside-image) span.facet-item-count {
color: var(--tainacan-block-gray3, $gray3);
}
&.facet-with-name-inside-image a span {
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.75);
opacity: 0;
padding: 8px 12px;
word-break: break-word;
transition: opacity 0.5s ease;
max-width: 100%;
}
&.facet-with-name-inside-image a span:first-of-type {
left: 0;
bottom: 0;
border-top-right-radius: 2px;
}
&.facet-with-name-inside-image a span:last-of-type {
right: 0;
top: 0;
border-bottom-left-radius: 2px;
}
&:hover.facet-with-name-inside-image a span { opacity: 1 };
&:hover a {
color: var(--tainacan-block-gray5, $gray5);
text-decoration: none;
}
svg {
fill: var(--tainacan-block-gray4, $gray4);
margin-left: auto;
overflow: visible;
}
}
}
@ -316,21 +421,71 @@
ul.facets-list.facets-layout-list,
ul.facets-list-edit.facets-layout-list {
padding: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
padding-left: 0;
margin: 0;
margin-left: 0;
@include display-grid;
align-items: self-start;
list-style-type: none;
&.max-columns-count-7 {
grid-template-columns: repeat(7, auto);
@media only screen and (max-width: 1600px) { grid-template-columns: repeat(6, auto); }
@media only screen and (max-width: 1400px) { grid-template-columns: repeat(5, auto); }
@media only screen and (max-width: 1280px) { grid-template-columns: repeat(4, auto); }
@media only screen and (max-width: 1024px) { grid-template-columns: repeat(3, auto); }
@media only screen and (max-width: 768px) { grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) { grid-template-columns: repeat(1, auto); }
}
&.max-columns-count-6 {
grid-template-columns: repeat(6, auto);
@media only screen and (max-width: 1400px) { grid-template-columns: repeat(5, auto); }
@media only screen and (max-width: 1280px) { grid-template-columns: repeat(4, auto); }
@media only screen and (max-width: 1024px) { grid-template-columns: repeat(3, auto); }
@media only screen and (max-width: 768px) { grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) { grid-template-columns: repeat(1, auto); }
}
&.max-columns-count-5 {
grid-template-columns: repeat(5, auto);
@media only screen and (max-width: 1280px) { grid-template-columns: repeat(4, auto); }
@media only screen and (max-width: 1024px) { grid-template-columns: repeat(3, auto); }
@media only screen and (max-width: 768px) { grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) { grid-template-columns: repeat(1, auto); }
}
&.max-columns-count-4 {
grid-template-columns: repeat(4, auto);
@media only screen and (max-width: 1024px) { grid-template-columns: repeat(3, auto); }
@media only screen and (max-width: 768px) { grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) { grid-template-columns: repeat(1, auto); }
}
&.max-columns-count-3 {
grid-template-columns: repeat(3, auto);
@media only screen and (max-width: 768px) { grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) { grid-template-columns: repeat(1, auto); }
}
&.max-columns-count-2 {
grid-template-columns: repeat(2, auto);
@media only screen and (max-width: 498px) { grid-template-columns: repeat(1, auto); }
}
&.max-columns-count-1 {
grid-template-columns: repeat(1, auto);
}
&>div {
flex-basis: 220px; // Helps flex fallback in case grid is not available
}
li.facet-list-item {
position: relative;
margin: 12px 12px 24px 12px;
margin-bottom: 12px;
display: inline-block;
padding: 12px 12px 24px 12px;
margin-bottom: 0px;
min-height: 54px;
min-width: calc(20% - 24px);
width: calc(20% - 24px);
min-width: 100%;
width: 100%;
a {
color: var(--tainacan-block-gray5, $gray5);
line-height: normal;
height: auto;
display: flex;
align-items: center;
@ -346,10 +501,17 @@
margin-right: 20px;
}
svg {
fill: var(--tainacan-block-gray4, $gray4);
margin-left: auto;
overflow: visible;
}
&.facet-without-image {
min-height: 0.875em;
a {
height: 0.875em;
height: auto;
min-height: 0.875em;
}
img {
display: none;
@ -365,26 +527,32 @@
text-decoration: none;
}
@media only screen and (max-width: 1600px) {
min-width: calc(25% - 24px);
width: calc(25% - 24px);
&.facet-term-with-children{
font-weight: bold !important;
cursor: pointer;
}
@media only screen and (max-width: 1024px) {
min-width: calc(33.333% - 24px);
width: calc(33.333% - 24px);
}
@media only screen and (max-width: 768px) {
min-width: calc(50% - 24px);
width: calc(50% - 24px);
}
@media only screen and (max-width: 498px) {
min-width: calc(100% - 24px);
width: calc(100% - 24px);
}
.child-term-facets {
padding-left: 7px;
margin: 12px 0px -12px 0px;
img {
width: 36px;
min-width: 36px;
}
.facet-list-item {
padding: 12px;
font-weight: normal;
}
.no-child-facet-found {
font-weight: normal;
font-style: italic;
font-size: 0.875em;
margin: 0;
color: var(--tainacan-block-gray3, $gray3);
}
}
}
}
@ -420,6 +588,13 @@
margin-right: 20px;
}
svg {
fill: var(--tainacan-block-gray4, $gray4);
margin-left: auto;
overflow: visible;
margin-bottom: -12px;
}
&.facet-without-image img {
display: none;
}
@ -427,9 +602,16 @@
color: var(--tainacan-block-gray3, $gray3);
}
&:hover a {
&:hover,
&:hover a {
color: var(--tainacan-block-primary, $primary);
text-decoration: none;
cursor: pointer;
}
&:hover.facet-term-with-children,
&:hover.facet-term-with-children a {
color: var(--tainacan-block-gray5, $gray5);
text-decoration: none;
}
}
}
@ -453,3 +635,16 @@
}
}
}
.child-reveal-enter-active {
overflow: hidden;
animation-name: filter-item-in;
animation-duration: 0.1s;
animation-timing-function: ease;
}
.child-reveal-leave-active {
overflow: hidden;
animation-name: filter-item-out;
animation-duration: 0.1s;
animation-timing-function: ease;
}

View File

@ -2,15 +2,17 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { BaseControl, RangeControl, Spinner, Button, ToggleControl, Tooltip, Placeholder, Toolbar, ToolbarGroup, ToolbarButton, PanelBody } = wp.components;
const { BaseControl, RangeControl, Spinner, Button, ToggleControl, Tooltip, Placeholder, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import MetadataModal from './metadata-modal.js';
import ParentTermModal from './parent-term-modal.js';
import tainacan from '../../js/axios.js';
import axios from 'axios';
import qs from 'qs';
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import DeprecatedBlocks from './facets-list-deprecated.js';
registerBlockType('tainacan/facets-list', {
title: __('Tainacan Facets List', 'tainacan'),
@ -58,6 +60,10 @@ registerBlockType('tainacan/facets-list', {
type: Boolean,
default: true
},
nameInsideImage: {
type: Boolean,
default: false
},
showItemsCount: {
type: Boolean,
default: true
@ -84,7 +90,7 @@ registerBlockType('tainacan/facets-list', {
},
gridMargin: {
type: Number,
default: 0
default: 24
},
metadatumId: {
type: String,
@ -129,11 +135,32 @@ registerBlockType('tainacan/facets-list', {
isParentTermModalOpen: {
type: Boolean,
default: false
},
maxColumnsCount: {
type: Number,
default: 5
},
appendChildTerms: {
type: Boolean,
default: false
},
childFacetsObject: {
type: Object,
default: {}
},
linkTermFacetsToTermPage: {
type: Boolean,
default: true
},
isLoadingChildTerms: {
type: Number,
default: null
}
},
supports: {
align: ['full', 'wide'],
html: false,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected, clientId }){
let {
@ -143,6 +170,7 @@ registerBlockType('tainacan/facets-list', {
collectionId,
collectionSlug,
showImage,
nameInsideImage,
showItemsCount,
showLoadMore,
showSearchBar,
@ -157,24 +185,65 @@ registerBlockType('tainacan/facets-list', {
searchString,
isLoading,
parentTerm,
isParentTermModalOpen
isParentTermModalOpen,
maxColumnsCount,
appendChildTerms,
childFacetsObject,
linkTermFacetsToTermPage,
isLoadingChildTerms
} = attributes;
// Obtains block's client id to render it on save function
setAttributes({ blockId: clientId });
// Sets some defaults that were not working
if (maxColumnsCount === undefined) {
maxColumnsCount = 5;
setAttributes({ maxColumnsCount: maxColumnsCount });
}
if (linkTermFacetsToTermPage === undefined) {
linkTermFacetsToTermPage = true;
setAttributes({ linkTermFacetsToTermPage: linkTermFacetsToTermPage });
}
if (showImage === undefined) {
showImage = (layout == 'grid');
setAttributes({ showImage: showImage });
}
if (nameInsideImage === undefined) {
nameInsideImage = false;
setAttributes({ nameInsideImage: nameInsideImage });
}
if (showItemsCount === undefined) {
showItemsCount = true;
setAttributes({ showItemsCount: showItemsCount });
}
if (gridMargin === undefined) {
gridMargin = 24;
setAttributes({ gridMargin: gridMargin });
}
// Uptades previous logic of metadatum type
if (metadatumType == __('Taxonomy', 'tainacan')) {
metadatumType = 'Tainacan\\Metadata_Types\\Taxonomy';
setAttributes({ metadatumType: metadatumType });
}
if (metadatumType == __('Relationship', 'tainacan')) {
metadatumType = 'Tainacan\\Metadata_Types\\Relationship';
setAttributes({ metadatumType: metadatumType });
}
function prepareFacet(facet) {
const facetId = facet.id != undefined ? facet.id : facet.value;
return (
<li
key={ facet.id }
className={ 'facet-list-item' + (!showImage ? ' facet-without-image' : '') }
style={{ marginBottom: layout == 'grid' ? gridMargin + 'px' : ''}}>
key={ facetId }
className={ 'facet-list-item' + (!showImage ? ' facet-without-image' : '') + (nameInsideImage ? ' facet-with-name-inside-image' : '') + ((appendChildTerms && facet.total_children > 0) ? ' facet-term-with-children': '')}>
<a
id={ isNaN(facet.id) ? facet.id : 'facet-id-' + facet.id }
href={ facet.url }
id={ isNaN(facetId) ? facetId : 'facet-id-' + facetId }
href={ !appendChildTerms ? ((linkTermFacetsToTermPage && isMetadatumTypeTaxonomy(metadatumType)) ? facet.term_url : facet.url) : (facet.total_children > 0 ? null : (linkTermFacetsToTermPage ? facet.term_url : facet.url)) }
onClick={ () => { (appendChildTerms && facet.total_children > 0) ? displayChildTerms(facetId) : null } }
target="_blank"
style={{ fontSize: layout == 'cloud' && facet.total_items ? + (1 + (cloudRate/4) * Math.log(facet.total_items)) + 'rem' : ''}}>
{ metadatumType == 'Taxonomy' ?
{ isMetadatumTypeTaxonomy(metadatumType) ?
<img
src={
facet.entity && facet.entity['header_image']
@ -186,7 +255,7 @@ registerBlockType('tainacan/facets-list', {
alt={ facet.label ? facet.label : __( 'Thumbnail', 'tainacan' ) }/>
: null
}
{ metadatumType == 'Relationship' ?
{ isMetadatumTypeRelationship(metadatumType) ?
<img
src={
facet.entity.thumbnail && facet.entity.thumbnail['tainacan-medium'][0] && facet.entity.thumbnail['tainacan-medium'][0]
@ -204,7 +273,49 @@ registerBlockType('tainacan/facets-list', {
}
<span>{ facet.label ? facet.label : '' }</span>
{ facet.total_items ? <span class="facet-item-count" style={{ display: !showItemsCount ? 'none' : '' }}>&nbsp;({ facet.total_items })</span> : null }
{ appendChildTerms && facet.total_children > 0 ?
( childFacetsObject[facetId] && childFacetsObject[facetId].visible ?
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="-4 -3 16 16"
height="32px"
width="32px">
<g transform="translate(-69.294715,-148.68529)">
<path d="m 71.096008,154.8776 2.43204,-2.4257 2.4257,2.4257 0.7493,-0.74294 -3.175,-3.175 -3.175,3.175 z" />
</g>
</svg>
:
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="-4 -3 16 16"
height="32px"
width="32px">
<g transform="translate(-69.294715,-148.68529)">
<path d="m 71.096008,150.95966 2.43204,2.4257 2.4257,-2.4257 0.7493,0.74294 -3.175,3.175 -3.175,-3.175 z" />
</g>
</svg>
)
:null }
</a>
{ appendChildTerms && facet.total_children > 0 ?
isLoadingChildTerms == facetId ?
<div class="spinner-container">
<Spinner />
</div>
:
( childFacetsObject[facetId] && childFacetsObject[facetId].visible ?
<ul class="child-term-facets">
{
childFacetsObject[facetId].facets.length ?
childFacetsObject[facetId].facets.map((aChildTermFacet) => {
return prepareFacet(aChildTermFacet);
})
:
<p class="no-child-facet-found">{ __( 'This facet children terms do not contain items.', 'tainacan' )}</p>
}
</ul>
: null )
: null }
</li>
);
}
@ -248,14 +359,14 @@ registerBlockType('tainacan/facets-list', {
}
// Set up parentTerm for taxonomies
if (parentTerm && parentTerm.id !== undefined && parentTerm.id !== null && parentTerm.id !== '' && metadatumType == 'Taxonomy')
if (parentTerm && parentTerm.id !== undefined && parentTerm.id !== null && parentTerm.id !== '' && isMetadatumTypeTaxonomy(metadatumType)) {
queryObject.parent = parentTerm.id;
else {
} else {
delete queryObject.parent;
setAttributes({ parentTerm: null });
}
// Parameter fo tech entity object with image and url
// Parameter to fech entity object with image and url
queryObject['context'] = 'extended';
endpoint = endpoint.split('?')[0] + '?' + qs.stringify(queryObject);
@ -264,10 +375,11 @@ registerBlockType('tainacan/facets-list', {
.then(response => {
facetsObject = [];
if (metadatumType == 'Taxonomy') {
if (isMetadatumTypeTaxonomy(metadatumType)) {
for (let facet of response.data.values) {
facetsObject.push(Object.assign({
url: facet.entity && facet.entity.url ? facet.entity.url : tainacan_blocks.site_url + '/' + collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value
term_url: facet.entity && facet.entity.url ? facet.entity.url : tainacan_blocks.site_url + '/' + collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value,
url: tainacan_blocks.site_url + '/' + collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value
}, facet));
}
} else {
@ -277,24 +389,104 @@ registerBlockType('tainacan/facets-list', {
}, facet));
}
}
for (let facet of facetsObject)
facets.push(prepareFacet(facet));
isLoading = false;
// Updates local storage in order to facetsObject to be used in the following functions.
setAttributes({
content: <div></div>,
facets: facets,
facetsObject: facetsObject,
isLoading: false,
facetsRequestSource: facetsRequestSource
});
updateContent();
});
}
function displayChildTerms(parentTermId) {
if (childFacetsObject[parentTermId]) {
childFacetsObject[parentTermId].visible = !childFacetsObject[parentTermId].visible;
setAttributes({
childFacetsObject: childFacetsObject
});
updateContent();
} else
fetchChildTerms(parentTermId)
}
function fetchChildTerms(parentTermId) {
isLoadingChildTerms = parentTermId;
setAttributes({
isLoadingChildTerms: isLoadingChildTerms
});
updateContent();
let endpoint = '/facets/' + metadatumId;
let query = endpoint.split('?')[1];
let queryObject = qs.parse(query);
// Set up max facets to be shown
if (maxFacetsNumber != undefined && maxFacetsNumber > 0)
queryObject.number = maxFacetsNumber;
else if (queryObject.number != undefined && queryObject.number > 0)
setAttributes({ maxFacetsNumber: queryObject.number });
else {
queryObject.number = 12;
setAttributes({ maxFacetsNumber: 12 });
}
// Set up searching string
if (searchString != undefined)
queryObject.search = searchString;
else if (queryObject.search != undefined)
setAttributes({ searchString: queryObject.search });
else {
delete queryObject.search;
setAttributes({ searchString: undefined });
}
// Parameter to fech entity object with image and url
queryObject['context'] = 'extended';
// The term parent id
queryObject.parent = parentTermId;
endpoint = endpoint.split('?')[0] + '?' + qs.stringify(queryObject);
tainacan.get(endpoint)
.then(response => {
let childFacets = [];
for (let facet of response.data.values) {
childFacets.push(Object.assign({
term_url: facet.entity && facet.entity.url ? facet.entity.url : tainacan_blocks.site_url + '/' + collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value,
url: tainacan_blocks.site_url + '/' + collectionSlug + '/#/?taxquery[0][compare]=IN&taxquery[0][taxonomy]=' + facet.taxonomy + '&taxquery[0][terms][0]=' + facet.value
}, facet));
}
childFacetsObject[parentTermId] = {
facets: childFacets,
visible: true
}
isLoadingChildTerms = null;
// Updates local storage in order to childFacets to be used in the following functions.
setAttributes({
childFacetsObject: childFacetsObject,
isLoadingChildTerms: null,
});
updateContent();
});
}
function updateContent() {
facets = [];
for (let facet of facetsObject)
facets.push(prepareFacet(facet));
for (let facetObject of facetsObject)
facets.push(prepareFacet(facetObject));
setAttributes({
content: <div></div>,
@ -319,15 +511,16 @@ registerBlockType('tainacan/facets-list', {
function updateLayout(newLayout) {
layout = newLayout;
if (layout == 'grid')
showImage = true;
if (layout == 'list' || layout == 'cloud')
if (layout == 'grid' && appendChildTerms == true)
appendChildTerms = false;
if (layout == 'cloud' && showImage == true)
showImage = false;
setAttributes({
setAttributes({
showImage: showImage,
layout: layout,
showImage: showImage
appendChildTerms: appendChildTerms
});
updateContent();
}
@ -343,6 +536,14 @@ registerBlockType('tainacan/facets-list', {
}
}
// These two functions are necessary as previous versions of the block used a translated version of the type label as metadatum type.
function isMetadatumTypeRelationship(metadatumType) {
return (metadatumType == 'Tainacan\\Metadata_Types\\Relationship') || (metadatumType == __('Relationship', 'tainacan') );
}
function isMetadatumTypeTaxonomy(metadatumType) {
return (metadatumType == 'Tainacan\\Metadata_Types\\Taxonomy') || (metadatumType == __('Taxonomy', 'tainacan') );
}
// Executed only on the first load of page
if(content && content.length && content[0].type)
setContent();
@ -350,19 +551,19 @@ registerBlockType('tainacan/facets-list', {
const layoutControls = [
{
icon: 'grid-view',
title: __( 'Grid View' ),
title: __( 'Grid View', 'tainacan' ),
onClick: () => updateLayout('grid'),
isActive: layout === 'grid',
},
{
icon: 'list-view',
title: __( 'List View' ),
title: __( 'List View', 'tainacan' ),
onClick: () => updateLayout('list'),
isActive: layout === 'list',
},
{
icon: 'cloud',
title: __( 'Cloud View' ),
title: __( 'Cloud View', 'tainacan' ),
onClick: () => updateLayout('cloud'),
isActive: layout === 'cloud',
}
@ -379,51 +580,19 @@ registerBlockType('tainacan/facets-list', {
<div>
<BlockControls>
<Toolbar controls={ layoutControls } />
{ TainacanBlocksCompatToolbar({ controls: layoutControls }) }
{ facets.length ? (
tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openMetadataModal() } >
<p style={{ margin: 0 }}>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M21.43,13.64,19.32,16a2.57,2.57,0,0,1-2,1H11a3.91,3.91,0,0,0,0-.49,5.49,5.49,0,0,0-5-5.47V9.64A2.59,2.59,0,0,1,8.59,7H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,13.64ZM4,3A2,2,0,0,0,2,5v7.3a5.32,5.32,0,0,1,2-1V5H16V3ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1,0-7,2.74,2.74,0,0,1,.5,0A3.5,3.5,0,0,1,9,16a2.92,2.92,0,0,1,0,.51,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,1,0,5.5,18,1.5,1.5,0,0,0,7,16.53Z"/>
</svg>
</p>&nbsp;
{__('Select facets', 'tainacan')}
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openMetadataModal() }>
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M21.43,13.64,19.32,16a2.57,2.57,0,0,1-2,1H11a3.91,3.91,0,0,0,0-.49,5.49,5.49,0,0,0-5-5.47V9.64A2.59,2.59,0,0,1,8.59,7H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,13.64ZM4,3A2,2,0,0,0,2,5v7.3a5.32,5.32,0,0,1,2-1V5H16V3ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1,0-7,2.74,2.74,0,0,1,.5,0A3.5,3.5,0,0,1,9,16a2.92,2.92,0,0,1,0,.51,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,1,0,5.5,18,1.5,1.5,0,0,0,7,16.53Z"/>
</svg>
</p>&nbsp;
{__('Select facets', 'tainacan')}
</Button>
:
<ToolbarButton onClick={ () => openMetadataModal() }>
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M21.43,13.64,19.32,16a2.57,2.57,0,0,1-2,1H11a3.91,3.91,0,0,0,0-.49,5.49,5.49,0,0,0-5-5.47V9.64A2.59,2.59,0,0,1,8.59,7H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,13.64ZM4,3A2,2,0,0,0,2,5v7.3a5.32,5.32,0,0,1,2-1V5H16V3ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1,0-7,2.74,2.74,0,0,1,.5,0A3.5,3.5,0,0,1,9,16a2.92,2.92,0,0,1,0,.51,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,1,0,5.5,18,1.5,1.5,0,0,0,7,16.53Z"/>
</svg>
</p>&nbsp;
{__('Select facets', 'tainacan')}
</ToolbarButton>
}
</ToolbarGroup>
TainacanBlocksCompatToolbar({
label: __('Select facets', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M21.43,13.64,19.32,16a2.57,2.57,0,0,1-2,1H11a3.91,3.91,0,0,0,0-.49,5.49,5.49,0,0,0-5-5.47V9.64A2.59,2.59,0,0,1,8.59,7H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,13.64ZM4,3A2,2,0,0,0,2,5v7.3a5.32,5.32,0,0,1,2-1V5H16V3ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1,0-7,2.74,2.74,0,0,1,.5,0A3.5,3.5,0,0,1,9,16a2.92,2.92,0,0,1,0,.51,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,1,0,5.5,18,1.5,1.5,0,0,0,7,16.53Z"/>
</svg>,
onClick: openMetadataModal
})
): null
}
</BlockControls>
@ -461,27 +630,52 @@ registerBlockType('tainacan/facets-list', {
title={__('Facets', 'tainacan')}
initialOpen={ true }
>
<div>
<RangeControl
label={__('Maximum number of facets', 'tainacan')}
value={ maxFacetsNumber ? maxFacetsNumber : 12}
onChange={ ( aMaxFacetsNumber ) => {
maxFacetsNumber = aMaxFacetsNumber;
setAttributes( { maxFacetsNumber: aMaxFacetsNumber } )
setContent();
}}
min={ 1 }
max={ 96 }
/>
</div>
{ metadatumType == 'Taxonomy' ?
<RangeControl
label={__('Maximum number of facets', 'tainacan')}
value={ maxFacetsNumber ? maxFacetsNumber : 12}
onChange={ ( aMaxFacetsNumber ) => {
maxFacetsNumber = aMaxFacetsNumber;
setAttributes( { maxFacetsNumber: aMaxFacetsNumber } )
setContent();
}}
min={ 1 }
max={ 96 }
/>
<ToggleControl
label={__('Items count', 'tainacan')}
help={ showItemsCount ? __("Toggle to show items counter", 'tainacan') : __("Do not show items counter", 'tainacan')}
checked={ showItemsCount }
onChange={ ( isChecked ) => {
showItemsCount = isChecked;
setAttributes({ showItemsCount: showItemsCount });
updateContent();
}
}
/>
</PanelBody>
{/* Settings related only to facets from Taxonomy metadata */}
{ isMetadatumTypeTaxonomy(metadatumType) ?
<PanelBody
title={__('Taxonomy options', 'tainacan')}
initialOpen={ true }>
<div>
<ToggleControl
label={__('Link term facets to term page', 'tainacan')}
help={ linkTermFacetsToTermPage ? __("Link facets to the term items page instead of the collection page filtered by term", 'tainacan') : __("Toggle to link facets to the collection page filtered by the term instead of the term items page", 'tainacan')}
checked={ linkTermFacetsToTermPage }
onChange={ ( isChecked ) => {
linkTermFacetsToTermPage = isChecked;
setAttributes({ linkTermFacetsToTermPage: linkTermFacetsToTermPage });
updateContent();
}
}
/>
<BaseControl
id="parent-term-selection"
label={ (parentTerm && (parentTerm.id === '0' || parentTerm.id === 0)) ? __('Showing only:', 'tainacan') : __('Showing children of:', 'tainacan') }
help="Narrow terms to children of a parent term."
>
<span style={{ fontWeight: 'bold' }}>&nbsp;{ parentTerm && parentTerm.name ? parentTerm.name : __('Any term.', 'tainacan') }</span>
<span style={{ fontWeight: 'bold', top: '-3px', position: 'relative' }}>&nbsp;{ parentTerm && parentTerm.name ? parentTerm.name : __('Any term.', 'tainacan') }</span>
<br />
<Button
style={{ margin: '6px auto 16px auto', display: 'block' }}
@ -491,66 +685,111 @@ registerBlockType('tainacan/facets-list', {
{__('Select parent term', 'tainacan')}
</Button>
</BaseControl>
</div>
: null}
<hr></hr>
<div>
{ layout == 'list' && (metadatumType == 'Taxonomy' || metadatumType == 'Relationship') ?
<ToggleControl
label={__('Image', 'tainacan')}
help={ showImage ? __("Toggle to show facet's image", 'tainacan') : __("Do not show facet's image", 'tainacan')}
checked={ showImage }
onChange={ ( isChecked ) => {
showImage = isChecked;
setAttributes({ showImage: showImage });
updateContent();
}
}
/>
: null }
{ layout == 'grid' ?
<div>
{ (metadatumType == 'Taxonomy' || metadatumType == 'Relationship') ?
<ToggleControl
label={__('Image', 'tainacan')}
help={ showImage ? __("Toggle to show facet's image", 'tainacan') : __("Do not show facet's image", 'tainacan')}
checked={ showImage }
onChange={ ( isChecked ) => {
showImage = isChecked;
setAttributes({ showImage: showImage });
updateContent();
}
}
/> : null
}
<div style={{ marginTop: '16px'}}>
<RangeControl
label={__('Margin between facets in pixels', 'tainacan')}
value={ gridMargin }
onChange={ ( margin ) => {
gridMargin = margin;
setAttributes( { gridMargin: margin } )
{ parentTerm !== null && layout !== 'grid' && layout !== undefined ?
<ToggleControl
label={__('Append child terms', 'tainacan')}
help={ appendChildTerms ? __("Do not append child terms after each term found", 'tainacan') : __("Toggle to append child terms after each term found", 'tainacan')}
checked={ appendChildTerms }
onChange={ ( isChecked ) => {
appendChildTerms = isChecked;
setAttributes({ appendChildTerms: appendChildTerms });
updateContent();
}}
min={ 0 }
max={ 48 }
/>
</div>
</div>
: null }
<ToggleControl
label={__('Items count', 'tainacan')}
help={ showItemsCount ? __("Toggle to show items counter", 'tainacan') : __("Do not show items counter", 'tainacan')}
checked={ showItemsCount }
onChange={ ( isChecked ) => {
showItemsCount = isChecked;
setAttributes({ showItemsCount: showItemsCount });
}
}
/>
: null}
</div>
</PanelBody>
: null}
{/* Settings related only to grid view mode */}
{ layout == undefined || layout == 'grid' ?
<PanelBody
title={__('Grid view mode settings', 'tainacan')}
initialOpen={ true }
>
<div>
{ (isMetadatumTypeTaxonomy(metadatumType) || isMetadatumTypeRelationship(metadatumType)) ?
<ToggleControl
label={__('Name inside image', 'tainacan')}
help={ nameInsideImage ? __("Toggle to show facet's name inside the image", 'tainacan') : __("Do not show facet's name image", 'tainacan')}
checked={ nameInsideImage }
onChange={ ( isChecked ) => {
nameInsideImage = isChecked;
setAttributes({ nameInsideImage: nameInsideImage });
updateContent();
}
}
/> : null
}
<div style={{ marginTop: '16px'}}>
<RangeControl
label={__('Margin between facets in pixels', 'tainacan')}
value={ gridMargin }
onChange={ ( margin ) => {
gridMargin = margin;
setAttributes( { gridMargin: margin } )
updateContent();
}
}
/>
</div>
</PanelBody>
}}
min={ 0 }
max={ 48 }
/>
</div>
<div style={{ marginTop: '16px'}}>
<RangeControl
label={ __('Maximum number of columns on a wide screen', 'tainacan') }
value={ maxColumnsCount ? maxColumnsCount : 5 }
onChange={ ( aMaxColumnsCount ) => {
maxColumnsCount = aMaxColumnsCount;
setAttributes( { maxColumnsCount: aMaxColumnsCount } );
updateContent();
}}
min={ 1 }
max={ 7 }
/>
</div>
</div>
</PanelBody>
: null
}
{/* Settings related only to list view mode */}
{ layout == 'list' ?
<PanelBody
title={__('List view mode settings', 'tainacan')}
initialOpen={ true }
>
<div>
{ (isMetadatumTypeTaxonomy(metadatumType) || isMetadatumTypeRelationship(metadatumType)) ?
<ToggleControl
label={__('Image', 'tainacan')}
help={ showImage ? __("Toggle to show facet's image", 'tainacan') : __("Do not show facet's image", 'tainacan')}
checked={ showImage }
onChange={ ( isChecked ) => {
showImage = isChecked;
setAttributes({ showImage: showImage });
updateContent();
}
}
/>
: null }
<div style={{ marginTop: '16px'}}>
<RangeControl
label={ __('Maximum number of columns on a wide screen', 'tainacan') }
value={ maxColumnsCount ? maxColumnsCount : 5 }
onChange={ ( aMaxColumnsCount ) => {
maxColumnsCount = aMaxColumnsCount;
setAttributes( { maxColumnsCount: aMaxColumnsCount } );
updateContent();
}}
min={ 1 }
max={ 7 }
/>
</div>
</div>
</PanelBody>
: null
}
{/* Settings related only to cloud view mode */}
{ layout == 'cloud' ?
<PanelBody
title={__('Cloud settings', 'tainacan')}
@ -676,7 +915,7 @@ registerBlockType('tainacan/facets-list', {
{__('List facets from a Tainacan Collection or Repository', 'tainacan')}
</p>
{
parentTerm && parentTerm.id && metadatumType == 'Taxonomy'?
parentTerm && parentTerm.id && isMetadatumTypeTaxonomy(metadatumType)?
<div style={{ display: 'flex' }}>
<Button
isPrimary
@ -710,14 +949,32 @@ registerBlockType('tainacan/facets-list', {
<Spinner />
</div> :
<div>
<ul
style={{
gridTemplateColumns: layout == 'grid' ? 'repeat(auto-fill, ' + (gridMargin + 185) + 'px)' : 'inherit',
marginTop: showSearchBar ? '1.5rem' : '0px'
}}
className={'facets-list-edit facets-layout-' + layout }>
{ facets }
</ul>
{ layout !== 'list' ?
<ul
style={{
gridGap: layout == 'grid' ? (gridMargin + 'px') : 'inherit',
marginTop: showSearchBar ? '1.5rem' : '0px'
}}
className={ 'facets-list-edit facets-layout-' + layout + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '') }>
{ facets }
</ul>
:
<ul
style={{
marginTop: showSearchBar ? '1.5rem' : '0px'
}}
className={ 'facets-list-edit facets-layout-' + layout + (maxColumnsCount ? ' max-columns-count-' + maxColumnsCount : '') }>
{
Array.from(Array(maxColumnsCount).keys()).map( (column) => {
return <div>
{
facets.slice(column * Math.ceil(facets.length/maxColumnsCount), (column + 1) * Math.ceil(facets.length/maxColumnsCount))
}
</div>
})
}
</ul>
}
</div>
}
@ -755,6 +1012,7 @@ registerBlockType('tainacan/facets-list', {
collectionSlug,
parentTerm,
showImage,
nameInsideImage,
showItemsCount,
showLoadMore,
layout,
@ -763,7 +1021,10 @@ registerBlockType('tainacan/facets-list', {
metadatumId,
metadatumType,
maxFacetsNumber,
maxColumnsCount,
showSearchBar,
linkTermFacetsToTermPage,
appendChildTerms
} = attributes;
return <div
className={ className }
@ -771,15 +1032,19 @@ registerBlockType('tainacan/facets-list', {
metadatum-type={ metadatumType }
collection-id={ collectionId }
collection-slug={ collectionSlug }
parent-term-id={ parentTerm ? parentTerm.id : null }
parent-term-id={ parentTerm ? parentTerm.id : undefined }
show-image={ '' + showImage }
name-inside-image={ nameInsideImage === true ? 'true' : 'false' }
show-items-count={ '' + showItemsCount }
show-search-bar={ '' + showSearchBar }
show-load-more={ '' + showLoadMore }
append-child-terms={ (appendChildTerms === true ? 'true' : 'false') }
link-term-facets-to-term-page={ linkTermFacetsToTermPage === false ? 'false' : 'true' }
layout={ layout }
cloud-rate={ cloudRate }
grid-margin={ gridMargin }
max-facets-number={ maxFacetsNumber }
max-columns-count={ maxColumnsCount }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
tainacan-site-url={ tainacan_blocks.site_url }
@ -787,138 +1052,5 @@ registerBlockType('tainacan/facets-list', {
{ content }
</div>
},
deprecated: [
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
collectionSlug: {
type: String,
default: undefined
},
facets: {
type: Array,
default: []
},
facetsObject: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showItemsCount: {
type: Boolean,
default: true
},
showLoadMore: {
type: Boolean,
default: false
},
showSearchBar: {
type: Boolean,
value: false
},
layout: {
type: String,
default: 'grid'
},
cloudRate: {
type: Number,
default: 1
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
},
metadatumId: {
type: String,
default: undefined
},
metadatumType: {
type: String,
default: undefined
},
facetsRequestSource: {
type: String,
default: undefined
},
maxFacetsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
searchString: {
type: String,
default: undefined
},
blockId: {
type: String,
default: undefined
}
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
collectionSlug,
showImage,
showItemsCount,
showLoadMore,
layout,
cloudRate,
gridMargin,
metadatumId,
metadatumType,
maxFacetsNumber,
showSearchBar,
} = attributes;
return <div
className={ className }
metadatum-id={ metadatumId }
metadatum-type={ metadatumType }
collection-id={ collectionId }
collection-slug={ collectionSlug }
show-image={ '' + showImage }
show-items-count={ '' + showItemsCount }
show-search-bar={ '' + showSearchBar }
show-load-more={ '' + showLoadMore }
layout={ layout }
cloud-rate={ cloudRate }
grid-margin={ gridMargin }
max-facets-number={ maxFacetsNumber }
tainacan-api-root={ tainacan_plugin.root }
tainacan-base-url={ tainacan_plugin.base_url }
tainacan-site-url={ tainacan_plugin.site_url }
id={ 'wp-block-tainacan-facets-list_' + blockId }>
{ content }
</div>
}
}
]
deprecated: DeprecatedBlocks
});

View File

@ -38,7 +38,6 @@ export default class MetadataModal extends React.Component {
this.fetchModalCollections = this.fetchModalCollections.bind(this);
this.selectMetadatum = this.selectMetadatum.bind(this);
this.fetchModalMetadata = this.fetchModalMetadata.bind(this);
this.getMetadatumType = this.getMetadatumType.bind(this);
}
componentWillMount() {
@ -211,7 +210,8 @@ export default class MetadataModal extends React.Component {
otherModalMetadata.push({
name: metadatum.name,
id: metadatum.id,
type: this.getMetadatumType(metadatum)
type: metadatum.metadata_type,
typeLabel: metadatum.metadata_type_object ? metadatum.metadata_type_object.name : ''
});
}
@ -227,26 +227,6 @@ export default class MetadataModal extends React.Component {
});
}
getMetadatumType(metadatum) {
let metadatumType = metadatum.metadata_type_object ? metadatum.metadata_type_object.component : false;
if (metadatumType) {
switch(metadatumType) {
case 'tainacan-text': return __('Text', 'tainacan');
case 'tainacan-textarea': return __('Text area', 'tainacan');
case 'tainacan-date': return __('Date', 'tainacan');
case 'tainacan-numeric': return __('Numeric', 'tainacan');
case 'tainacan-selectbox': return __('Select box', 'tainacan');
case 'tainacan-relationship': return __('Relationship', 'tainacan');
case 'tainacan-taxonomy': return __('Taxonomy', 'tainacan');
case 'tainacan-compound': return __('Compound', 'tainacan');
default: return false;
}
} else {
return metadatumType;
}
}
selectMetadatum(selectedMetadatum) {
this.setState({
metadatumId: selectedMetadatum.id,
@ -276,7 +256,7 @@ export default class MetadataModal extends React.Component {
selected={ this.state.temporaryMetadatumId }
options={
this.state.modalMetadata.map((metadatum) => {
return { label: metadatum.name + ' (' + metadatum.type + ')', value: '' + metadatum.id }
return { label: metadatum.name + ' (' + metadatum.typeLabel + ')', value: '' + metadatum.id }
})
}
onChange={ ( aMetadatumId ) => {
@ -295,7 +275,7 @@ export default class MetadataModal extends React.Component {
}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.resetCollections(); }}>
{__('Switch collection', 'tainacan')}
</Button>
@ -409,7 +389,7 @@ export default class MetadataModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -425,7 +405,7 @@ export default class MetadataModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -12,7 +12,7 @@ export default class ParentTermModal extends React.Component {
// Initialize state
this.state = {
metadatumId: '',
facetsPerPage: 3,
facetsPerPage: 12,
facetId: undefined,
isLoadingFacets: false,
modalFacets: [],
@ -167,20 +167,20 @@ export default class ParentTermModal extends React.Component {
title={__('Select a parent term to fetch facets from', 'tainacan')}
onRequestClose={ () => this.cancelSelection() }
contentLabel={__('Select term', 'tainacan')}>
<div>
<div className="modal-search-area">
<TextControl
label={__('Search for a term', 'tainacan')}
placeholder={ __('Search by term\'s name', 'tainacan') }
value={ this.state.searchFacetName }
onChange={(value) => {
this.setState({
searchFacetName: value
});
_.debounce(this.fetchFacets(value), 300);
}}/>
</div>
{(
<div>
<div className="modal-search-area">
<TextControl
label={__('Search for a term', 'tainacan')}
placeholder={ __('Search by term\'s name', 'tainacan') }
value={ this.state.searchFacetName }
onChange={(value) => {
this.setState({
searchFacetName: value
});
_.debounce(this.fetchFacets(value), 300);
}}/>
</div>
{(
this.state.searchFacetName != '' ? (
this.state.facets.length > 0 ?
(
@ -217,7 +217,7 @@ export default class ParentTermModal extends React.Component {
<p class="modal-radio-area-label">{__('Non specific term', 'tainacan')}</p>
<RadioControl
className={'repository-radio-option'}
selected={ this.state.temporaryFacetId }
selected={ this.state.temporaryFacetId != null ? this.state.temporaryFacetId : ''}
options={ [
{ label: __('Terms children of any term', 'tainacan'), value: '' },
{ label: __('Terms with no parent (root terms)', 'tainacan'), value: '0' }
@ -243,7 +243,7 @@ export default class ParentTermModal extends React.Component {
{
this.state.modalFacets.length < this.state.totalModalFacets ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalFacets() }>
{__('Load more', 'tainacan')}
@ -259,7 +259,7 @@ export default class ParentTermModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -0,0 +1,295 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
items: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
searchURL: {
type: String,
default: undefined
},
selectedItems: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxItemsNumber: {
type: Number,
value: undefined
},
maxItemsPerScreen: {
type: Number,
value: 7
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
loadStrategy: {
type: String,
value: 'search'
},
arrowsPosition: {
type: String,
value: 'search'
},
largeArrows: {
type: Boolean,
value: false
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideTitle: {
type: Boolean,
value: true
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
cropImagesToSquare: {
type: Boolean,
value: true
},
collection: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
supports: {
align: ['full', 'wide'],
html: false,
multiple: true
},
save({ attributes, className }) {
const {
content,
blockId,
collectionId,
searchURL,
selectedItems,
arrowsPosition,
largeArrows,
loadStrategy,
maxItemsNumber,
maxItemsPerScreen,
autoPlay,
autoPlaySpeed,
loopSlides,
hideTitle,
cropImagesToSquare,
showCollectionHeader,
showCollectionLabel,
collectionBackgroundColor,
collectionTextColor
} = attributes;
return <div
className={ className }
search-url={ searchURL }
selected-items={ JSON.stringify(selectedItems) }
arrows-position={ arrowsPosition }
load-strategy={ loadStrategy }
collection-id={ collectionId }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-title={ '' + hideTitle }
large-arrows={ '' + largeArrows }
crop-images-to-square={ '' + cropImagesToSquare }
show-collection-header={ '' + showCollectionHeader }
show-collection-label={ '' + showCollectionLabel }
collection-background-color={ collectionBackgroundColor }
collection-text-color={ collectionTextColor }
max-items-number={ maxItemsNumber }
max-items-per-screen={ maxItemsPerScreen }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
id={ 'wp-block-tainacan-carousel-items-list_' + blockId }>
{ content }
</div>
}
},
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
items: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
searchURL: {
type: String,
default: undefined
},
selectedItems: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxItemsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
loadStrategy: {
type: String,
value: 'search'
},
arrowsPosition: {
type: String,
value: 'search'
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideTitle: {
type: Boolean,
value: true
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
searchURL,
selectedItems,
arrowsPosition,
loadStrategy,
maxItemsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideTitle,
showCollectionHeader,
showCollectionLabel,
collectionBackgroundColor,
collectionTextColor
} = attributes;
return <div
className={ className }
search-url={ searchURL }
selected-items={ JSON.stringify(selectedItems) }
arrows-position={ arrowsPosition }
load-strategy={ loadStrategy }
collection-id={ collectionId }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-title={ '' + hideTitle }
show-collection-header={ '' + showCollectionHeader }
show-collection-label={ '' + showCollectionLabel }
collection-background-color={ collectionBackgroundColor }
collection-text-color={ collectionTextColor }
max-items-number={ maxItemsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
id={ 'wp-block-tainacan-carousel-items-list_' + blockId }>
{ content }
</div>
}
}
];

View File

@ -248,7 +248,7 @@ export default {
preventInteractionOnTransition: true,
allowClick: true,
allowTouchMove: true,
slidesPerView: 7,
slidesPerView: 1,
slidesPerGroup: 1,
spaceBetween: 32,
slideToClickedSlide: true,
@ -279,13 +279,13 @@ export default {
if (!isNaN(this.maxItemsPerScreen) && this.maxItemsPerScreen != 6) {
this.swiperOptions.breakpoints = {
498: { slidesPerView: this.maxItemsPerScreen - 5 > 0 ? this.maxItemsPerScreen - 5 : 1 },
768: { slidesPerView: this.maxItemsPerScreen - 4 > 0 ? this.maxItemsPerScreen - 4 : 1 },
1024: { slidesPerView: this.maxItemsPerScreen - 3 > 0 ? this.maxItemsPerScreen - 3 : 1 },
1366: { slidesPerView: this.maxItemsPerScreen - 2 > 0 ? this.maxItemsPerScreen - 2 : 1 },
1600: { slidesPerView: this.maxItemsPerScreen - 1 > 0 ? this.maxItemsPerScreen - 1 : 1 },
498: { slidesPerView: this.maxItemsPerScreen - 4 > 0 ? this.maxItemsPerScreen - 4 : 1 },
768: { slidesPerView: this.maxItemsPerScreen - 3 > 0 ? this.maxItemsPerScreen - 3 : 1 },
1024: { slidesPerView: this.maxItemsPerScreen - 2 > 0 ? this.maxItemsPerScreen - 2 : 1 },
1366: { slidesPerView: this.maxItemsPerScreen - 1 > 0 ? this.maxItemsPerScreen - 1 : 1 },
1600: { slidesPerView: this.maxItemsPerScreen > 0 ? this.maxItemsPerScreen : 1 },
}
this.swiperOptions.slidesPerView = this.maxItemsPerScreen;
this.swiperOptions.slidesPerView = 1;
}
},
methods: {

View File

@ -157,6 +157,7 @@
padding: 8px 16px;
display: block;
line-height: 1.2em;
word-break: break-word;
}
a>img {
width: 100%;

View File

@ -214,7 +214,7 @@ export default class CarouselItemsModal extends React.Component {
src={ this.state.searchURL } />
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.resetCollections() }}>
{__('Switch collection', 'tainacan')}
</Button>
@ -330,7 +330,7 @@ export default class CarouselItemsModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -346,7 +346,7 @@ export default class CarouselItemsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -2,14 +2,16 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { RangeControl, Spinner, Button, ToggleControl, SelectControl, Placeholder, IconButton, ColorPicker, ColorPalette, BaseControl, PanelBody, ToolbarGroup, ToolbarButton } = wp.components;
const { RangeControl, Spinner, Button, ToggleControl, SelectControl, Placeholder, IconButton, ColorPicker, ColorPalette, BaseControl, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import CarouselItemsModal from './carousel-items-modal.js';
import tainacan from '../../js/axios.js';
import axios from 'axios';
import qs from 'qs';
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import DeprecatedBlocks from './carousel-items-deprecated.js';
registerBlockType('tainacan/carousel-items-list', {
title: __('Tainacan Collection\'s Items Carousel', 'tainacan'),
@ -137,7 +139,8 @@ registerBlockType('tainacan/carousel-items-list', {
supports: {
align: ['full', 'wide'],
html: false,
multiple: true
multiple: true,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected, clientId }){
let {
@ -186,10 +189,17 @@ registerBlockType('tainacan/carousel-items-list', {
key={ item.id }
className={ 'item-list-item ' + (maxItemsPerScreen ? 'max-itens-per-screen-' + maxItemsPerScreen : '') }>
{ loadStrategy == 'selection' ?
<IconButton
onClick={ () => removeItemOfId(item.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
( tainacan_blocks.wp_version < '5.4' ?
<IconButton
onClick={ () => removeItemOfId(item.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
:
<Button
onClick={ () => removeItemOfId(item.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
)
:null
}
<a
@ -361,92 +371,32 @@ registerBlockType('tainacan/carousel-items-list', {
{ items.length ?
<BlockControls>
{ tainacan_blocks.wp_version < '5.4' ?
loadStrategy != 'search' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openCarouseltemsModal('selection') } >
<p style={{ margin: 0 }}>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more items', 'tainacan') }
</Button>
:
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openCarouseltemsModal('search') } >
<p style={{ margin: 0 }}>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Configure a search', 'tainacan') }
</Button>
:
<ToolbarGroup>
{ loadStrategy != 'search' ? (
tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openCarouseltemsModal('selection') } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more items', 'tainacan') }
</Button>
:
<ToolbarButton onClick={ () => openCarouseltemsModal('selection') } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more items', 'tainacan') }
</ToolbarButton>
) :
( tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openCarouseltemsModal('search') } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Configure a search', 'tainacan') }
</Button>
:
<ToolbarButton onClick={ () => openCarouseltemsModal('search') } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>
</p>&nbsp;
{ __('Configure a search', 'tainacan') }
</ToolbarButton>
)
}
</ToolbarGroup>
{ loadStrategy != 'search' ?
TainacanBlocksCompatToolbar({
label: __('Add more items', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>,
onClick: openCarouseltemsModal,
onClickParams: 'selection'
})
:
TainacanBlocksCompatToolbar({
label: __('Configure a search', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M16,6H12a2,2,0,0,0-2,2v6.52A6,6,0,0,1,12,19a6,6,0,0,1-.73,2.88A1.92,1.92,0,0,0,12,22h8a2,2,0,0,0,2-2V12Zm-1,6V7.5L19.51,12ZM15,2V4H8v9.33A5.8,5.8,0,0,0,6,13V4A2,2,0,0,1,8,2ZM10.09,19.05,7,22.11V16.05L8,17l2,2ZM5,16.05v6.06L2,19.11Z"/>
</svg>,
onClick: openCarouseltemsModal,
onClickParams: 'search'
})
}
</BlockControls>
: null }
@ -875,140 +825,5 @@ registerBlockType('tainacan/carousel-items-list', {
{ content }
</div>
},
deprecated: [
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
items: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
searchURL: {
type: String,
default: undefined
},
selectedItems: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxItemsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
loadStrategy: {
type: String,
value: 'search'
},
arrowsPosition: {
type: String,
value: 'search'
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideTitle: {
type: Boolean,
value: true
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
searchURL,
selectedItems,
arrowsPosition,
loadStrategy,
maxItemsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideTitle,
showCollectionHeader,
showCollectionLabel,
collectionBackgroundColor,
collectionTextColor
} = attributes;
return <div
className={ className }
search-url={ searchURL }
selected-items={ JSON.stringify(selectedItems) }
arrows-position={ arrowsPosition }
load-strategy={ loadStrategy }
collection-id={ collectionId }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-title={ '' + hideTitle }
show-collection-header={ '' + showCollectionHeader }
show-collection-label={ '' + showCollectionLabel }
collection-background-color={ collectionBackgroundColor }
collection-text-color={ collectionTextColor }
max-items-number={ maxItemsNumber }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
id={ 'wp-block-tainacan-carousel-items-list_' + blockId }>
{ content }
</div>
}
}
]
deprecated: DeprecatedBlocks
});

View File

@ -0,0 +1,311 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
items: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showName: {
type: Boolean,
default: true
},
layout: {
type: String,
default: 'grid'
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
},
searchURL: {
type: String,
default: undefined
},
itemsRequestSource: {
type: String,
default: undefined
},
maxItemsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
showSearchBar: {
type: Boolean,
value: false
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
searchString: {
type: String,
default: undefined
},
order: {
type: String,
default: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
},
mosaicHeight: {
type: Number,
value: 280
},
mosaicGridColumns: {
type: Number,
value: 3
},
mosaicGridRows: {
type: Number,
value: 3
},
sampleBackgroundImage: {
type: String,
default: ''
},
osaicItemFocalPointm: {
type: Object,
default: {
x: 0.5,
y: 0.5
}
},
mosaicDensity: {
type: Number,
default: 5
}
},
supports: {
align: ['full', 'wide'],
html: false,
},
save({ attributes, className }) {
const {
content,
blockId,
collectionId,
showImage,
showName,
layout,
gridMargin,
searchURL,
maxItemsNumber,
order,
showSearchBar,
showCollectionHeader,
showCollectionLabel,
collectionBackgroundColor,
collectionTextColor,
mosaicHeight,
mosaicGridRows,
mosaicGridColumns,
mosaicItemFocalPoint,
mosaicDensity
} = attributes;
return <div
search-url={ searchURL }
className={ className }
collection-id={ collectionId }
show-image={ '' + showImage }
show-name={ '' + showName }
show-search-bar={ '' + showSearchBar }
show-collection-header={ '' + showCollectionHeader }
show-collection-label={ '' + showCollectionLabel }
layout={ layout }
mosaic-height={ mosaicHeight }
mosaic-density={ mosaicDensity }
mosaic-grid-rows={ mosaicGridRows }
mosaic-grid-columns={ mosaicGridColumns }
mosaic-item-focal-point-x={ (mosaicItemFocalPoint && mosaicItemFocalPoint.x ? mosaicItemFocalPoint.x : 0.5) }
mosaic-item-focal-point-y={ (mosaicItemFocalPoint && mosaicItemFocalPoint.y ? mosaicItemFocalPoint.y : 0.5) }
collection-background-color={ collectionBackgroundColor }
collection-text-color={ collectionTextColor }
grid-margin={ gridMargin }
max-items-number={ maxItemsNumber }
order={ order }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
id={ 'wp-block-tainacan-dynamic-items-list_' + blockId }>
{ content }
</div>
}
},
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
items: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showName: {
type: Boolean,
default: true
},
layout: {
type: String,
default: 'grid'
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
},
searchURL: {
type: String,
default: undefined
},
itemsRequestSource: {
type: String,
default: undefined
},
maxItemsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
showSearchBar: {
type: Boolean,
value: false
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
searchString: {
type: String,
default: undefined
},
order: {
type: String,
default: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
showImage,
showName,
layout,
gridMargin,
searchURL,
maxItemsNumber,
order,
showSearchBar,
showCollectionHeader,
showCollectionLabel,
collectionBackgroundColor,
collectionTextColor
} = attributes;
return <div
search-url={ searchURL }
className={ className }
collection-id={ collectionId }
show-image={ '' + showImage }
show-name={ '' + showName }
show-search-bar={ '' + showSearchBar }
show-collection-header={ '' + showCollectionHeader }
show-collection-label={ '' + showCollectionLabel }
layout={ layout }
collection-background-color={ collectionBackgroundColor }
collection-text-color={ collectionTextColor }
grid-margin={ gridMargin }
max-items-number={ maxItemsNumber }
order={ order }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
id={ 'wp-block-tainacan-dynamic-items-list_' + blockId }>
{ content }
</div>
}
}
]

View File

@ -178,7 +178,7 @@ export default class DynamicItemsModal extends React.Component {
src={ this.state.searchURL } />
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.resetCollections() }}>
{__('Switch collection', 'tainacan')}
</Button>
@ -259,7 +259,7 @@ export default class DynamicItemsModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -275,7 +275,7 @@ export default class DynamicItemsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -2,14 +2,16 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { ResizableBox, FocalPointPicker, SelectControl, RangeControl, Spinner, Button, ToggleControl, Tooltip, Placeholder, Toolbar, ToolbarGroup, ToolbarButton, ColorPicker, ColorPalette, BaseControl, PanelBody } = wp.components;
const { ResizableBox, FocalPointPicker, SelectControl, RangeControl, Spinner, Button, ToggleControl, Tooltip, Placeholder, ColorPicker, ColorPalette, BaseControl, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import DynamicItemsModal from './dynamic-items-modal.js';
import tainacan from '../../js/axios.js';
import axios from 'axios';
import qs from 'qs';
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import DeprecatedBlocks from './dynamic-items-list-deprecated.js';
registerBlockType('tainacan/dynamic-items-list', {
title: __('Tainacan Collection\'s Items List', 'tainacan'),
@ -152,6 +154,7 @@ registerBlockType('tainacan/dynamic-items-list', {
supports: {
align: ['full', 'wide'],
html: false,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected, clientId }){
let {
@ -481,51 +484,19 @@ registerBlockType('tainacan/dynamic-items-list', {
<div>
<BlockControls>
<Toolbar controls={ layoutControls } />
{ TainacanBlocksCompatToolbar({ controls: layoutControls }) }
{ items.length ?
tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ openDynamicItemsModal } >
<p style={{ margin: 0 }}>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M14,2V4H7v7.24A5.33,5.33,0,0,0,5.5,11a4.07,4.07,0,0,0-.5,0V4A2,2,0,0,1,7,2Zm7,10v8a2,2,0,0,1-2,2H12l1-1-2.41-2.41A5.56,5.56,0,0,0,11,16.53a5.48,5.48,0,0,0-2-4.24V8a2,2,0,0,1,2-2h4Zm-2.52,0L14,7.5V12ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1-.5-7,2.74,2.74,0,0,1,.5,0,3.41,3.41,0,0,1,1.5.34,3.5,3.5,0,0,1,2,3.16,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,0,0,5.5,15a1.39,1.39,0,0,0-.5.09A1.5,1.5,0,0,0,5.5,18a1.48,1.48,0,0,0,1.42-1A1.5,1.5,0,0,0,7,16.53Z"/>
</svg>
</p>&nbsp;
{__('Configure search', 'tainacan')}
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ openDynamicItemsModal }>
<p style={{ margin: 0 }}>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M14,2V4H7v7.24A5.33,5.33,0,0,0,5.5,11a4.07,4.07,0,0,0-.5,0V4A2,2,0,0,1,7,2Zm7,10v8a2,2,0,0,1-2,2H12l1-1-2.41-2.41A5.56,5.56,0,0,0,11,16.53a5.48,5.48,0,0,0-2-4.24V8a2,2,0,0,1,2-2h4Zm-2.52,0L14,7.5V12ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1-.5-7,2.74,2.74,0,0,1,.5,0,3.41,3.41,0,0,1,1.5.34,3.5,3.5,0,0,1,2,3.16,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,0,0,5.5,15a1.39,1.39,0,0,0-.5.09A1.5,1.5,0,0,0,5.5,18a1.48,1.48,0,0,0,1.42-1A1.5,1.5,0,0,0,7,16.53Z"/>
</svg>
</p>&nbsp;
{__('Configure search', 'tainacan')}
</Button>
:
<ToolbarButton onClick={ openDynamicItemsModal }>
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M14,2V4H7v7.24A5.33,5.33,0,0,0,5.5,11a4.07,4.07,0,0,0-.5,0V4A2,2,0,0,1,7,2Zm7,10v8a2,2,0,0,1-2,2H12l1-1-2.41-2.41A5.56,5.56,0,0,0,11,16.53a5.48,5.48,0,0,0-2-4.24V8a2,2,0,0,1,2-2h4Zm-2.52,0L14,7.5V12ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1-.5-7,2.74,2.74,0,0,1,.5,0,3.41,3.41,0,0,1,1.5.34,3.5,3.5,0,0,1,2,3.16,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,0,0,5.5,15a1.39,1.39,0,0,0-.5.09A1.5,1.5,0,0,0,5.5,18a1.48,1.48,0,0,0,1.42-1A1.5,1.5,0,0,0,7,16.53Z"/>
</svg>
</p>&nbsp;
{__('Configure search', 'tainacan')}
</ToolbarButton>
}
</ToolbarGroup>
TainacanBlocksCompatToolbar({
label: __('Configure search', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 -2 24 24"
height="24px"
width="24px">
<path d="M14,2V4H7v7.24A5.33,5.33,0,0,0,5.5,11a4.07,4.07,0,0,0-.5,0V4A2,2,0,0,1,7,2Zm7,10v8a2,2,0,0,1-2,2H12l1-1-2.41-2.41A5.56,5.56,0,0,0,11,16.53a5.48,5.48,0,0,0-2-4.24V8a2,2,0,0,1,2-2h4Zm-2.52,0L14,7.5V12ZM11,21l-1,1L8.86,20.89,8,20H8l-.57-.57A3.42,3.42,0,0,1,5.5,20a3.5,3.5,0,0,1-.5-7,2.74,2.74,0,0,1,.5,0,3.41,3.41,0,0,1,1.5.34,3.5,3.5,0,0,1,2,3.16,3.42,3.42,0,0,1-.58,1.92L9,19H9l.85.85Zm-4-4.5A1.5,1.5,0,0,0,5.5,15a1.39,1.39,0,0,0-.5.09A1.5,1.5,0,0,0,5.5,18a1.48,1.48,0,0,0,1.42-1A1.5,1.5,0,0,0,7,16.53Z"/>
</svg>,
onClick: openDynamicItemsModal
})
: null }
</BlockControls>
</div>
@ -1049,139 +1020,5 @@ registerBlockType('tainacan/dynamic-items-list', {
{ content }
</div>
},
deprecated: [
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
items: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showName: {
type: Boolean,
default: true
},
layout: {
type: String,
default: 'grid'
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
},
searchURL: {
type: String,
default: undefined
},
itemsRequestSource: {
type: String,
default: undefined
},
maxItemsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingCollection: {
type: Boolean,
value: false
},
showSearchBar: {
type: Boolean,
value: false
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
collection: {
type: Object,
value: undefined
},
searchString: {
type: String,
default: undefined
},
order: {
type: String,
default: undefined
},
blockId: {
type: String,
default: undefined
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
}
},
save({ attributes, className }){
const {
content,
blockId,
collectionId,
showImage,
showName,
layout,
gridMargin,
searchURL,
maxItemsNumber,
order,
showSearchBar,
showCollectionHeader,
showCollectionLabel,
collectionBackgroundColor,
collectionTextColor
} = attributes;
return <div
search-url={ searchURL }
className={ className }
collection-id={ collectionId }
show-image={ '' + showImage }
show-name={ '' + showName }
show-search-bar={ '' + showSearchBar }
show-collection-header={ '' + showCollectionHeader }
show-collection-label={ '' + showCollectionLabel }
layout={ layout }
collection-background-color={ collectionBackgroundColor }
collection-text-color={ collectionTextColor }
grid-margin={ gridMargin }
max-items-number={ maxItemsNumber }
order={ order }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
id={ 'wp-block-tainacan-dynamic-items-list_' + blockId }>
{ content }
</div>
}
}
]
deprecated: DeprecatedBlocks
});

View File

@ -13,14 +13,13 @@ const {
Spinner,
ToggleControl,
Placeholder,
PanelBody,
ToolbarGroup,
ToolbarButton
PanelBody
} = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import tainacan from '../../js/axios.js';
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import CollectionModal from '../../tainacan-facets/faceted-search/collection-modal.js';
registerBlockType('tainacan/item-submission-form', {
@ -275,10 +274,10 @@ registerBlockType('tainacan/item-submission-form', {
{ collectionId != undefined ?
<BlockControls>
{ tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', height: '2.3rem', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openCollectionModal() }>
<p>
<svg
{
TainacanBlocksCompatToolbar({
label: __('Change target collection', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="-2 -2 12 12"
height="24px"
@ -286,44 +285,9 @@ registerBlockType('tainacan/item-submission-form', {
<g transform="translate(227.4751,-183.8442)">
<path d="m -227.47379,191.95102 c 0.0372,-2.35931 -0.0195,-4.71936 0.0185,-7.07842 0.0356,-0.55424 0.52604,-0.99051 1.07473,-0.99702 0.80102,-0.0806 1.607,0.0149 2.41027,-0.0211 1.66482,0.0101 3.33138,-0.0202 4.99509,0.01 0.58652,0.0617 1.0108,0.60434 0.99243,1.1815 0.0416,0.76157 -0.0361,1.52426 0.008,2.28649 0.0113,1.65577 -0.006,3.31214 -0.009,4.96756 -0.0429,0.59366 -0.57833,1.06966 -1.17191,1.04765 -0.92086,0.0516 -1.84377,-0.0208 -2.7657,-0.006 -1.49072,-0.0194 -2.98293,0.0353 -4.47258,0.009 -0.60954,-0.039 -1.111,-0.56284 -1.07768,-1.17994 -0.004,-0.0728 -0.004,-0.1462 -0.002,-0.21867 z m 1.15668,0.28162 c 2.40388,0 4.80776,0 7.21164,0 0,-2.41394 0,-4.82787 0,-7.24181 -2.40388,0 -4.80776,0 -7.21164,0 0,2.41394 0,4.82787 0,7.24181 z m 0.53308,-0.53308 c 0,-0.83147 0,-1.66293 0,-2.4944 0.82476,0 1.64953,0 2.47429,0 0,0.83147 0,1.66293 0,2.4944 -0.82476,0 -1.64953,0 -2.47429,0 z m 2.45417,-6.18571 c 0,0.83482 0,1.66964 0,2.50446 -0.82141,0 -1.64282,0 -2.46423,0 0,-0.83482 0,-1.66964 0,-2.50446 0.82141,0 1.64282,0 2.46423,0 z m 1.1768,1.67969 c 0,-0.28833 0,-0.57666 0,-0.86499 0.82811,0 1.65623,0 2.48434,0 0,0.28833 0,0.57666 0,0.86499 -0.82811,0 -1.65623,0 -2.48434,0 z m 2.48434,2.76598 c 0,0.28162 0,0.56325 0,0.84487 -0.82811,0 -1.65623,0 -2.48434,0 0,-0.28162 0,-0.56325 0,-0.84487 0.82811,0 1.65623,0 2.48434,0 z m -5.64258,-2.49441 c 0.48614,0 0.97228,0 1.45842,0 0,-0.47273 0,-0.94546 0,-1.41819 -0.48614,0 -0.97228,0 -1.45842,0 0,0.47273 0,0.94546 0,1.41819 z m 0,3.68126 c 0.48949,0 0.97899,0 1.46848,0 0,-0.47273 0,-0.94546 0,-1.41819 -0.48949,0 -0.97899,0 -1.46848,0 0,0.47273 0,0.94546 0,1.41819 z"></path>
</g>
</svg>
</p>&nbsp;
{ __('Change target collection', 'tainacan') }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openCollectionModal() }>
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="-2 -2 12 12"
height="24px"
width="24px">
<g transform="translate(227.4751,-183.8442)">
<path d="m -227.47379,191.95102 c 0.0372,-2.35931 -0.0195,-4.71936 0.0185,-7.07842 0.0356,-0.55424 0.52604,-0.99051 1.07473,-0.99702 0.80102,-0.0806 1.607,0.0149 2.41027,-0.0211 1.66482,0.0101 3.33138,-0.0202 4.99509,0.01 0.58652,0.0617 1.0108,0.60434 0.99243,1.1815 0.0416,0.76157 -0.0361,1.52426 0.008,2.28649 0.0113,1.65577 -0.006,3.31214 -0.009,4.96756 -0.0429,0.59366 -0.57833,1.06966 -1.17191,1.04765 -0.92086,0.0516 -1.84377,-0.0208 -2.7657,-0.006 -1.49072,-0.0194 -2.98293,0.0353 -4.47258,0.009 -0.60954,-0.039 -1.111,-0.56284 -1.07768,-1.17994 -0.004,-0.0728 -0.004,-0.1462 -0.002,-0.21867 z m 1.15668,0.28162 c 2.40388,0 4.80776,0 7.21164,0 0,-2.41394 0,-4.82787 0,-7.24181 -2.40388,0 -4.80776,0 -7.21164,0 0,2.41394 0,4.82787 0,7.24181 z m 0.53308,-0.53308 c 0,-0.83147 0,-1.66293 0,-2.4944 0.82476,0 1.64953,0 2.47429,0 0,0.83147 0,1.66293 0,2.4944 -0.82476,0 -1.64953,0 -2.47429,0 z m 2.45417,-6.18571 c 0,0.83482 0,1.66964 0,2.50446 -0.82141,0 -1.64282,0 -2.46423,0 0,-0.83482 0,-1.66964 0,-2.50446 0.82141,0 1.64282,0 2.46423,0 z m 1.1768,1.67969 c 0,-0.28833 0,-0.57666 0,-0.86499 0.82811,0 1.65623,0 2.48434,0 0,0.28833 0,0.57666 0,0.86499 -0.82811,0 -1.65623,0 -2.48434,0 z m 2.48434,2.76598 c 0,0.28162 0,0.56325 0,0.84487 -0.82811,0 -1.65623,0 -2.48434,0 0,-0.28162 0,-0.56325 0,-0.84487 0.82811,0 1.65623,0 2.48434,0 z m -5.64258,-2.49441 c 0.48614,0 0.97228,0 1.45842,0 0,-0.47273 0,-0.94546 0,-1.41819 -0.48614,0 -0.97228,0 -1.45842,0 0,0.47273 0,0.94546 0,1.41819 z m 0,3.68126 c 0.48949,0 0.97899,0 1.46848,0 0,-0.47273 0,-0.94546 0,-1.41819 -0.48949,0 -0.97899,0 -1.46848,0 0,0.47273 0,0.94546 0,1.41819 z"></path>
</g>
</svg>
</p>&nbsp;
{ __('Change target collection', 'tainacan') }
</Button>
:
<ToolbarButton onClick={ () => openCollectionModal() }>
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="-2 -2 12 12"
height="24px"
width="24px">
<g transform="translate(227.4751,-183.8442)">
<path d="m -227.47379,191.95102 c 0.0372,-2.35931 -0.0195,-4.71936 0.0185,-7.07842 0.0356,-0.55424 0.52604,-0.99051 1.07473,-0.99702 0.80102,-0.0806 1.607,0.0149 2.41027,-0.0211 1.66482,0.0101 3.33138,-0.0202 4.99509,0.01 0.58652,0.0617 1.0108,0.60434 0.99243,1.1815 0.0416,0.76157 -0.0361,1.52426 0.008,2.28649 0.0113,1.65577 -0.006,3.31214 -0.009,4.96756 -0.0429,0.59366 -0.57833,1.06966 -1.17191,1.04765 -0.92086,0.0516 -1.84377,-0.0208 -2.7657,-0.006 -1.49072,-0.0194 -2.98293,0.0353 -4.47258,0.009 -0.60954,-0.039 -1.111,-0.56284 -1.07768,-1.17994 -0.004,-0.0728 -0.004,-0.1462 -0.002,-0.21867 z m 1.15668,0.28162 c 2.40388,0 4.80776,0 7.21164,0 0,-2.41394 0,-4.82787 0,-7.24181 -2.40388,0 -4.80776,0 -7.21164,0 0,2.41394 0,4.82787 0,7.24181 z m 0.53308,-0.53308 c 0,-0.83147 0,-1.66293 0,-2.4944 0.82476,0 1.64953,0 2.47429,0 0,0.83147 0,1.66293 0,2.4944 -0.82476,0 -1.64953,0 -2.47429,0 z m 2.45417,-6.18571 c 0,0.83482 0,1.66964 0,2.50446 -0.82141,0 -1.64282,0 -2.46423,0 0,-0.83482 0,-1.66964 0,-2.50446 0.82141,0 1.64282,0 2.46423,0 z m 1.1768,1.67969 c 0,-0.28833 0,-0.57666 0,-0.86499 0.82811,0 1.65623,0 2.48434,0 0,0.28833 0,0.57666 0,0.86499 -0.82811,0 -1.65623,0 -2.48434,0 z m 2.48434,2.76598 c 0,0.28162 0,0.56325 0,0.84487 -0.82811,0 -1.65623,0 -2.48434,0 0,-0.28162 0,-0.56325 0,-0.84487 0.82811,0 1.65623,0 2.48434,0 z m -5.64258,-2.49441 c 0.48614,0 0.97228,0 1.45842,0 0,-0.47273 0,-0.94546 0,-1.41819 -0.48614,0 -0.97228,0 -1.45842,0 0,0.47273 0,0.94546 0,1.41819 z m 0,3.68126 c 0.48949,0 0.97899,0 1.46848,0 0,-0.47273 0,-0.94546 0,-1.41819 -0.48949,0 -0.97899,0 -1.46848,0 0,0.47273 0,0.94546 0,1.41819 z"></path>
</g>
</svg>
</p>&nbsp;
{ __('Change target collection', 'tainacan') }
</ToolbarButton>
}
</ToolbarGroup>
</svg>,
onClick: openCollectionModal
})
}
</BlockControls>
: null }

View File

@ -2,11 +2,13 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { RangeControl, IconButton, Button, ToggleControl, Placeholder, Toolbar, ToolbarGroup, PanelBody, ToolbarButton } = wp.components;
const { RangeControl, IconButton, Button, ToggleControl, Placeholder, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import ItemsModal from './items-modal.js';
import DeprecatedBlocks from './items-list-deprecated.js'
registerBlockType('tainacan/items-list', {
title: __('Tainacan Items List', 'tainacan'),
@ -103,6 +105,7 @@ registerBlockType('tainacan/items-list', {
supports: {
align: ['full', 'wide'],
html: false,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected }){
let {
@ -123,10 +126,17 @@ registerBlockType('tainacan/items-list', {
key={ item.id }
className="item-list-item"
style={{ marginBottom: layout == 'grid' ? (showName ? gridMargin + 12 : gridMargin) + 'px' : ''}}>
<IconButton
onClick={ () => removeItemOfId(item.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
{ tainacan_blocks.wp_version < '5.4' ?
<IconButton
onClick={ () => removeItemOfId(item.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
:
<Button
onClick={ () => removeItemOfId(item.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
}
<a
id={ isNaN(item.id) ? item.id : 'item-id-' + item.id }
href={ item.url }
@ -224,45 +234,17 @@ registerBlockType('tainacan/items-list', {
<div>
<BlockControls>
<Toolbar controls={ layoutControls } />
{ TainacanBlocksCompatToolbar({ controls: layoutControls }) }
{ selectedItemsHTML.length ?
tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ openItemsModal } >
<p style={{ margin: 0 }}>
<svg width="24" height="24" viewBox="0 -2 12 16">
<path
d="M8.8,1.2H1.2V10H0V1.2C0,0.6,0.6,0,1.2,0h7.5V1.2z M3.8,2.5c-0.7,0-1.2,0.6-1.2,1.3v8.8c0,0.7,0.6,1.2,1.2,1.2h6.9
c0.7,0,1.2-0.6,1.2-1.2V6.3L8.1,2.5H3.8z M7.5,3.4L11,6.9H7.5V3.4z"/>
</svg>
</p>&nbsp;
{ __( 'Add more items', 'tainacan' ) }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ openItemsModal } >
<p>
<svg width="24" height="24" viewBox="0 -2 12 16">
<path
d="M8.8,1.2H1.2V10H0V1.2C0,0.6,0.6,0,1.2,0h7.5V1.2z M3.8,2.5c-0.7,0-1.2,0.6-1.2,1.3v8.8c0,0.7,0.6,1.2,1.2,1.2h6.9
c0.7,0,1.2-0.6,1.2-1.2V6.3L8.1,2.5H3.8z M7.5,3.4L11,6.9H7.5V3.4z"/>
</svg>
</p>&nbsp;
{ __( 'Add more items', 'tainacan' ) }
</Button>
:
<ToolbarButton onClick={ openItemsModal } >
<p>
<svg width="24" height="24" viewBox="0 -2 12 16">
<path
d="M8.8,1.2H1.2V10H0V1.2C0,0.6,0.6,0,1.2,0h7.5V1.2z M3.8,2.5c-0.7,0-1.2,0.6-1.2,1.3v8.8c0,0.7,0.6,1.2,1.2,1.2h6.9
c0.7,0,1.2-0.6,1.2-1.2V6.3L8.1,2.5H3.8z M7.5,3.4L11,6.9H7.5V3.4z"/>
</svg>
</p>&nbsp;
{ __( 'Add more items', 'tainacan' ) }
</ToolbarButton>
}
</ToolbarGroup>
TainacanBlocksCompatToolbar({
label: __( 'Add more items', 'tainacan' ),
icon: <svg width="24" height="24" viewBox="0 -2 12 16">
<path
d="M8.8,1.2H1.2V10H0V1.2C0,0.6,0.6,0,1.2,0h7.5V1.2z M3.8,2.5c-0.7,0-1.2,0.6-1.2,1.3v8.8c0,0.7,0.6,1.2,1.2,1.2h6.9
c0.7,0,1.2-0.6,1.2-1.2V6.3L8.1,2.5H3.8z M7.5,3.4L11,6.9H7.5V3.4z"/>
</svg>,
onClick: openItemsModal
})
: null }
</BlockControls>
</div>
@ -381,5 +363,6 @@ registerBlockType('tainacan/items-list', {
save({ attributes, className }){
const { content } = attributes;
return <div className={className}>{ content }</div>
}
},
deprecated: DeprecatedBlocks
});

View File

@ -0,0 +1,88 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
selectedItemsObject: {
type: 'array',
source: 'query',
selector: 'a',
query: {
id: {
type: 'string',
source: 'attribute',
attribute: 'id'
},
url: {
type: 'string',
source: 'attribute',
attribute: 'href'
},
title: {
type: 'string',
source: 'text'
},
thumbnail: {
source: 'query',
selector: 'img',
query: {
src: {
source: 'attribute',
attribute: 'src'
},
alt: {
source: 'attribute',
attribute: 'alt'
},
}
},
},
default: []
},
content: {
type: 'array',
source: 'children',
selector: 'div'
},
query: {
type: Object,
default: {}
},
collectionId: {
type: String,
default: undefined
},
selectedItemsHTML: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showName: {
type: Boolean,
default: true
},
layout: {
type: String,
default: 'grid'
},
isModalOpen: {
type: Boolean,
default: false
},
gridMargin: {
type: Number,
default: 0
}
},
supports: {
align: ['full', 'wide'],
html: false,
},
save({ attributes, className }){
const { content } = attributes;
return <div className={className}>{ content }</div>
}
}
]

View File

@ -247,7 +247,7 @@ export default class ItemsModal extends React.Component {
src={ this.state.searchURL } />
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.resetCollections() }}>
{__('Switch collection', 'tainacan')}
</Button>
@ -351,7 +351,7 @@ export default class ItemsModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -367,7 +367,7 @@ export default class ItemsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -2,11 +2,13 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { RangeControl, TextControl, Toolbar, ToolbarGroup, ToolbarButton, SelectControl, Button, ToggleControl, Placeholder, ColorPicker, ColorPalette, BaseControl, PanelBody } = wp.components;
const { RangeControl, TextControl, SelectControl, Button, ToggleControl, Placeholder, ColorPicker, ColorPalette, BaseControl, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import SearchBarModal from './search-bar-modal.js';
import DeprecatedBlocks from './search-bar-deprecated.js';
registerBlockType('tainacan/search-bar', {
title: __('Tainacan Search Bar', 'tainacan'),
@ -101,7 +103,8 @@ registerBlockType('tainacan/search-bar', {
supports: {
align: ['full', 'wide', 'left', 'center', 'right'],
html: true,
multiple: false
multiple: false,
fontSize: true
},
styles: [
{
@ -196,7 +199,7 @@ registerBlockType('tainacan/search-bar', {
style={{ fill: showCollectionHeader && collectionBackgroundColor ? collectionBackgroundColor : '' }}
width="24"
height="24"
viewBox="-2 -3 20 20">
viewBox="-2 -2 20 20">
<path d="M0,5.8C0,5,0.2,4.2,0.5,3.5s0.7-1.3,1.2-1.8s1.1-0.9,1.8-1.2C4.2,0.1,5,0,5.8,0S7.3,0.1,8,0.5
c0.7,0.3,1.3,0.7,1.8,1.2s0.9,1.1,1.2,1.8c0.5,1.2,0.5,2.5,0.2,3.7c0,0.2-0.1,0.4-0.2,0.6c0,0.1-0.2,0.6-0.2,0.6
c0.6,0.6,1.3,1.3,1.9,1.9c0.7,0.7,1.3,1.3,2,2c0,0,0.3,0.2,0.3,0.3c0,0.3-0.1,0.7-0.3,1c-0.2,0.6-0.8,1-1.4,1.2
@ -241,7 +244,7 @@ registerBlockType('tainacan/search-bar', {
style={{ fill: showCollectionHeader && collectionBackgroundColor ? collectionBackgroundColor : '' }}
width="24"
height="24"
viewBox="-2 -3 20 20">
viewBox="-2 -2 20 20">
<path d="M0,5.8C0,5,0.2,4.2,0.5,3.5s0.7-1.3,1.2-1.8s1.1-0.9,1.8-1.2C4.2,0.1,5,0,5.8,0S7.3,0.1,8,0.5
c0.7,0.3,1.3,0.7,1.8,1.2s0.9,1.1,1.2,1.8c0.5,1.2,0.5,2.5,0.2,3.7c0,0.2-0.1,0.4-0.2,0.6c0,0.1-0.2,0.6-0.2,0.6
c0.6,0.6,1.3,1.3,1.9,1.9c0.7,0.7,1.3,1.3,2,2c0,0,0.3,0.2,0.3,0.3c0,0.3-0.1,0.7-0.3,1c-0.2,0.6-0.8,1-1.4,1.2
@ -318,71 +321,22 @@ registerBlockType('tainacan/search-bar', {
<div>
<BlockControls>
<Toolbar controls={ alignmentControls } />
{ collectionId ? (
tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openSearchBarModal() } >
<p style={{ margin: 0 }}>
<span class="icon">
<i>
<svg width="24" height="24" viewBox="-2 -4 20 20">
<path d="M0,5.8C0,5,0.2,4.2,0.5,3.5s0.7-1.3,1.2-1.8s1.1-0.9,1.8-1.2C4.2,0.1,5,0,5.8,0S7.3,0.1,8,0.5
c0.7,0.3,1.3,0.7,1.8,1.2s0.9,1.1,1.2,1.8c0.5,1.2,0.5,2.5,0.2,3.7c0,0.2-0.1,0.4-0.2,0.6c0,0.1-0.2,0.6-0.2,0.6
c0.6,0.6,1.3,1.3,1.9,1.9c0.7,0.7,1.3,1.3,2,2c0,0,0.3,0.2,0.3,0.3c0,0.3-0.1,0.7-0.3,1c-0.2,0.6-0.8,1-1.4,1.2
c-0.1,0-0.6,0.2-0.6,0.1c0,0-4.2-4.2-4.2-4.2c0,0-0.8,0.3-0.8,0.4c-1.3,0.4-2.8,0.5-4.1-0.1c-0.7-0.3-1.3-0.7-1.8-1.2
C1.2,9.3,0.8,8.7,0.5,8S0,6.6,0,5.8z M1.6,5.8c0,0.4,0.1,0.9,0.2,1.3C2.1,8.2,3,9.2,4.1,9.6c0.5,0.2,1,0.3,1.6,0.3
c0.6,0,1.1-0.1,1.6-0.3C8.7,9,9.7,7.6,9.8,6c0.1-1.5-0.6-3.1-2-3.9c-0.9-0.5-2-0.6-3-0.4C4.6,1.8,4.4,1.9,4.1,2
c-0.5,0.2-1,0.5-1.4,0.9C2,3.7,1.6,4.7,1.6,5.8z"/>
</svg>
</i>
</span>
</p>&nbsp;
{__('Configure search source', 'tainacan')}
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openSearchBarModal() }>
<p>
<span class="icon">
<i>
<svg width="24" height="24" viewBox="-2 -4 20 20">
<path d="M0,5.8C0,5,0.2,4.2,0.5,3.5s0.7-1.3,1.2-1.8s1.1-0.9,1.8-1.2C4.2,0.1,5,0,5.8,0S7.3,0.1,8,0.5
c0.7,0.3,1.3,0.7,1.8,1.2s0.9,1.1,1.2,1.8c0.5,1.2,0.5,2.5,0.2,3.7c0,0.2-0.1,0.4-0.2,0.6c0,0.1-0.2,0.6-0.2,0.6
c0.6,0.6,1.3,1.3,1.9,1.9c0.7,0.7,1.3,1.3,2,2c0,0,0.3,0.2,0.3,0.3c0,0.3-0.1,0.7-0.3,1c-0.2,0.6-0.8,1-1.4,1.2
c-0.1,0-0.6,0.2-0.6,0.1c0,0-4.2-4.2-4.2-4.2c0,0-0.8,0.3-0.8,0.4c-1.3,0.4-2.8,0.5-4.1-0.1c-0.7-0.3-1.3-0.7-1.8-1.2
C1.2,9.3,0.8,8.7,0.5,8S0,6.6,0,5.8z M1.6,5.8c0,0.4,0.1,0.9,0.2,1.3C2.1,8.2,3,9.2,4.1,9.6c0.5,0.2,1,0.3,1.6,0.3
c0.6,0,1.1-0.1,1.6-0.3C8.7,9,9.7,7.6,9.8,6c0.1-1.5-0.6-3.1-2-3.9c-0.9-0.5-2-0.6-3-0.4C4.6,1.8,4.4,1.9,4.1,2
c-0.5,0.2-1,0.5-1.4,0.9C2,3.7,1.6,4.7,1.6,5.8z"/>
</svg>
</i>
</span>
</p>&nbsp;
{__('Configure search source', 'tainacan')}
</Button>
:
<ToolbarButton onClick={ () => openSearchBarModal() }>
<p>
<span class="icon">
<i>
<svg width="24" height="24" viewBox="-2 -4 20 20">
<path d="M0,5.8C0,5,0.2,4.2,0.5,3.5s0.7-1.3,1.2-1.8s1.1-0.9,1.8-1.2C4.2,0.1,5,0,5.8,0S7.3,0.1,8,0.5
c0.7,0.3,1.3,0.7,1.8,1.2s0.9,1.1,1.2,1.8c0.5,1.2,0.5,2.5,0.2,3.7c0,0.2-0.1,0.4-0.2,0.6c0,0.1-0.2,0.6-0.2,0.6
c0.6,0.6,1.3,1.3,1.9,1.9c0.7,0.7,1.3,1.3,2,2c0,0,0.3,0.2,0.3,0.3c0,0.3-0.1,0.7-0.3,1c-0.2,0.6-0.8,1-1.4,1.2
c-0.1,0-0.6,0.2-0.6,0.1c0,0-4.2-4.2-4.2-4.2c0,0-0.8,0.3-0.8,0.4c-1.3,0.4-2.8,0.5-4.1-0.1c-0.7-0.3-1.3-0.7-1.8-1.2
C1.2,9.3,0.8,8.7,0.5,8S0,6.6,0,5.8z M1.6,5.8c0,0.4,0.1,0.9,0.2,1.3C2.1,8.2,3,9.2,4.1,9.6c0.5,0.2,1,0.3,1.6,0.3
c0.6,0,1.1-0.1,1.6-0.3C8.7,9,9.7,7.6,9.8,6c0.1-1.5-0.6-3.1-2-3.9c-0.9-0.5-2-0.6-3-0.4C4.6,1.8,4.4,1.9,4.1,2
c-0.5,0.2-1,0.5-1.4,0.9C2,3.7,1.6,4.7,1.6,5.8z"/>
</svg>
</i>
</span>
</p>&nbsp;
{__('Configure search source', 'tainacan')}
</ToolbarButton>
}
</ToolbarGroup>
): null
}
{ TainacanBlocksCompatToolbar({ controls: alignmentControls }) }
{ collectionId ?
TainacanBlocksCompatToolbar({
label:__('Configure search source', 'tainacan'),
icon: <svg width="24" height="24" viewBox="-2 -4 20 20">
<path d="M0,5.8C0,5,0.2,4.2,0.5,3.5s0.7-1.3,1.2-1.8s1.1-0.9,1.8-1.2C4.2,0.1,5,0,5.8,0S7.3,0.1,8,0.5
c0.7,0.3,1.3,0.7,1.8,1.2s0.9,1.1,1.2,1.8c0.5,1.2,0.5,2.5,0.2,3.7c0,0.2-0.1,0.4-0.2,0.6c0,0.1-0.2,0.6-0.2,0.6
c0.6,0.6,1.3,1.3,1.9,1.9c0.7,0.7,1.3,1.3,2,2c0,0,0.3,0.2,0.3,0.3c0,0.3-0.1,0.7-0.3,1c-0.2,0.6-0.8,1-1.4,1.2
c-0.1,0-0.6,0.2-0.6,0.1c0,0-4.2-4.2-4.2-4.2c0,0-0.8,0.3-0.8,0.4c-1.3,0.4-2.8,0.5-4.1-0.1c-0.7-0.3-1.3-0.7-1.8-1.2
C1.2,9.3,0.8,8.7,0.5,8S0,6.6,0,5.8z M1.6,5.8c0,0.4,0.1,0.9,0.2,1.3C2.1,8.2,3,9.2,4.1,9.6c0.5,0.2,1,0.3,1.6,0.3
c0.6,0,1.1-0.1,1.6-0.3C8.7,9,9.7,7.6,9.8,6c0.1-1.5-0.6-3.1-2-3.9c-0.9-0.5-2-0.6-3-0.4C4.6,1.8,4.4,1.9,4.1,2
c-0.5,0.2-1,0.5-1.4,0.9C2,3.7,1.6,4.7,1.6,5.8z"/>
</svg>,
onClick: openSearchBarModal
})
: null }
</BlockControls>
</div>
@ -700,5 +654,6 @@ registerBlockType('tainacan/search-bar', {
save({ attributes, className }){
const { content } = attributes;
return <div className={ className }>{ content }</div>
}
},
deprecated: DeprecatedBlocks
});

View File

@ -0,0 +1,79 @@
const { __ } = wp.i18n;
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
collectionId: {
type: String,
default: undefined
},
collectionSlug: {
type: String,
default: undefined
},
alignment: {
type: String,
default: 'center'
},
isModalOpen: {
type: Boolean,
default: false
},
maxWidth: {
type: Number,
value: 80
},
placeholderText: {
type: String,
default: __('Search', 'tainacan')
},
showCollectionHeader: {
type: Boolean,
value: false
},
showCollectionLabel: {
type: Boolean,
value: false
},
collectionHeaderHeight: {
type: Number,
value: 165
},
collectionBackgroundColor: {
type: String,
default: "#454647"
},
collectionTextColor: {
type: String,
default: "#ffffff"
},
collectionHeaderImage: {
type: String,
default: undefined
},
collectionName: {
type: String,
default: undefined
},
collectionTextSize: {
type: Number,
default: 2
},
},
supports: {
align: ['full', 'wide', 'left', 'center', 'right'],
html: true,
multiple: false
},
save({ attributes, className }){
const { content } = attributes;
return <div className={ className }>{ content }</div>
}
}
]

View File

@ -292,7 +292,7 @@ export default class SearchBarModal extends React.Component {
{
this.state.modalCollections.length < this.state.totalModalCollections ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalCollections() }>
{__('Load more', 'tainacan')}
@ -308,7 +308,7 @@ export default class SearchBarModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -11,7 +11,7 @@
width: 100%;
#tainacan-search-bar-block {
height: 32px;
height: 2em;
max-width: 100%;
display: flex;
justify-content: center;
@ -41,6 +41,8 @@
border: none;
padding: 4px 0.75em;
text-overflow: ellipsis;
overflow: hidden;
font-size: 0.875em;
}
button {
height: auto !important;
@ -54,8 +56,9 @@
font-size: 1em;
.icon {
height: 28px;
svg {
height: 1.75em;
svg {
transform: scale(1);
fill: var(--tainacan-block-primary, $primary);
}
}
@ -130,12 +133,12 @@
}
button {
margin-right: 0.75em;
margin-right: 12px;
padding: 0 0.35em;
min-height: 28px;
min-height: 1.75em;
z-index: 2;
border: none;
background: transparent;
background: transparent !important;
cursor: pointer;
.icon {
@ -205,7 +208,7 @@
&.is-style-stylish {
#tainacan-search-bar-block {
width: 100%;
height: 53px;
height: 3.3125em;
display: flex;
flex-direction: row;
border: none;
@ -218,18 +221,18 @@
&:hover input#tainacan-search-bar-block_input {
width: 100%;
padding-right: 52px;
padding-left: 24px;
padding-right: 3.25em;
padding-left: 1.625em;
border-width: 0;
}
input#tainacan-search-bar-block_input {
width: 0%;
min-width: 0%;
border-radius: 28px;
margin-right: -56px;
padding-right: 27px;
padding-left: 26px;
border-radius: 3.3125em;
margin-right: -3.5em;
padding-right: 1.6875em;
padding-left: 1.625em;
font-size: 1em;
border-width: 0;
background: var(--tainacan-block-gray1, $gray1);
@ -239,8 +242,8 @@
&:active,
&:hover {
width: 100%;
padding-right: 52px;
padding-left: 24px;
padding-right: 3.25em;
padding-left: 1.625em;
border-width: 0;
}
}
@ -248,7 +251,7 @@
button {
margin-left: 0.875em;
padding: 0 0.35em;
min-height: 28px;
min-height: 1.75em;
z-index: 2;
border: none;
background: transparent;
@ -276,8 +279,8 @@
&:not(.is-aligned-right):not(.is-aligned-left) {
.tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 53px);
width: calc(100% - 4.1667vw - 53px);
width: calc(100% - var(--tainacan-one-column) - 3.3125em);
width: calc(100% - 4.1667vw - 3.3125em);
bottom: calc(-50% + 38px);
position: absolute;
}
@ -287,21 +290,21 @@
}
&.is-aligned-right {
.tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 26px);
width: calc(100% - 4.1667vw - 26px);
width: calc(100% - var(--tainacan-one-column) - 1.625em);
width: calc(100% - 4.1667vw - 1.625em);
top: calc(-50% + 26px);
right: calc(var(--tainacan-one-column) + 26px);
right: calc(4.1667vw + 26px);
right: calc(var(--tainacan-one-column) + 1.625em);
right: calc(4.1667vw + 1.625em);
position: absolute;
}
}
&.is-aligned-left {
.tainacan-search-container {
width: calc(100% - 1em - 26px);
width: calc(100% - 1em - 1.625em);
top: calc(-50% + 26px);
left: calc(var(--tainacan-one-column) + 26px);
left: calc(4.1667vw + 26px);
left: calc(var(--tainacan-one-column) + 1.625em);
left: calc(4.1667vw + 1.625em);
position: absolute;
}
}
@ -310,9 +313,9 @@
background: white;
border-width: 3px;
border-style: solid;
margin-right: -56px;
padding-right: 24px;
padding-left: 24px;
margin-right: -3.5em;
padding-right: 1.5em;
padding-left: 1.5em;
&:hover {
border-width: 3px !important;
@ -321,8 +324,8 @@
@media only screen and (max-width: 768px) {
.tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 53px) !important;
width: calc(100% - 4.1667vw - 53px) !important;
width: calc(100% - var(--tainacan-one-column) - 3.3125em) !important;
width: calc(100% - 4.1667vw - 3.3125em) !important;
bottom: calc(-50% + 38px) !important;
position: absolute !important;
}

View File

@ -0,0 +1,277 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
terms: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
selectedTerms: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxTermsNumber: {
type: Number,
value: undefined
},
maxTermsPerScreen: {
type: Number,
value: 6
},
isLoading: {
type: Boolean,
value: false
},
isLoadingTerm: {
type: Boolean,
value: false
},
arrowsPosition: {
type: String,
value: 'search'
},
largeArrows: {
type: Boolean,
value: false
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideName: {
type: Boolean,
value: true
},
showTermThumbnail: {
type: Boolean,
value: false
},
term: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
termBackgroundColor: {
type: String,
default: "#454647"
},
termTextColor: {
type: String,
default: "#ffffff"
},
taxonomyId: {
type: String,
default: undefined
}
},
supports: {
align: ['full', 'wide'],
html: false,
multiple: true
},
save({ attributes, className }){
const {
content,
blockId,
selectedTerms,
arrowsPosition,
largeArrows,
maxTermsPerScreen,
maxTermsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showTermThumbnail,
taxonomyId
} = attributes;
return <div
className={ className }
selected-terms={ JSON.stringify(selectedTerms.map((term) => { return term.id; })) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
large-arrows={ '' + largeArrows }
max-terms-number={ maxTermsNumber }
max-terms-per-screen={ maxTermsPerScreen }
taxonomy-id={ taxonomyId }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-term-thumbnail={ '' + showTermThumbnail }
id={ 'wp-block-tainacan-carousel-terms-list_' + blockId }>
{ content }
</div>
}
},
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
terms: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
selectedTerms: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxTermsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingTerm: {
type: Boolean,
value: false
},
arrowsPosition: {
type: String,
value: 'search'
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideName: {
type: Boolean,
value: true
},
showTermThumbnail: {
type: Boolean,
value: false
},
term: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
termBackgroundColor: {
type: String,
default: "#454647"
},
termTextColor: {
type: String,
default: "#ffffff"
},
taxonomyId: {
type: String,
default: undefined
}
},
save({ attributes, className }){
const {
content,
blockId,
selectedTerms,
arrowsPosition,
maxTermsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showTermThumbnail,
taxonomyId
} = attributes;
return <div
className={ className }
selected-terms={ JSON.stringify(selectedTerms.map((term) => { return term.id; })) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-terms-number={ maxTermsNumber }
taxonomy-id={ taxonomyId }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-term-thumbnail={ '' + showTermThumbnail }
id={ 'wp-block-tainacan-carousel-terms-list_' + blockId }>
{ content }
</div>
},
},
{
save({ attributes, className }){
const {
content,
blockId,
selectedTerms,
arrowsPosition,
maxTermsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showTermThumbnail,
taxonomyId
} = attributes;
return <div
className={ className }
selected-terms={ JSON.stringify(selectedTerms) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-terms-number={ maxTermsNumber }
taxonomy-id={ taxonomyId }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-term-thumbnail={ '' + showTermThumbnail }
id={ 'wp-block-tainacan-carousel-terms-list_' + blockId }>
{ content }
</div>
}
}
]

View File

@ -211,7 +211,7 @@ export default {
preventInteractionOnTransition: true,
allowClick: true,
allowTouchMove: true,
slidesPerView: this.showTermThumbnail ? 6 : 5,
slidesPerView: 1,
slidesPerGroup: 1,
spaceBetween: this.showTermThumbnail ? 32 : 16,
slideToClickedSlide: true,
@ -238,13 +238,13 @@ export default {
if (!isNaN(this.maxTermsPerScreen)) {
this.swiperOptions.breakpoints = {
498: { slidesPerView: this.maxTermsPerScreen - 5 > 0 ? this.maxTermsPerScreen - 5 : 1 },
768: { slidesPerView: this.maxTermsPerScreen - 4 > 0 ? this.maxTermsPerScreen - 4 : 1 },
1024: { slidesPerView: this.maxTermsPerScreen - 3 > 0 ? this.maxTermsPerScreen - 3 : 1 },
1366: { slidesPerView: this.maxTermsPerScreen - 2 > 0 ? this.maxTermsPerScreen - 2 : 1 },
1600: { slidesPerView: this.maxTermsPerScreen - 1 > 0 ? this.maxTermsPerScreen - 1 : 1 },
498: { slidesPerView: this.maxTermsPerScreen - 4 > 0 ? this.maxTermsPerScreen - 4 : 1 },
768: { slidesPerView: this.maxTermsPerScreen - 3 > 0 ? this.maxTermsPerScreen - 3 : 1 },
1024: { slidesPerView: this.maxTermsPerScreen - 2 > 0 ? this.maxTermsPerScreen - 2 : 1 },
1366: { slidesPerView: this.maxTermsPerScreen - 1 > 0 ? this.maxTermsPerScreen - 1 : 1 },
1600: { slidesPerView: this.maxTermsPerScreen > 0 ? this.maxTermsPerScreen : 1 },
}
this.swiperOptions.slidesPerView = this.maxTermsPerScreen;
this.swiperOptions.slidesPerView = 1;
}
},
methods: {

View File

@ -145,6 +145,7 @@
padding: 8px 16px;
display: block;
line-height: 1.2em;
word-break: break-word;
}
a>img {
width: 100%;

View File

@ -2,14 +2,16 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { RangeControl, Spinner, Button, BaseControl, ToggleControl, SelectControl, Placeholder, IconButton, PanelBody, ToolbarGroup, ToolbarButton } = wp.components;
const { RangeControl, Spinner, Button, BaseControl, ToggleControl, SelectControl, Placeholder, IconButton, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import TermsModal from '../terms-list/terms-modal.js';
import tainacan from '../../js/axios.js';
import axios from 'axios';
import qs from 'qs';
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import DeprecatedBlocks from './carousel-terms-list-deprecated.js';
registerBlockType('tainacan/carousel-terms-list', {
title: __('Tainacan Terms Carousel', 'tainacan'),
@ -24,7 +26,7 @@ registerBlockType('tainacan/carousel-terms-list', {
d="M21.43,14.64,19.32,17a2.57,2.57,0,0,1-2,1H12.05a6,6,0,0,0-6-6H6V10.64A2.59,2.59,0,0,1,8.59,8H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,14.64ZM4,4A2,2,0,0,0,2,6v7.63a5.74,5.74,0,0,1,2-1.2V6H16V4ZM7,15.05v6.06l3.06-3.06ZM5,21.11V15.05L1.94,18.11Z"/>
</svg>,
category: 'tainacan-blocks',
keywords: [ __( 'terms', 'tainacan' ), __( 'carousel', 'tainacan' ), __( 'slider', 'tainacan' ), __( 'taxonomy', 'tainacan' ) ],
keywords: [ __( 'carousel', 'tainacan' ), __( 'slider', 'tainacan' ), __( 'taxonomy', 'tainacan' ) ],
description: __('List terms on a Carousel, showing their thumbnails or a preview of items.', 'tainacan'),
example: {
attributes: {
@ -121,7 +123,8 @@ registerBlockType('tainacan/carousel-terms-list', {
supports: {
align: ['full', 'wide'],
html: false,
multiple: true
multiple: true,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected, clientId }){
let {
@ -156,10 +159,17 @@ registerBlockType('tainacan/carousel-terms-list', {
<li
key={ term.id }
className={ 'term-list-item ' + (!showTermThumbnail ? 'term-list-item-grid ' : '') + (maxTermsPerScreen ? ' max-terms-per-screen-' + maxTermsPerScreen : '') }>
<IconButton
onClick={ () => removeItemOfId(term.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
{ tainacan_blocks.wp_version < '5.4' ?
<IconButton
onClick={ () => removeItemOfId(term.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
:
<Button
onClick={ () => removeItemOfId(term.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
}
<a
id={ isNaN(term.id) ? term.id : 'term-id-' + term.id }
href={ term.url }
@ -308,49 +318,18 @@ registerBlockType('tainacan/carousel-terms-list', {
{ terms.length ?
<BlockControls>
{ tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ () => openCarouselModal() } >
<p style={{ margin: 0 }}>
<svg
{
TainacanBlocksCompatToolbar({
label: __('Add more terms', 'tainacan'),
icon: <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
viewBox="0 -2 24 24"
height="24px"
width="24px">
<path d="M21.43,14.64,19.32,17a2.57,2.57,0,0,1-2,1H12.05a6,6,0,0,0-6-6H6V10.64A2.59,2.59,0,0,1,8.59,8H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,14.64ZM4,4A2,2,0,0,0,2,6v7.63a5.74,5.74,0,0,1,2-1.2V6H16V4ZM7,15.05v6.06l3.06-3.06ZM5,21.11V15.05L1.94,18.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more terms', 'tainacan') }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ () => openCarouselModal() } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M21.43,14.64,19.32,17a2.57,2.57,0,0,1-2,1H12.05a6,6,0,0,0-6-6H6V10.64A2.59,2.59,0,0,1,8.59,8H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,14.64ZM4,4A2,2,0,0,0,2,6v7.63a5.74,5.74,0,0,1,2-1.2V6H16V4ZM7,15.05v6.06l3.06-3.06ZM5,21.11V15.05L1.94,18.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more terms', 'tainacan') }
</Button>
:
<ToolbarButton onClick={ () => openCarouselModal() } >
<p>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24px"
width="24px">
<path d="M21.43,14.64,19.32,17a2.57,2.57,0,0,1-2,1H12.05a6,6,0,0,0-6-6H6V10.64A2.59,2.59,0,0,1,8.59,8H17.3a2.57,2.57,0,0,1,2,1l2.11,2.38A2.59,2.59,0,0,1,21.43,14.64ZM4,4A2,2,0,0,0,2,6v7.63a5.74,5.74,0,0,1,2-1.2V6H16V4ZM7,15.05v6.06l3.06-3.06ZM5,21.11V15.05L1.94,18.11Z"/>
</svg>
</p>&nbsp;
{ __('Add more terms', 'tainacan') }
</ToolbarButton>
}
</ToolbarGroup>
</svg>,
onClick: openCarouselModal
})
}
</BlockControls>
: null }
@ -622,151 +601,5 @@ registerBlockType('tainacan/carousel-terms-list', {
{ content }
</div>
},
deprecated: [
{
attributes: {
content: {
type: 'array',
source: 'children',
selector: 'div'
},
terms: {
type: Array,
default: []
},
isModalOpen: {
type: Boolean,
default: false
},
selectedTerms: {
type: Array,
default: []
},
itemsRequestSource: {
type: String,
default: undefined
},
maxTermsNumber: {
type: Number,
value: undefined
},
isLoading: {
type: Boolean,
value: false
},
isLoadingTerm: {
type: Boolean,
value: false
},
arrowsPosition: {
type: String,
value: 'search'
},
autoPlay: {
type: Boolean,
value: false
},
autoPlaySpeed: {
type: Number,
value: 3
},
loopSlides: {
type: Boolean,
value: false
},
hideName: {
type: Boolean,
value: true
},
showTermThumbnail: {
type: Boolean,
value: false
},
term: {
type: Object,
value: undefined
},
blockId: {
type: String,
default: undefined
},
termBackgroundColor: {
type: String,
default: "#454647"
},
termTextColor: {
type: String,
default: "#ffffff"
},
taxonomyId: {
type: String,
default: undefined
}
},
save({ attributes, className }){
const {
content,
blockId,
selectedTerms,
arrowsPosition,
maxTermsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showTermThumbnail,
taxonomyId
} = attributes;
return <div
className={ className }
selected-terms={ JSON.stringify(selectedTerms.map((term) => { return term.id; })) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-terms-number={ maxTermsNumber }
taxonomy-id={ taxonomyId }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-term-thumbnail={ '' + showTermThumbnail }
id={ 'wp-block-tainacan-carousel-terms-list_' + blockId }>
{ content }
</div>
},
},
{
save({ attributes, className }){
const {
content,
blockId,
selectedTerms,
arrowsPosition,
maxTermsNumber,
autoPlay,
autoPlaySpeed,
loopSlides,
hideName,
showTermThumbnail,
taxonomyId
} = attributes;
return <div
className={ className }
selected-terms={ JSON.stringify(selectedTerms) }
arrows-position={ arrowsPosition }
auto-play={ '' + autoPlay }
auto-play-speed={ autoPlaySpeed }
loop-slides={ '' + loopSlides }
hide-name={ '' + hideName }
max-terms-number={ maxTermsNumber }
taxonomy-id={ taxonomyId }
tainacan-api-root={ tainacan_blocks.root }
tainacan-base-url={ tainacan_blocks.base_url }
show-term-thumbnail={ '' + showTermThumbnail }
id={ 'wp-block-tainacan-carousel-terms-list_' + blockId }>
{ content }
</div>
}
}
]
deprecated: DeprecatedBlocks
});

View File

@ -2,11 +2,13 @@ const { registerBlockType } = wp.blocks;
const { __ } = wp.i18n;
const { IconButton, Button, ToggleControl, Placeholder, Toolbar, ToolbarGroup, PanelBody, ToolbarButton } = wp.components;
const { IconButton, Button, ToggleControl, Placeholder, PanelBody } = wp.components;
const { InspectorControls, BlockControls } = wp.editor;
const { InspectorControls, BlockControls } = ( tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor );
import TainacanBlocksCompatToolbar from '../../js/tainacan-blocks-compat-toolbar.js';
import TermsModal from './terms-modal.js';
import DeprecatedBlocks from './terms-list-deprecated.js';
registerBlockType('tainacan/terms-list', {
title: __('Tainacan Terms List', 'tainacan'),
@ -98,6 +100,7 @@ registerBlockType('tainacan/terms-list', {
supports: {
align: ['full', 'wide'],
html: false,
fontSize: true
},
edit({ attributes, setAttributes, className, isSelected }){
let {
@ -116,10 +119,17 @@ registerBlockType('tainacan/terms-list', {
<li
key={ term.id }
className="term-list-item">
<IconButton
onClick={ () => removeTermOfId(term.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
{ tainacan_blocks.wp_version < '5.4' ?
<IconButton
onClick={ () => removeTermOfId(term.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
:
<Button
onClick={ () => removeTermOfId(term.id) }
icon="no-alt"
label={__('Remove', 'tainacan')}/>
}
<a
id={ isNaN(term.id) ? term.id : 'term-id-' + term.id }
href={ term.url }
@ -214,42 +224,16 @@ registerBlockType('tainacan/terms-list', {
<div>
<BlockControls>
<Toolbar controls={ layoutControls } />
{ TainacanBlocksCompatToolbar({ controls: layoutControls }) }
{ selectedTermsHTML.length ?
tainacan_blocks.wp_version < '5.4' ?
<Button style={{ whiteSpace: 'nowrap', alignItems: 'center', borderTop: '1px solid #b5bcc2' }} onClick={ openTermsModal } >
<p style={{ margin: 0 }}>
<svg width="24" height="24" viewBox="0 -3 12 17">
<path
d="M 4.4,2.5 H 0 V 0 h 4.4 l 1.2,1.3 z m -1.9,5 v 3.1 H 5 v 1.2 H 1.3 v -8 H 2.5 V 6.3 H 5 V 7.6 H 2.5 Z m 8.2,0.7 H 6.3 V 5.7 h 4.4 l 1.2,1.2 z M 11.9,11.3 10.7,10 H 6.3 v 2.5 h 4.4 z"/>
</svg>
</p>&nbsp;
{ __( 'Select terms', 'tainacan' ) }
</Button>
:
<ToolbarGroup>
{ tainacan_blocks.wp_version < '5.5' ?
<Button style={{ whiteSpace: 'nowrap' }} onClick={ openTermsModal } >
<p>
<svg width="24" height="24" viewBox="0 -3 12 17">
<path
d="M 4.4,2.5 H 0 V 0 h 4.4 l 1.2,1.3 z m -1.9,5 v 3.1 H 5 v 1.2 H 1.3 v -8 H 2.5 V 6.3 H 5 V 7.6 H 2.5 Z m 8.2,0.7 H 6.3 V 5.7 h 4.4 l 1.2,1.2 z M 11.9,11.3 10.7,10 H 6.3 v 2.5 h 4.4 z"/>
</svg>
</p>&nbsp;
{ __( 'Select terms', 'tainacan' ) }
</Button>
:
<ToolbarButton onClick={ openTermsModal } >
<p>
<svg width="24" height="24" viewBox="0 -3 12 17">
<path
d="M 4.4,2.5 H 0 V 0 h 4.4 l 1.2,1.3 z m -1.9,5 v 3.1 H 5 v 1.2 H 1.3 v -8 H 2.5 V 6.3 H 5 V 7.6 H 2.5 Z m 8.2,0.7 H 6.3 V 5.7 h 4.4 l 1.2,1.2 z M 11.9,11.3 10.7,10 H 6.3 v 2.5 h 4.4 z"/>
</svg>
</p>&nbsp;
{ __( 'Select terms', 'tainacan' ) }
</ToolbarButton>
}
</ToolbarGroup>
TainacanBlocksCompatToolbar({
label: __( 'Select terms', 'tainacan' ),
icon: <svg width="24" height="24" viewBox="0 -3 12 17">
<path
d="M 4.4,2.5 H 0 V 0 h 4.4 l 1.2,1.3 z m -1.9,5 v 3.1 H 5 v 1.2 H 1.3 v -8 H 2.5 V 6.3 H 5 V 7.6 H 2.5 Z m 8.2,0.7 H 6.3 V 5.7 h 4.4 l 1.2,1.2 z M 11.9,11.3 10.7,10 H 6.3 v 2.5 h 4.4 z"/>
</svg>,
onClick: openTermsModal
})
: null }
</BlockControls>
</div>
@ -351,5 +335,6 @@ registerBlockType('tainacan/terms-list', {
save({ attributes, className }){
const { content } = attributes;
return <div className={className}>{ content }</div>
}
},
deprecated: DeprecatedBlocks
});

View File

@ -0,0 +1,84 @@
export default [
/* Deprecated on Tainacan 0.17.2, due to the introduction of support: fontSize */
{
attributes: {
selectedTermsObject: {
type: 'array',
source: 'query',
selector: 'a',
query: {
id: {
type: 'string',
source: 'attribute',
attribute: 'id'
},
url: {
type: 'string',
source: 'attribute',
attribute: 'href'
},
name: {
type: 'string',
source: 'text'
},
header_image: {
source: 'query',
selector: 'img',
query: {
src: {
source: 'attribute',
attribute: 'src'
},
alt: {
source: 'attribute',
attribute: 'alt'
},
}
},
},
default: []
},
content: {
type: 'array',
source: 'children',
selector: 'div'
},
query: {
type: Object,
default: {}
},
selectedTermsHTML: {
type: Array,
default: []
},
showImage: {
type: Boolean,
default: true
},
showName: {
type: Boolean,
default: true
},
layout: {
type: String,
default: 'grid'
},
isModalOpen: {
type: Boolean,
default: false
},
taxonomyId: {
type: String,
default: undefined
},
},
supports: {
align: ['full', 'wide'],
html: false,
},
save({ attributes, className }){
const { content } = attributes;
return <div className={className}>{ content }</div>
}
}
]

View File

@ -414,7 +414,7 @@ export default class TermsModal extends React.Component {
{
this.state.modalTerms.length < this.state.totalModalTerms ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalTerms(this.state.modalTerms.length, this.state.taxonomyId) }>
{__('Load more', 'tainacan')}
@ -430,7 +430,7 @@ export default class TermsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => this.resetTaxonomies() }>
{__('Switch taxonomy', 'tainacan')}
</Button>
@ -534,7 +534,7 @@ export default class TermsModal extends React.Component {
{
this.state.modalTaxonomies.length < this.state.totalModalTaxonomies ? (
<Button
isDefault
isSecondary
isSmall
onClick={ () => this.fetchModalTaxonomies() }>
{__('Load more', 'tainacan')}
@ -550,7 +550,7 @@ export default class TermsModal extends React.Component {
)}
<div className="modal-footer-area">
<Button
isDefault
isSecondary
onClick={ () => { this.cancelSelection() }}>
{__('Cancel', 'tainacan')}
</Button>

View File

@ -2,6 +2,7 @@ import Vue from 'vue';
import store from '../../admin/js/store/store';
import router from './roles-router';
import VTooltip from 'v-tooltip';
import { Snackbar, Modal } from 'buefy';
// Vue Dev Tools!
Vue.config.devtools = process && process.env && process.env.NODE_ENV === 'development';
@ -12,6 +13,8 @@ import RolesPage from '../roles.vue';
Vue.use(I18NPlugin);
Vue.use(VTooltip);
Vue.use(Snackbar);
Vue.use(Modal);
// Changing title of pages
router.beforeEach((to, from, next) => {

View File

@ -16,6 +16,11 @@
class="notice notice-success notice-alt">
<p>{{ $i18n.get('User Role Saved') }}</p>
</div>
<div
v-if="showErrorNotice"
class="notice notice-error notice-alt">
<p>{{ errorMessage }}</p>
</div>
</transition>
<hr class="wp-header-end">
<br>
@ -234,7 +239,9 @@
capabilities: {}
},
capabilitiesTab: 'repository',
showNotice: false
showNotice: false,
showErrorNotice: false,
errorMessage: ''
}
},
computed: {
@ -351,21 +358,30 @@
this.createRole(this.role)
.then((createdRole) => {
this.roleSlug = createdRole.slug;
this.role = createdRole;
this.$router.push('/roles/' + this.roleSlug);
this.isUpdatingRole = false;
this.showNotice = true;
this.showErrorNotice = false;
this.errorMessage = '';
})
.catch(() => {
.catch((error) => {
this.isUpdatingRole = false;
this.errorMessage = error.error_message;
this.showErrorNotice = true;
});
} else {
this.updateRole(this.role)
.then(() => {
this.isUpdatingRole = false;
this.showNotice = true;
this.showErrorNotice = false;
this.errorMessage = '';
})
.catch(() => {
.catch((error) => {
this.isUpdatingRole = false;
this.errorMessage = error.error_message;
this.showErrorNotice = true;
});
}
},

View File

@ -311,6 +311,7 @@ return apply_filters( 'tainacan-admin-i18n', [
'label_metadata_mapping' => __( 'Metadata mapping', 'tainacan' ),
'label_select_metadatum' => __( 'Select metadatum', 'tainacan' ),
'label_create_metadatum' => __( 'Create metadatum', 'tainacan' ),
'label_create_repository_metadata' => __( 'Create repository metadata', 'tainacan' ),
'label_select_metadatum_type' => __( 'Select a metadatum type', 'tainacan' ),
'label_add_more_metadata' => __( 'Add more metadata', 'tainacan' ),
'label_from_source_collection' => __( 'From source file', 'tainacan' ),
@ -434,6 +435,7 @@ return apply_filters( 'tainacan-admin-i18n', [
'label_document_uploaded' => __( 'Document uploaded', 'tainacan' ),
'label_repository_filter' => __( 'Repository filter', 'tainacan' ),
'label_repository_metadatum' => __( 'Repository metadatum', 'tainacan' ),
'label_repository_metadata' => __( 'Repository metadata', 'tainacan' ),
'label_collection_filter' => __( 'Collection filter', 'tainacan' ),
'label_collection_metadatum' => __( 'Collection metadatum', 'tainacan' ),
'label_collection_capabilities' => __( 'Collection capabilities', 'tainacan' ),

View File

@ -35,7 +35,7 @@ module.exports = {
block_carousel_terms_list: './src/views/gutenberg-blocks/tainacan-terms/carousel-terms-list/index.js',
block_carousel_terms_list_theme: './src/views/gutenberg-blocks/tainacan-terms/carousel-terms-list/carousel-terms-list-theme.js',
tainacan_blocks_category_icon: './src/views/gutenberg-blocks/tainacan-blocks-category-icon.js'
tainacan_blocks_category_icon: './src/views/gutenberg-blocks/js/tainacan-blocks-category-icon.js'
},
output: {
path: path.resolve(__dirname, './src/assets/js/'),