@ctrliq/quantic-components 1.63.5 → 1.64.0

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.
@@ -10471,6 +10471,7 @@
10471
10471
  gap: var(--quantic-spacing-3);
10472
10472
  margin: 0;
10473
10473
  color: var(--quantic-text-secondary);
10474
+ overflow-wrap: break-word;
10474
10475
  }
10475
10476
 
10476
10477
  [size='md'] .body,
@@ -69091,6 +69092,125 @@
69091
69092
  quanticElement('quantic-toast')
69092
69093
  ], exports.Toast);
69093
69094
 
69095
+ exports.Tooltip.ensureDefined();
69096
+ exports.Truncate = class Truncate extends QuanticElement {
69097
+ constructor() {
69098
+ super(...arguments);
69099
+ this.value = '';
69100
+ this.maxLines = 1;
69101
+ this.placement = TooltipPlacement.Top;
69102
+ this.isTruncated = false;
69103
+ }
69104
+ firstUpdated() {
69105
+ this.observer = new ResizeObserver(() => this.checkTruncation());
69106
+ this.observer.observe(this);
69107
+ this.checkTruncation();
69108
+ }
69109
+ updated(changed) {
69110
+ if (changed.has('maxLines') || changed.has('value')) {
69111
+ this.checkTruncation();
69112
+ }
69113
+ }
69114
+ disconnectedCallback() {
69115
+ super.disconnectedCallback();
69116
+ this.observer?.disconnect();
69117
+ }
69118
+ checkTruncation() {
69119
+ if (!this.textEl)
69120
+ return;
69121
+ const isTruncated = this.maxLines > 1
69122
+ ? this.textEl.scrollHeight > this.textEl.clientHeight
69123
+ : this.textEl.scrollWidth > this.textEl.clientWidth;
69124
+ if (isTruncated !== this.isTruncated) {
69125
+ this.isTruncated = isTruncated;
69126
+ }
69127
+ }
69128
+ render() {
69129
+ const text = x `
69130
+ <div
69131
+ class=${e$3({ text: true, 'text--multiline': this.maxLines > 1 })}
69132
+ style=${o({ '--truncate-max-lines': String(this.maxLines) })}
69133
+ tabindex=${this.isTruncated ? '0' : E}
69134
+ >
69135
+ ${this.value}
69136
+ </div>
69137
+ `;
69138
+ return this.isTruncated
69139
+ ? x `
69140
+ <quantic-tooltip placement=${this.placement}>
69141
+ ${text}
69142
+ <span slot="content">${this.value}</span>
69143
+ </quantic-tooltip>
69144
+ `
69145
+ : text;
69146
+ }
69147
+ };
69148
+ exports.Truncate.meta = {
69149
+ tag: 'quantic-truncate',
69150
+ description: 'Renders text with ellipsis overflow. ' +
69151
+ 'A tooltip revealing the full value appears on hover or keyboard focus when the text is actually truncated.',
69152
+ category: 'display',
69153
+ relatedTo: ['quantic-tooltip'],
69154
+ };
69155
+ exports.Truncate.styles = i$6 `
69156
+ :host {
69157
+ display: block;
69158
+ min-width: 0;
69159
+ }
69160
+
69161
+ quantic-tooltip {
69162
+ display: block;
69163
+ min-width: 0;
69164
+ }
69165
+
69166
+ .text {
69167
+ overflow: hidden;
69168
+ text-overflow: ellipsis;
69169
+ white-space: nowrap;
69170
+ min-width: 0;
69171
+ }
69172
+
69173
+ .text--multiline {
69174
+ display: -webkit-box;
69175
+ -webkit-box-orient: vertical;
69176
+ -webkit-line-clamp: var(--truncate-max-lines);
69177
+ line-clamp: var(--truncate-max-lines);
69178
+ white-space: normal;
69179
+ }
69180
+ `;
69181
+ __decorate([
69182
+ prop({
69183
+ type: 'string',
69184
+ default: '',
69185
+ description: 'Text to display and show in the tooltip when truncated.',
69186
+ })
69187
+ ], exports.Truncate.prototype, "value", void 0);
69188
+ __decorate([
69189
+ prop({
69190
+ type: 'number',
69191
+ attribute: 'max-lines',
69192
+ default: '1',
69193
+ description: 'Maximum number of visible lines before truncating. Defaults to 1 (single-line).',
69194
+ })
69195
+ ], exports.Truncate.prototype, "maxLines", void 0);
69196
+ __decorate([
69197
+ prop({
69198
+ type: 'TooltipPlacement',
69199
+ options: Object.values(TooltipPlacement),
69200
+ default: TooltipPlacement.Top,
69201
+ description: 'Preferred tooltip placement relative to the text.',
69202
+ })
69203
+ ], exports.Truncate.prototype, "placement", void 0);
69204
+ __decorate([
69205
+ e$5('.text')
69206
+ ], exports.Truncate.prototype, "textEl", void 0);
69207
+ __decorate([
69208
+ r$2()
69209
+ ], exports.Truncate.prototype, "isTruncated", void 0);
69210
+ exports.Truncate = __decorate([
69211
+ quanticElement('quantic-truncate')
69212
+ ], exports.Truncate);
69213
+
69094
69214
  exports.AlertType = AlertType;
69095
69215
  exports.BadgeColor = BadgeColor;
69096
69216
  exports.BadgeSize = BadgeSize;
@@ -69147,6 +69267,7 @@
69147
69267
  exports.TextareaSize = TextareaSize;
69148
69268
  exports.ToastType = ToastType;
69149
69269
  exports.ToggleSize = ToggleSize;
69270
+ exports.TooltipPlacement = TooltipPlacement;
69150
69271
  exports.icons = icons;
69151
69272
  exports.quanticElement = quanticElement;
69152
69273
  exports.tableVariantContext = tableVariantContext;