@customviews-js/customviews 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom-views.core.cjs.js +31 -5
- package/dist/custom-views.core.cjs.js.map +1 -1
- package/dist/custom-views.core.esm.js +31 -5
- package/dist/custom-views.core.esm.js.map +1 -1
- package/dist/custom-views.esm.js +31 -5
- package/dist/custom-views.esm.js.map +1 -1
- package/dist/custom-views.js +31 -5
- package/dist/custom-views.js.map +1 -1
- package/dist/custom-views.min.js +2 -2
- package/dist/custom-views.min.js.map +1 -1
- package/dist/types/core/render.d.ts.map +1 -1
- package/dist/types/core/widget.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/custom-views.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @customviews-js/customviews v1.1.
|
|
2
|
+
* @customviews-js/customviews v1.1.4
|
|
3
3
|
* (c) 2025 Chan Ger Teck
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -279,8 +279,12 @@ function ensureFontAwesomeInjected() {
|
|
|
279
279
|
document.head.appendChild(link);
|
|
280
280
|
}
|
|
281
281
|
function replaceIconShortcodes(text) {
|
|
282
|
-
//
|
|
283
|
-
return text.replace(/:fa-([\w-]+):/g, (_, icon) =>
|
|
282
|
+
// Matches :fa-*, :fas-*, :fab-* etc.
|
|
283
|
+
return text.replace(/:(fa[b|s|r]?)-([\w-]+):/g, (_, style, icon) => {
|
|
284
|
+
// style = fa, fas, fab, far, etc.
|
|
285
|
+
// Default to "fa" if only "fa-" is given
|
|
286
|
+
return `<i class="${style} fa-${icon}"></i>`;
|
|
287
|
+
});
|
|
284
288
|
}
|
|
285
289
|
/** --- Basic renderers --- */
|
|
286
290
|
function renderImage(el, asset) {
|
|
@@ -2036,12 +2040,34 @@ class CustomViewsWidget {
|
|
|
2036
2040
|
// Get tab groups
|
|
2037
2041
|
const tabGroups = this.core.getTabGroups();
|
|
2038
2042
|
let tabGroupsHTML = '';
|
|
2043
|
+
// Check if any tab group or tab labels contain Font Awesome shortcodes
|
|
2044
|
+
let hasFontAwesomeShortcodes = false;
|
|
2045
|
+
if (this.options.showTabGroups && tabGroups && tabGroups.length > 0) {
|
|
2046
|
+
for (const group of tabGroups) {
|
|
2047
|
+
if (group.label && /:fa-[\w-]+:/.test(group.label)) {
|
|
2048
|
+
hasFontAwesomeShortcodes = true;
|
|
2049
|
+
break;
|
|
2050
|
+
}
|
|
2051
|
+
for (const tab of group.tabs) {
|
|
2052
|
+
if (tab.label && /:fa-[\w-]+:/.test(tab.label)) {
|
|
2053
|
+
hasFontAwesomeShortcodes = true;
|
|
2054
|
+
break;
|
|
2055
|
+
}
|
|
2056
|
+
}
|
|
2057
|
+
if (hasFontAwesomeShortcodes)
|
|
2058
|
+
break;
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
// Inject Font Awesome only if shortcodes are found
|
|
2062
|
+
if (hasFontAwesomeShortcodes) {
|
|
2063
|
+
ensureFontAwesomeInjected();
|
|
2064
|
+
}
|
|
2039
2065
|
if (this.options.showTabGroups && tabGroups && tabGroups.length > 0) {
|
|
2040
2066
|
const tabGroupControls = tabGroups.map(group => {
|
|
2041
|
-
const options = group.tabs.map(tab => `<option value="${tab.id}">${tab.label || tab.id}</option>`).join('');
|
|
2067
|
+
const options = group.tabs.map(tab => `<option value="${tab.id}">${replaceIconShortcodes(tab.label || tab.id)}</option>`).join('');
|
|
2042
2068
|
return `
|
|
2043
2069
|
<div class="cv-tab-group-control">
|
|
2044
|
-
<label for="tab-group-${group.id}">${group.label || group.id}</label>
|
|
2070
|
+
<label for="tab-group-${group.id}">${replaceIconShortcodes(group.label || group.id)}</label>
|
|
2045
2071
|
<select id="tab-group-${group.id}" class="cv-tab-group-select" data-group-id="${group.id}">
|
|
2046
2072
|
${options}
|
|
2047
2073
|
</select>
|