juxscript 1.1.224 → 1.1.225
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.
|
@@ -172,13 +172,10 @@ export declare class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
172
172
|
private _updateStatus;
|
|
173
173
|
private _setDataFrame;
|
|
174
174
|
/**
|
|
175
|
-
*
|
|
176
|
-
*/
|
|
177
|
-
private _appendSettingsButton;
|
|
178
|
-
/**
|
|
179
|
-
* Update the collapsible summary text
|
|
175
|
+
* Update the collapsible summary text and add settings button
|
|
180
176
|
*/
|
|
181
177
|
private _updateSummary;
|
|
178
|
+
private _appendSettingsButton;
|
|
182
179
|
private _detectMalformedData;
|
|
183
180
|
private _showReshapeModal;
|
|
184
181
|
private _cleanupReshapeModal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataframe.d.ts","sourceRoot":"","sources":["dataframe.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dataframe.d.ts","sourceRoot":"","sources":["dataframe.ts"],"names":[],"mappings":"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"}
|
|
@@ -589,66 +589,112 @@ export class DataFrameComponent extends BaseComponent {
|
|
|
589
589
|
const columnDefs = this._df.columns.map(col => ({ key: col, label: col }));
|
|
590
590
|
this._table.columns(columnDefs).rows(this._df.toRows());
|
|
591
591
|
}
|
|
592
|
+
const isMalformed = this._detectMalformedData(this._df);
|
|
592
593
|
// ✅ Show the details element now that data is loaded
|
|
593
594
|
if (this._collapsible && this._detailsElement) {
|
|
594
595
|
this._detailsElement.style.display = '';
|
|
595
|
-
this._updateSummary();
|
|
596
|
-
}
|
|
597
|
-
const isMalformed = this._detectMalformedData(this._df);
|
|
598
|
-
// ✅ Update status with settings button
|
|
599
|
-
if (isMalformed && this._rawFileData) {
|
|
600
|
-
this._updateStatus(`${sourceName} — ${this._df.height} rows × ${this._df.width} cols`, 'warning');
|
|
601
|
-
this._appendSettingsButton('Fix Import Settings', 'warning');
|
|
596
|
+
this._updateSummary(isMalformed);
|
|
602
597
|
}
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
if (this._rawFileData) {
|
|
606
|
-
this.
|
|
598
|
+
// ✅ Update status (for non-collapsible mode)
|
|
599
|
+
if (!this._collapsible) {
|
|
600
|
+
if (isMalformed && this._rawFileData) {
|
|
601
|
+
this._updateStatus(`${sourceName} — ${this._df.height} rows × ${this._df.width} cols`, 'warning');
|
|
602
|
+
this._appendSettingsButton('Fix Import Settings', 'warning');
|
|
603
|
+
}
|
|
604
|
+
else {
|
|
605
|
+
this._updateStatus(`${sourceName} — ${this._df.height} rows × ${this._df.width} cols`, 'success');
|
|
606
|
+
if (this._rawFileData) {
|
|
607
|
+
this._appendSettingsButton('Import Settings', 'ghost');
|
|
608
|
+
}
|
|
607
609
|
}
|
|
608
610
|
}
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
/**
|
|
612
|
-
* Append settings button to status bar
|
|
613
|
-
*/
|
|
614
|
-
_appendSettingsButton(label, variant) {
|
|
615
|
-
requestAnimationFrame(() => {
|
|
611
|
+
else {
|
|
612
|
+
// ✅ For collapsible mode, hide the status bar
|
|
616
613
|
const statusEl = document.getElementById(`${this._id}-status`);
|
|
617
614
|
if (statusEl) {
|
|
618
|
-
|
|
619
|
-
settingsBtn.textContent = label;
|
|
620
|
-
settingsBtn.className = `jux-button jux-button-sm jux-button-${variant}`;
|
|
621
|
-
settingsBtn.style.marginLeft = '0.5rem';
|
|
622
|
-
settingsBtn.addEventListener('click', () => this._showReshapeModal());
|
|
623
|
-
statusEl.appendChild(settingsBtn);
|
|
615
|
+
statusEl.style.display = 'none';
|
|
624
616
|
}
|
|
625
|
-
}
|
|
617
|
+
}
|
|
618
|
+
this._triggerCallback('load', this._df, null, this);
|
|
626
619
|
}
|
|
627
620
|
/**
|
|
628
|
-
* Update the collapsible summary text
|
|
621
|
+
* Update the collapsible summary text and add settings button
|
|
629
622
|
*/
|
|
630
|
-
_updateSummary() {
|
|
623
|
+
_updateSummary(isMalformed) {
|
|
631
624
|
if (!this._collapsible || !this._detailsElement)
|
|
632
625
|
return;
|
|
633
|
-
const
|
|
634
|
-
if (!
|
|
635
|
-
return;
|
|
636
|
-
if (!this._df) {
|
|
637
|
-
// Don't show anything if no data
|
|
626
|
+
const summaryEl = this._detailsElement.querySelector('.jux-dataframe-summary');
|
|
627
|
+
if (!summaryEl)
|
|
638
628
|
return;
|
|
629
|
+
// Get or detect malformed status
|
|
630
|
+
const malformed = isMalformed ?? (this._df ? this._detectMalformedData(this._df) : false);
|
|
631
|
+
// Update text
|
|
632
|
+
const summaryTextEl = summaryEl.querySelector('.jux-dataframe-summary-text');
|
|
633
|
+
if (summaryTextEl) {
|
|
634
|
+
if (!this._df) {
|
|
635
|
+
summaryTextEl.textContent = 'No data loaded';
|
|
636
|
+
}
|
|
637
|
+
else if (this._summaryTemplate) {
|
|
638
|
+
summaryTextEl.textContent = this._summaryTemplate(this._df);
|
|
639
|
+
}
|
|
640
|
+
else {
|
|
641
|
+
const suffix = malformed ? ' ⚠️' : '';
|
|
642
|
+
summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
|
|
643
|
+
}
|
|
639
644
|
}
|
|
640
|
-
if
|
|
641
|
-
|
|
645
|
+
// ✅ Add settings button to summary if we have raw file data
|
|
646
|
+
let settingsBtn = summaryEl.querySelector('.jux-dataframe-summary-settings');
|
|
647
|
+
if (this._rawFileData && this._df) {
|
|
648
|
+
if (!settingsBtn) {
|
|
649
|
+
settingsBtn = document.createElement('button');
|
|
650
|
+
settingsBtn.className = 'jux-dataframe-summary-settings';
|
|
651
|
+
settingsBtn.type = 'button';
|
|
652
|
+
settingsBtn.addEventListener('click', (e) => {
|
|
653
|
+
e.stopPropagation(); // Don't toggle the details
|
|
654
|
+
this._showReshapeModal();
|
|
655
|
+
});
|
|
656
|
+
summaryEl.appendChild(settingsBtn);
|
|
657
|
+
}
|
|
658
|
+
// Update button text/style based on malformed status
|
|
659
|
+
if (malformed) {
|
|
660
|
+
settingsBtn.textContent = '⚙️ Fix Settings';
|
|
661
|
+
settingsBtn.className = 'jux-dataframe-summary-settings jux-dataframe-summary-settings-warning';
|
|
662
|
+
}
|
|
663
|
+
else {
|
|
664
|
+
settingsBtn.textContent = '⚙️ Settings';
|
|
665
|
+
settingsBtn.className = 'jux-dataframe-summary-settings';
|
|
666
|
+
}
|
|
642
667
|
}
|
|
643
|
-
else {
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
|
|
668
|
+
else if (settingsBtn) {
|
|
669
|
+
// Remove settings button if no raw file data
|
|
670
|
+
settingsBtn.remove();
|
|
647
671
|
}
|
|
648
672
|
}
|
|
649
673
|
/* ═══════════════════════════════════════════════════
|
|
650
674
|
* MALFORMED DATA DETECTION
|
|
651
675
|
* ═══════════════════════════════════════════════════ */
|
|
676
|
+
_appendSettingsButton(label, variant) {
|
|
677
|
+
const statusEl = document.getElementById(`${this._id}-status`);
|
|
678
|
+
if (!statusEl)
|
|
679
|
+
return;
|
|
680
|
+
// Remove existing settings button if any
|
|
681
|
+
const existing = statusEl.querySelector('.jux-dataframe-settings-btn');
|
|
682
|
+
if (existing)
|
|
683
|
+
existing.remove();
|
|
684
|
+
const btn = document.createElement('button');
|
|
685
|
+
btn.className = `jux-dataframe-settings-btn jux-dataframe-settings-btn-${variant}`;
|
|
686
|
+
btn.type = 'button';
|
|
687
|
+
btn.textContent = `⚙️ ${label}`;
|
|
688
|
+
btn.style.marginLeft = '8px';
|
|
689
|
+
btn.style.cursor = 'pointer';
|
|
690
|
+
btn.style.fontSize = '0.8rem';
|
|
691
|
+
btn.style.padding = '2px 8px';
|
|
692
|
+
btn.style.borderRadius = 'var(--radius, 4px)';
|
|
693
|
+
btn.style.border = '1px solid hsl(var(--border))';
|
|
694
|
+
btn.style.background = variant === 'warning' ? 'hsl(38 92% 50% / 0.15)' : 'transparent';
|
|
695
|
+
btn.addEventListener('click', () => this._showReshapeModal());
|
|
696
|
+
statusEl.appendChild(btn);
|
|
697
|
+
}
|
|
652
698
|
_detectMalformedData(df) {
|
|
653
699
|
const columns = df.columns;
|
|
654
700
|
const rows = df.toRows();
|
|
@@ -1071,18 +1117,21 @@ export class DataFrameComponent extends BaseComponent {
|
|
|
1071
1117
|
await this._handleFile(files[0]);
|
|
1072
1118
|
});
|
|
1073
1119
|
};
|
|
1120
|
+
const uploadRow = document.createElement('div');
|
|
1121
|
+
uploadRow.className = 'jux-dataframe-upload-row';
|
|
1074
1122
|
const uploadContainer = document.createElement('div');
|
|
1075
1123
|
uploadContainer.className = 'jux-dataframe-upload';
|
|
1076
1124
|
uploadContainer.id = `${this._id}-upload-container`;
|
|
1077
|
-
|
|
1078
|
-
// ✅ Status bar INLINE
|
|
1125
|
+
uploadRow.appendChild(uploadContainer);
|
|
1126
|
+
// ✅ Status bar INLINE in the same row
|
|
1079
1127
|
if (this._showStatus) {
|
|
1080
1128
|
const statusBar = document.createElement('div');
|
|
1081
|
-
statusBar.className = 'jux-dataframe-status jux-dataframe-status-
|
|
1129
|
+
statusBar.className = 'jux-dataframe-status jux-dataframe-status-inline';
|
|
1082
1130
|
statusBar.id = `${this._id}-status`;
|
|
1083
1131
|
statusBar.style.display = 'none'; // Hidden until needed
|
|
1084
|
-
|
|
1132
|
+
uploadRow.appendChild(statusBar);
|
|
1085
1133
|
}
|
|
1134
|
+
uploadArea.appendChild(uploadRow);
|
|
1086
1135
|
if (this._uploadDescription) {
|
|
1087
1136
|
const descEl = document.createElement('div');
|
|
1088
1137
|
descEl.className = 'jux-dataframe-upload-description';
|
|
@@ -1095,7 +1144,7 @@ export class DataFrameComponent extends BaseComponent {
|
|
|
1095
1144
|
}
|
|
1096
1145
|
else {
|
|
1097
1146
|
container.appendChild(wrapper);
|
|
1098
|
-
//
|
|
1147
|
+
// Status bar for non-upload mode
|
|
1099
1148
|
if (this._showStatus) {
|
|
1100
1149
|
const statusBar = document.createElement('div');
|
|
1101
1150
|
statusBar.className = 'jux-dataframe-status jux-dataframe-status-empty';
|
|
@@ -1110,7 +1159,7 @@ export class DataFrameComponent extends BaseComponent {
|
|
|
1110
1159
|
const details = document.createElement('details');
|
|
1111
1160
|
details.className = 'jux-dataframe-details';
|
|
1112
1161
|
details.open = !this._collapsed;
|
|
1113
|
-
details.style.display = 'none'; //
|
|
1162
|
+
details.style.display = 'none'; // Hidden until data loads
|
|
1114
1163
|
this._detailsElement = details;
|
|
1115
1164
|
const summary = document.createElement('summary');
|
|
1116
1165
|
summary.className = 'jux-dataframe-summary';
|
|
@@ -1120,7 +1169,6 @@ export class DataFrameComponent extends BaseComponent {
|
|
|
1120
1169
|
summary.appendChild(chevron);
|
|
1121
1170
|
const textSpan = document.createElement('span');
|
|
1122
1171
|
textSpan.className = 'jux-dataframe-summary-text';
|
|
1123
|
-
// Don't set text - will be set when data loads
|
|
1124
1172
|
summary.appendChild(textSpan);
|
|
1125
1173
|
details.appendChild(summary);
|
|
1126
1174
|
const content = document.createElement('div');
|
|
@@ -710,28 +710,36 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
710
710
|
this._table.columns(columnDefs).rows(this._df.toRows());
|
|
711
711
|
}
|
|
712
712
|
|
|
713
|
+
const isMalformed = this._detectMalformedData(this._df!);
|
|
714
|
+
|
|
713
715
|
// ✅ Show the details element now that data is loaded
|
|
714
716
|
if (this._collapsible && this._detailsElement) {
|
|
715
717
|
this._detailsElement.style.display = '';
|
|
716
|
-
this._updateSummary();
|
|
718
|
+
this._updateSummary(isMalformed);
|
|
717
719
|
}
|
|
718
720
|
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
721
|
+
// ✅ Update status (for non-collapsible mode)
|
|
722
|
+
if (!this._collapsible) {
|
|
723
|
+
if (isMalformed && this._rawFileData) {
|
|
724
|
+
this._updateStatus(
|
|
725
|
+
`${sourceName} — ${this._df!.height} rows × ${this._df!.width} cols`,
|
|
726
|
+
'warning'
|
|
727
|
+
);
|
|
728
|
+
this._appendSettingsButton('Fix Import Settings', 'warning');
|
|
729
|
+
} else {
|
|
730
|
+
this._updateStatus(
|
|
731
|
+
`${sourceName} — ${this._df!.height} rows × ${this._df!.width} cols`,
|
|
732
|
+
'success'
|
|
733
|
+
);
|
|
734
|
+
if (this._rawFileData) {
|
|
735
|
+
this._appendSettingsButton('Import Settings', 'ghost');
|
|
736
|
+
}
|
|
737
|
+
}
|
|
728
738
|
} else {
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
if (this._rawFileData) {
|
|
734
|
-
this._appendSettingsButton('Import Settings', 'ghost');
|
|
739
|
+
// ✅ For collapsible mode, hide the status bar
|
|
740
|
+
const statusEl = document.getElementById(`${this._id}-status`);
|
|
741
|
+
if (statusEl) {
|
|
742
|
+
statusEl.style.display = 'none';
|
|
735
743
|
}
|
|
736
744
|
}
|
|
737
745
|
|
|
@@ -739,42 +747,56 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
739
747
|
}
|
|
740
748
|
|
|
741
749
|
/**
|
|
742
|
-
*
|
|
743
|
-
*/
|
|
744
|
-
private _appendSettingsButton(label: string, variant: 'warning' | 'ghost'): void {
|
|
745
|
-
requestAnimationFrame(() => {
|
|
746
|
-
const statusEl = document.getElementById(`${this._id}-status`);
|
|
747
|
-
if (statusEl) {
|
|
748
|
-
const settingsBtn = document.createElement('button');
|
|
749
|
-
settingsBtn.textContent = label;
|
|
750
|
-
settingsBtn.className = `jux-button jux-button-sm jux-button-${variant}`;
|
|
751
|
-
settingsBtn.style.marginLeft = '0.5rem';
|
|
752
|
-
settingsBtn.addEventListener('click', () => this._showReshapeModal());
|
|
753
|
-
statusEl.appendChild(settingsBtn);
|
|
754
|
-
}
|
|
755
|
-
});
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
/**
|
|
759
|
-
* Update the collapsible summary text
|
|
750
|
+
* Update the collapsible summary text and add settings button
|
|
760
751
|
*/
|
|
761
|
-
private _updateSummary(): void {
|
|
752
|
+
private _updateSummary(isMalformed?: boolean): void {
|
|
762
753
|
if (!this._collapsible || !this._detailsElement) return;
|
|
763
754
|
|
|
764
|
-
const
|
|
765
|
-
if (!
|
|
755
|
+
const summaryEl = this._detailsElement.querySelector('.jux-dataframe-summary');
|
|
756
|
+
if (!summaryEl) return;
|
|
766
757
|
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
758
|
+
// Get or detect malformed status
|
|
759
|
+
const malformed = isMalformed ?? (this._df ? this._detectMalformedData(this._df) : false);
|
|
760
|
+
|
|
761
|
+
// Update text
|
|
762
|
+
const summaryTextEl = summaryEl.querySelector('.jux-dataframe-summary-text');
|
|
763
|
+
if (summaryTextEl) {
|
|
764
|
+
if (!this._df) {
|
|
765
|
+
summaryTextEl.textContent = 'No data loaded';
|
|
766
|
+
} else if (this._summaryTemplate) {
|
|
767
|
+
summaryTextEl.textContent = this._summaryTemplate(this._df);
|
|
768
|
+
} else {
|
|
769
|
+
const suffix = malformed ? ' ⚠️' : '';
|
|
770
|
+
summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
|
|
771
|
+
}
|
|
770
772
|
}
|
|
771
773
|
|
|
772
|
-
if
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
774
|
+
// ✅ Add settings button to summary if we have raw file data
|
|
775
|
+
let settingsBtn = summaryEl.querySelector('.jux-dataframe-summary-settings') as HTMLButtonElement;
|
|
776
|
+
|
|
777
|
+
if (this._rawFileData && this._df) {
|
|
778
|
+
if (!settingsBtn) {
|
|
779
|
+
settingsBtn = document.createElement('button');
|
|
780
|
+
settingsBtn.className = 'jux-dataframe-summary-settings';
|
|
781
|
+
settingsBtn.type = 'button';
|
|
782
|
+
settingsBtn.addEventListener('click', (e) => {
|
|
783
|
+
e.stopPropagation(); // Don't toggle the details
|
|
784
|
+
this._showReshapeModal();
|
|
785
|
+
});
|
|
786
|
+
summaryEl.appendChild(settingsBtn);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
// Update button text/style based on malformed status
|
|
790
|
+
if (malformed) {
|
|
791
|
+
settingsBtn.textContent = '⚙️ Fix Settings';
|
|
792
|
+
settingsBtn.className = 'jux-dataframe-summary-settings jux-dataframe-summary-settings-warning';
|
|
793
|
+
} else {
|
|
794
|
+
settingsBtn.textContent = '⚙️ Settings';
|
|
795
|
+
settingsBtn.className = 'jux-dataframe-summary-settings';
|
|
796
|
+
}
|
|
797
|
+
} else if (settingsBtn) {
|
|
798
|
+
// Remove settings button if no raw file data
|
|
799
|
+
settingsBtn.remove();
|
|
778
800
|
}
|
|
779
801
|
}
|
|
780
802
|
|
|
@@ -782,6 +804,29 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
782
804
|
* MALFORMED DATA DETECTION
|
|
783
805
|
* ═══════════════════════════════════════════════════ */
|
|
784
806
|
|
|
807
|
+
private _appendSettingsButton(label: string, variant: string): void {
|
|
808
|
+
const statusEl = document.getElementById(`${this._id}-status`);
|
|
809
|
+
if (!statusEl) return;
|
|
810
|
+
|
|
811
|
+
// Remove existing settings button if any
|
|
812
|
+
const existing = statusEl.querySelector('.jux-dataframe-settings-btn');
|
|
813
|
+
if (existing) existing.remove();
|
|
814
|
+
|
|
815
|
+
const btn = document.createElement('button');
|
|
816
|
+
btn.className = `jux-dataframe-settings-btn jux-dataframe-settings-btn-${variant}`;
|
|
817
|
+
btn.type = 'button';
|
|
818
|
+
btn.textContent = `⚙️ ${label}`;
|
|
819
|
+
btn.style.marginLeft = '8px';
|
|
820
|
+
btn.style.cursor = 'pointer';
|
|
821
|
+
btn.style.fontSize = '0.8rem';
|
|
822
|
+
btn.style.padding = '2px 8px';
|
|
823
|
+
btn.style.borderRadius = 'var(--radius, 4px)';
|
|
824
|
+
btn.style.border = '1px solid hsl(var(--border))';
|
|
825
|
+
btn.style.background = variant === 'warning' ? 'hsl(38 92% 50% / 0.15)' : 'transparent';
|
|
826
|
+
btn.addEventListener('click', () => this._showReshapeModal());
|
|
827
|
+
statusEl.appendChild(btn);
|
|
828
|
+
}
|
|
829
|
+
|
|
785
830
|
private _detectMalformedData(df: DataFrame): boolean {
|
|
786
831
|
const columns = df.columns;
|
|
787
832
|
const rows = df.toRows();
|
|
@@ -1259,20 +1304,25 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
1259
1304
|
});
|
|
1260
1305
|
};
|
|
1261
1306
|
|
|
1307
|
+
const uploadRow = document.createElement('div');
|
|
1308
|
+
uploadRow.className = 'jux-dataframe-upload-row';
|
|
1309
|
+
|
|
1262
1310
|
const uploadContainer = document.createElement('div');
|
|
1263
1311
|
uploadContainer.className = 'jux-dataframe-upload';
|
|
1264
1312
|
uploadContainer.id = `${this._id}-upload-container`;
|
|
1265
|
-
|
|
1313
|
+
uploadRow.appendChild(uploadContainer);
|
|
1266
1314
|
|
|
1267
|
-
// ✅ Status bar INLINE
|
|
1315
|
+
// ✅ Status bar INLINE in the same row
|
|
1268
1316
|
if (this._showStatus) {
|
|
1269
1317
|
const statusBar = document.createElement('div');
|
|
1270
|
-
statusBar.className = 'jux-dataframe-status jux-dataframe-status-
|
|
1318
|
+
statusBar.className = 'jux-dataframe-status jux-dataframe-status-inline';
|
|
1271
1319
|
statusBar.id = `${this._id}-status`;
|
|
1272
1320
|
statusBar.style.display = 'none'; // Hidden until needed
|
|
1273
|
-
|
|
1321
|
+
uploadRow.appendChild(statusBar);
|
|
1274
1322
|
}
|
|
1275
1323
|
|
|
1324
|
+
uploadArea.appendChild(uploadRow);
|
|
1325
|
+
|
|
1276
1326
|
if (this._uploadDescription) {
|
|
1277
1327
|
const descEl = document.createElement('div');
|
|
1278
1328
|
descEl.className = 'jux-dataframe-upload-description';
|
|
@@ -1286,7 +1336,7 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
1286
1336
|
} else {
|
|
1287
1337
|
container.appendChild(wrapper);
|
|
1288
1338
|
|
|
1289
|
-
//
|
|
1339
|
+
// Status bar for non-upload mode
|
|
1290
1340
|
if (this._showStatus) {
|
|
1291
1341
|
const statusBar = document.createElement('div');
|
|
1292
1342
|
statusBar.className = 'jux-dataframe-status jux-dataframe-status-empty';
|
|
@@ -1303,7 +1353,7 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
1303
1353
|
const details = document.createElement('details');
|
|
1304
1354
|
details.className = 'jux-dataframe-details';
|
|
1305
1355
|
details.open = !this._collapsed;
|
|
1306
|
-
details.style.display = 'none'; //
|
|
1356
|
+
details.style.display = 'none'; // Hidden until data loads
|
|
1307
1357
|
this._detailsElement = details;
|
|
1308
1358
|
|
|
1309
1359
|
const summary = document.createElement('summary');
|
|
@@ -1316,7 +1366,6 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
|
|
|
1316
1366
|
|
|
1317
1367
|
const textSpan = document.createElement('span');
|
|
1318
1368
|
textSpan.className = 'jux-dataframe-summary-text';
|
|
1319
|
-
// Don't set text - will be set when data loads
|
|
1320
1369
|
summary.appendChild(textSpan);
|
|
1321
1370
|
|
|
1322
1371
|
details.appendChild(summary);
|
package/lib/styles/shadcn.css
CHANGED
|
@@ -916,6 +916,36 @@ code {
|
|
|
916
916
|
flex: 1;
|
|
917
917
|
}
|
|
918
918
|
|
|
919
|
+
/* ✅ Settings button in summary */
|
|
920
|
+
.jux-dataframe-summary-settings {
|
|
921
|
+
padding: 0.25rem 0.5rem;
|
|
922
|
+
font-size: 0.75rem;
|
|
923
|
+
font-weight: 500;
|
|
924
|
+
border: 1px solid hsl(var(--border));
|
|
925
|
+
border-radius: calc(var(--radius) - 2px);
|
|
926
|
+
background: hsl(var(--background));
|
|
927
|
+
color: hsl(var(--muted-foreground));
|
|
928
|
+
cursor: pointer;
|
|
929
|
+
transition: all 0.15s;
|
|
930
|
+
margin-left: auto;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
.jux-dataframe-summary-settings:hover {
|
|
934
|
+
background: hsl(var(--accent));
|
|
935
|
+
color: hsl(var(--foreground));
|
|
936
|
+
border-color: hsl(var(--muted-foreground) / 0.3);
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
.jux-dataframe-summary-settings-warning {
|
|
940
|
+
background: hsl(var(--warning) / 0.1);
|
|
941
|
+
border-color: hsl(var(--warning) / 0.3);
|
|
942
|
+
color: hsl(var(--warning-foreground));
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
.jux-dataframe-summary-settings-warning:hover {
|
|
946
|
+
background: hsl(var(--warning) / 0.2);
|
|
947
|
+
}
|
|
948
|
+
|
|
919
949
|
.jux-dataframe-details-content {
|
|
920
950
|
padding: 0;
|
|
921
951
|
}
|