Release v2.17.4: add API region sorting and indexed placeholders
This commit is contained in:
1 parent
bc8075379a
commit
46636939de
18 files changed
+709
-232
No files matched your search
@@ -748,8 +748,8 @@ import { createSlideAnimationEditor } from '/assets/js/slides/slide-animation-ed
|
||||
var getCurrentRssConfig = slideRegionHelpers.getCurrentRssConfig;
|
||||
var getApiFieldList = slideRegionHelpers.getApiFieldList;
|
||||
var updateApiPlaceholderChips = slideRegionHelpers.updateApiPlaceholderChips;
|
||||
var updateApiItemsPathReset = slideRegionHelpers.updateApiItemsPathReset;
|
||||
var updateApiSampleDataPanel = slideRegionHelpers.updateApiSampleDataPanel;
|
||||
var updateApiItemNumberLimit = slideRegionHelpers.updateApiItemNumberLimit;
|
||||
var getCurrentApiConfig = slideRegionHelpers.getCurrentApiConfig;
|
||||
var updateRssItemNumberLimit = slideRegionHelpers.updateRssItemNumberLimit;
|
||||
|
||||
@@ -768,6 +768,9 @@ import { createSlideAnimationEditor } from '/assets/js/slides/slide-animation-ed
|
||||
templateFields.innerHTML = template.regions.length ? template.regions.map(function (region) {
|
||||
return getRegionEditorCardHtml(region) || '<div class="muted">Region editor unavailable.</div>';
|
||||
}).join('') : '<div class="muted">This template has no regions.</div>';
|
||||
if (typeof window.initJsonTogglePanels === 'function') {
|
||||
window.initJsonTogglePanels(templateFields);
|
||||
}
|
||||
|
||||
if (window.adminlte && typeof window.adminlte.CardWidget === 'function') {
|
||||
templateFields.querySelectorAll('.card-widget[data-region-id]').forEach(function (card) {
|
||||
@@ -787,14 +790,6 @@ import { createSlideAnimationEditor } from '/assets/js/slides/slide-animation-ed
|
||||
window.requestAnimationFrame(function () {
|
||||
bindRegionCards();
|
||||
});
|
||||
templateFields.querySelectorAll('input[name^="region_api_item_number_"]').forEach(function (input) {
|
||||
var regionId = input.name.replace(/^region_api_item_number_/, '');
|
||||
var sourceInput = templateFields.querySelector('select[name="region_api_source_id_' + regionId + '"]');
|
||||
var pathInput = templateFields.querySelector('input[name="region_api_items_path_' + regionId + '"]');
|
||||
if (sourceInput) {
|
||||
updateApiItemNumberLimit(regionId, sourceInput.value, pathInput ? pathInput.value : '');
|
||||
}
|
||||
});
|
||||
templateFields.querySelectorAll('input[name^="region_rss_item_number_"]').forEach(function (input) {
|
||||
var regionId = input.name.replace(/^region_rss_item_number_/, '');
|
||||
var feedInput = templateFields.querySelector('select[name="region_rss_feed_id_' + regionId + '"]');
|
||||
@@ -852,39 +847,59 @@ import { createSlideAnimationEditor } from '/assets/js/slides/slide-animation-ed
|
||||
}
|
||||
});
|
||||
}
|
||||
templateFields.querySelectorAll('select[name^="region_rss_feed_id_"], input[name^="region_rss_item_number_"], select[name^="region_api_source_id_"], input[name^="region_api_item_number_"], input[name^="region_api_items_path_"]').forEach(function (input) {
|
||||
templateFields.querySelectorAll('select[name^="region_rss_feed_id_"], input[name^="region_rss_item_number_"], select[name^="region_api_source_id_"], input[name^="region_api_items_path_"], select[name^="region_api_sort_mode_"], input[name^="region_api_sort_by_"], select[name^="region_api_sort_direction_"]').forEach(function (input) {
|
||||
input.addEventListener('input', function () {
|
||||
var regionId = input.name.replace(/^region_(?:rss_feed_id|rss_item_number|api_source_id|api_item_number|api_items_path)_/, '');
|
||||
var regionId = input.name.replace(/^region_(?:rss_feed_id|rss_item_number|api_source_id|api_items_path|api_sort_mode|api_sort_by|api_sort_direction)_/, '');
|
||||
if (input.name.indexOf('region_rss_') === 0) {
|
||||
var rssFeed = input.name.indexOf('region_rss_feed_id_') === 0 ? input.value : (templateFields.querySelector('select[name="region_rss_feed_id_' + regionId + '"]') || {}).value;
|
||||
updateRssPlaceholderChips(regionId, rssFeed);
|
||||
updateRssItemNumberLimit(regionId, rssFeed);
|
||||
}
|
||||
if (input.name.indexOf('region_api_') === 0) {
|
||||
var apiSortMode = templateFields.querySelector('select[name="region_api_sort_mode_' + regionId + '"]');
|
||||
var apiSortByInput = templateFields.querySelector('input[name="region_api_sort_by_' + regionId + '"]');
|
||||
var apiSortFieldWrap = apiSortByInput && apiSortByInput.closest('[data-api-sort-field-wrap]');
|
||||
var apiSortDirection = templateFields.querySelector('select[name="region_api_sort_direction_' + regionId + '"]');
|
||||
var apiSortDirectionWrap = apiSortDirection && apiSortDirection.closest('[data-api-sort-direction-wrap]');
|
||||
var apiSortEnabled = apiSortMode && apiSortMode.value === 'field';
|
||||
if (apiSortFieldWrap) apiSortFieldWrap.hidden = !apiSortEnabled;
|
||||
if (apiSortDirectionWrap) apiSortDirectionWrap.hidden = !apiSortEnabled;
|
||||
if (apiSortMode && !apiSortEnabled && apiSortByInput) apiSortByInput.value = '';
|
||||
var apiSource = input.name.indexOf('region_api_source_id_') === 0 ? input.value : (templateFields.querySelector('select[name="region_api_source_id_' + regionId + '"]') || {}).value;
|
||||
var apiItemNumber = input.name.indexOf('region_api_item_number_') === 0 ? input.value : (templateFields.querySelector('input[name="region_api_item_number_' + regionId + '"]') || {}).value;
|
||||
var apiItemsPath = input.name.indexOf('region_api_items_path_') === 0 ? input.value : (templateFields.querySelector('input[name="region_api_items_path_' + regionId + '"]') || {}).value;
|
||||
updateApiItemNumberLimit(regionId, apiSource, apiItemsPath);
|
||||
var apiSortBy = apiSortEnabled && apiSortByInput ? apiSortByInput.value : '';
|
||||
var apiSortDirectionValue = apiSortDirection ? apiSortDirection.value : 'asc';
|
||||
updateApiItemsPathReset(regionId, apiSource);
|
||||
updateApiPlaceholderChips(regionId, apiSource, apiItemsPath);
|
||||
updateApiSampleDataPanel(regionId, apiSource, apiItemNumber, apiItemsPath);
|
||||
updateApiSampleDataPanel(regionId, apiSource, apiItemsPath, apiSortBy, apiSortDirectionValue);
|
||||
}
|
||||
templateSelectorLock.markEdited();
|
||||
requestPreviewRender();
|
||||
});
|
||||
input.addEventListener('change', function () {
|
||||
var regionId = input.name.replace(/^region_(?:rss_feed_id|rss_item_number|api_source_id|api_item_number|api_items_path)_/, '');
|
||||
var regionId = input.name.replace(/^region_(?:rss_feed_id|rss_item_number|api_source_id|api_items_path|api_sort_mode|api_sort_by|api_sort_direction)_/, '');
|
||||
if (input.name.indexOf('region_rss_') === 0) {
|
||||
var rssFeed = input.name.indexOf('region_rss_feed_id_') === 0 ? input.value : (templateFields.querySelector('select[name="region_rss_feed_id_' + regionId + '"]') || {}).value;
|
||||
updateRssPlaceholderChips(regionId, rssFeed);
|
||||
updateRssItemNumberLimit(regionId, rssFeed);
|
||||
}
|
||||
if (input.name.indexOf('region_api_') === 0) {
|
||||
var apiSortMode = templateFields.querySelector('select[name="region_api_sort_mode_' + regionId + '"]');
|
||||
var apiSortByInput = templateFields.querySelector('input[name="region_api_sort_by_' + regionId + '"]');
|
||||
var apiSortFieldWrap = apiSortByInput && apiSortByInput.closest('[data-api-sort-field-wrap]');
|
||||
var apiSortDirection = templateFields.querySelector('select[name="region_api_sort_direction_' + regionId + '"]');
|
||||
var apiSortDirectionWrap = apiSortDirection && apiSortDirection.closest('[data-api-sort-direction-wrap]');
|
||||
var apiSortEnabled = apiSortMode && apiSortMode.value === 'field';
|
||||
if (apiSortFieldWrap) apiSortFieldWrap.hidden = !apiSortEnabled;
|
||||
if (apiSortDirectionWrap) apiSortDirectionWrap.hidden = !apiSortEnabled;
|
||||
if (apiSortMode && !apiSortEnabled && apiSortByInput) apiSortByInput.value = '';
|
||||
var apiSource = input.name.indexOf('region_api_source_id_') === 0 ? input.value : (templateFields.querySelector('select[name="region_api_source_id_' + regionId + '"]') || {}).value;
|
||||
var apiItemNumber = input.name.indexOf('region_api_item_number_') === 0 ? input.value : (templateFields.querySelector('input[name="region_api_item_number_' + regionId + '"]') || {}).value;
|
||||
var apiItemsPath = input.name.indexOf('region_api_items_path_') === 0 ? input.value : (templateFields.querySelector('input[name="region_api_items_path_' + regionId + '"]') || {}).value;
|
||||
updateApiItemNumberLimit(regionId, apiSource, apiItemsPath);
|
||||
var apiSortBy = apiSortEnabled && apiSortByInput ? apiSortByInput.value : '';
|
||||
var apiSortDirectionValue = apiSortDirection ? apiSortDirection.value : 'asc';
|
||||
updateApiItemsPathReset(regionId, apiSource);
|
||||
updateApiPlaceholderChips(regionId, apiSource, apiItemsPath);
|
||||
updateApiSampleDataPanel(regionId, apiSource, apiItemNumber, apiItemsPath);
|
||||
updateApiSampleDataPanel(regionId, apiSource, apiItemsPath, apiSortBy, apiSortDirectionValue);
|
||||
}
|
||||
templateSelectorLock.markEdited();
|
||||
requestPreviewRender();
|
||||
@@ -989,6 +1004,30 @@ import { createSlideAnimationEditor } from '/assets/js/slides/slide-animation-ed
|
||||
requestPreviewRender();
|
||||
});
|
||||
templateFields.addEventListener('click', function (event) {
|
||||
var advancedToggle = event.target && typeof event.target.closest === 'function' ? event.target.closest('[data-api-advanced-toggle]') : null;
|
||||
if (advancedToggle) {
|
||||
var advancedPanel = templateFields.querySelector('#' + advancedToggle.getAttribute('aria-controls'));
|
||||
if (advancedPanel) {
|
||||
var isExpanded = advancedToggle.getAttribute('aria-expanded') === 'true';
|
||||
advancedToggle.setAttribute('aria-expanded', isExpanded ? 'false' : 'true');
|
||||
advancedPanel.hidden = isExpanded;
|
||||
advancedToggle.classList.toggle('btn-outline-secondary', isExpanded);
|
||||
advancedToggle.classList.toggle('btn-secondary', !isExpanded);
|
||||
}
|
||||
return;
|
||||
}
|
||||
var sampleToggle = event.target && typeof event.target.closest === 'function' ? event.target.closest('[data-api-sample-toggle]') : null;
|
||||
if (sampleToggle) {
|
||||
var sampleAccordion = sampleToggle.closest('[data-api-sample-data-accordion]');
|
||||
var samplePanel = sampleAccordion && sampleAccordion.querySelector('[data-api-sample-data-panel]');
|
||||
if (sampleAccordion && samplePanel) {
|
||||
var isExpanded = sampleToggle.getAttribute('aria-expanded') === 'true';
|
||||
sampleToggle.setAttribute('aria-expanded', isExpanded ? 'false' : 'true');
|
||||
sampleAccordion.classList.toggle('is-open', !isExpanded);
|
||||
samplePanel.hidden = isExpanded;
|
||||
}
|
||||
return;
|
||||
}
|
||||
var button = event.target && typeof event.target.closest === 'function' ? event.target.closest('[data-api-items-path-reset]') : null;
|
||||
var webpageUpdateButton = event.target && typeof event.target.closest === 'function' ? event.target.closest('[data-webpage-preview-update]') : null;
|
||||
if (!button) {
|
||||
|
||||
Reference in new issue
Block a user