diff --git a/force-app/main/default/cspTrustedSites/Font_Awesome_CDN.cspTrustedSite-meta.xml b/force-app/main/default/cspTrustedSites/Font_Awesome_CDN.cspTrustedSite-meta.xml
new file mode 100644
index 0000000..a4c5f5c
--- /dev/null
+++ b/force-app/main/default/cspTrustedSites/Font_Awesome_CDN.cspTrustedSite-meta.xml
@@ -0,0 +1,7 @@
+
+
+ Communities
+ Font Awesome CDN Trusted Site
+ https://cdnjs.cloudflare.com
+ true
+
diff --git a/force-app/main/default/lwc/developmentPage/developmentPage.css b/force-app/main/default/lwc/developmentPage/developmentPage.css
index 495a8f4..6f678c1 100644
--- a/force-app/main/default/lwc/developmentPage/developmentPage.css
+++ b/force-app/main/default/lwc/developmentPage/developmentPage.css
@@ -48,6 +48,43 @@
letter-spacing: 1px;
}
+.dev-exit-section {
+ margin-top: 20px;
+ padding: 15px;
+ background: rgba(255, 255, 255, 0.05);
+ border-radius: 8px;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+.dev-input {
+ width: 100%;
+ max-width: 200px;
+ padding: 8px 12px;
+ margin: 0 auto;
+ display: block;
+ border: 1px solid rgba(255, 255, 255, 0.3);
+ border-radius: 4px;
+ background: rgba(255, 255, 255, 0.1);
+ color: #fff;
+ font-size: 0.9rem;
+ font-weight: 400;
+ text-align: center;
+ letter-spacing: 1px;
+ outline: none;
+ transition: all 0.3s ease;
+}
+
+.dev-input:focus {
+ border-color: rgba(255, 255, 255, 0.6);
+ background: rgba(255, 255, 255, 0.15);
+ box-shadow: 0 0 5px rgba(255, 255, 255, 0.2);
+}
+
+.dev-input::placeholder {
+ color: rgba(255, 255, 255, 0.5);
+ font-style: normal;
+}
+
.dev-content {
padding: 30px;
diff --git a/force-app/main/default/lwc/developmentPage/developmentPage.html b/force-app/main/default/lwc/developmentPage/developmentPage.html
index a036442..f198256 100644
--- a/force-app/main/default/lwc/developmentPage/developmentPage.html
+++ b/force-app/main/default/lwc/developmentPage/developmentPage.html
@@ -3,6 +3,15 @@
diff --git a/force-app/main/default/lwc/developmentPage/developmentPage.js b/force-app/main/default/lwc/developmentPage/developmentPage.js
index f8a48a8..1d5436b 100644
--- a/force-app/main/default/lwc/developmentPage/developmentPage.js
+++ b/force-app/main/default/lwc/developmentPage/developmentPage.js
@@ -1,17 +1,18 @@
import { LightningElement, track } from 'lwc';
export default class DevelopmentPage extends LightningElement {
- @track showDevPage = true; // Always visible by default
+ @track showDevPage = true; // Visible by default, hidden when tbizz is entered
@track currentStep = 1;
@track selectedTemplateId = '';
@track selectedPropertyId = '';
@track selectedPageSize = 'A4';
@track currentTimestamp = '';
@track debugMode = false;
+ @track tbizzInput = ''; // Input field value for tbizz
- // K-key click counter for closing development mode
- kKeyCount = 0;
- kKeyTimeout = null;
+ // tbizz sequence detection for opening development mode
+ tbizzSequence = '';
+ tbizzTimeout = null;
connectedCallback() {
this.updateTimestamp();
@@ -20,8 +21,8 @@ export default class DevelopmentPage extends LightningElement {
disconnectedCallback() {
this.removeKeyListener();
- if (this.kKeyTimeout) {
- clearTimeout(this.kKeyTimeout);
+ if (this.tbizzTimeout) {
+ clearTimeout(this.tbizzTimeout);
}
}
@@ -34,28 +35,20 @@ export default class DevelopmentPage extends LightningElement {
}
handleKeyPress(event) {
- // Only listen for 'K' key (case insensitive) - completely silent
- if (event.key.toLowerCase() === 'k') {
- this.kKeyCount++;
-
- // Clear any existing timeout
- if (this.kKeyTimeout) {
- clearTimeout(this.kKeyTimeout);
- }
-
- // Reset counter after 3 seconds of inactivity
- this.kKeyTimeout = setTimeout(() => {
- this.kKeyCount = 0;
- }, 3000);
-
- // Close dev page after 5 K key presses (silent)
- if (this.kKeyCount >= 5) {
+ // Listen for Enter key to check bweixx input
+ if (event.key === 'Enter') {
+ if (this.tbizzInput.toLowerCase() === 'bweixx') {
this.showDevPage = false;
- this.kKeyCount = 0; // Reset counter
+ this.tbizzInput = ''; // Clear input
}
}
}
+ // Handle input field changes
+ handleTbizzInputChange(event) {
+ this.tbizzInput = event.target.value;
+ }
+
updateTimestamp() {
this.currentTimestamp = new Date().toLocaleString();
}
diff --git a/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.css b/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.css
index cabd997..78871d3 100644
--- a/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.css
+++ b/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.css
@@ -9265,12 +9265,28 @@ late particularay
padding: 20px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
border: 1px solid #f0f0f0;
+}
+
+/* Header Controls Line - All buttons in a single row */
+.header-controls-line {
display: flex;
justify-content: space-between;
align-items: center;
- flex-wrap: wrap;
gap: 20px;
- flex-shrink: 0;
+ width: 100%;
+}
+
+/* Responsive design for header controls */
+@media (max-width: 768px) {
+ .header-controls-line {
+ flex-direction: column;
+ gap: 15px;
+ align-items: stretch;
+ }
+
+ .page-size-group {
+ justify-content: center;
+ }
}
@@ -9292,12 +9308,12 @@ late particularay
box-shadow: 0 4px 20px rgba(40, 167, 69, 0.1);
}
-/* Page Size Section */
-.page-size-section {
+/* Page Size Group - Updated for single line layout */
+.page-size-group {
display: flex;
align-items: center;
- gap: 15px;
- flex-wrap: wrap;
+ gap: 10px;
+ flex-shrink: 0;
}
.page-size-label {
@@ -14200,6 +14216,103 @@ img[draggable="true"] {
break-inside: avoid !important;
page-break-inside: avoid !important;
}
+}
+
+/* --- DRAG AND DROP STYLES --- */
+.draggable-gallery-item {
+ position: relative;
+ cursor: move;
+ transition: all 0.3s ease;
+ border-radius: 8px;
+ overflow: hidden;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
+ background: white;
+}
+
+.draggable-gallery-item:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 16px rgba(0,0,0,0.15);
+}
+
+.draggable-gallery-item.dragging {
+ opacity: 0.5;
+ transform: rotate(5deg);
+ z-index: 1000;
+}
+
+.draggable-gallery-item.drag-over {
+ border: 2px dashed #007bff;
+ background-color: rgba(0, 123, 255, 0.1);
+ transform: scale(1.05);
+}
+
+.draggable-gallery-item img {
+ width: 100%;
+ height: 200px;
+ object-fit: cover;
+ display: block;
+}
+
+.drag-handle {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ background: rgba(0, 0, 0, 0.7);
+ color: white;
+ padding: 4px 8px;
+ border-radius: 4px;
+ font-size: 12px;
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ cursor: move;
+}
+
+.draggable-gallery-item:hover .drag-handle {
+ opacity: 1;
+}
+
+.no-images {
+ grid-column: 1 / -1;
+ text-align: center;
+ padding: 40px;
+ color: #666;
+ font-style: italic;
+}
+
+/* Drag and drop for gallery grids */
+.gallery-grid .draggable-gallery-item {
+ height: 100%;
+ min-height: 120px;
+}
+
+.gallery-grid .draggable-gallery-item img {
+ height: 100%;
+ min-height: 120px;
+}
+
+/* Draggable Gallery Section */
+.draggable-gallery-section {
+ margin-top: 30px;
+ padding: 20px;
+ background: #f8f9fa;
+ border-radius: 12px;
+ border: 2px dashed #dee2e6;
+}
+
+.draggable-gallery-section .gallery-title {
+ color: #007bff;
+ font-size: 18px;
+ font-weight: 600;
+ margin-bottom: 15px;
+ text-align: center;
+}
+
+.draggable-gallery-section .gallery-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 15px;
+ margin-top: 15px;
+}
.gallery-item img {
width: 100% !important;
@@ -14207,6 +14320,38 @@ img[draggable="true"] {
object-fit: cover !important;
display: block !important;
}
+
+/* Viewport Scrollbars - Only for viewport, not PDF */
+@media screen {
+ .brochure-page {
+ overflow-y: auto;
+ max-height: 100vh;
+ }
+
+ .brochure-page::-webkit-scrollbar {
+ width: 8px;
+ }
+
+ .brochure-page::-webkit-scrollbar-track {
+ background: #f1f1f1;
+ border-radius: 4px;
+ }
+
+ .brochure-page::-webkit-scrollbar-thumb {
+ background: #888;
+ border-radius: 4px;
+ }
+
+ .brochure-page::-webkit-scrollbar-thumb:hover {
+ background: #555;
+ }
+
+ /* Hide scrollbars in print/PDF */
+ @media print {
+ .brochure-page {
+ overflow: hidden !important;
+ }
+ }
}
/* ===== END OF STYLES ===== */
diff --git a/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.html b/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.html
index c7923d2..e5d4fd1 100644
--- a/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.html
+++ b/force-app/main/default/lwc/propertyTemplateSelector/propertyTemplateSelector.html
@@ -143,6 +143,30 @@
Bathroom
+
+
+