@design.estate/dees-catalog 3.67.0 → 3.68.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.
@@ -145176,11 +145176,17 @@ var _DeesFormSubmit = class _DeesFormSubmit extends (_a25 = DeesElement, _disabl
145176
145176
  .text=${this.text}
145177
145177
  ?disabled=${this.disabled}
145178
145178
  @clicked=${this.submit}
145179
- >
145180
- <slot></slot>
145181
- </dees-button>
145179
+ ></dees-button>
145182
145180
  `;
145183
145181
  }
145182
+ async firstUpdated() {
145183
+ if (!this.text) {
145184
+ const slotText = this.textContent?.trim();
145185
+ if (slotText) {
145186
+ this.text = slotText;
145187
+ }
145188
+ }
145189
+ }
145184
145190
  async submit() {
145185
145191
  if (this.disabled) {
145186
145192
  return;
@@ -165272,7 +165278,7 @@ var _DeesTable = class _DeesTable extends (_a42 = DeesElement, _heading1_dec = [
165272
165278
  </th>
165273
165279
  ` : b2``}
165274
165280
  ${effectiveColumns.filter((c11) => !c11.hidden).map((col) => {
165275
- const isSortable = !!col.sortable;
165281
+ const isSortable = col.sortable !== false;
165276
165282
  const ariaSort = this.getAriaSort(col);
165277
165283
  return b2`
165278
165284
  <th
@@ -165500,10 +165506,16 @@ var _DeesTable = class _DeesTable extends (_a42 = DeesElement, _heading1_dec = [
165500
165506
  headerHeight += realHeadRows[r11].getBoundingClientRect().height;
165501
165507
  }
165502
165508
  }
165503
- const shouldBeActive = tableRect.top < stick.top && tableRect.bottom > stick.top + Math.min(headerHeight, 1);
165509
+ const distance = tableRect.bottom - stick.top;
165510
+ const shouldBeActive = tableRect.top < stick.top && distance > 0;
165504
165511
  if (shouldBeActive !== this.__floatingActive) {
165505
165512
  this.__floatingActive = shouldBeActive;
165506
165513
  fh.classList.toggle("active", shouldBeActive);
165514
+ if (!shouldBeActive) {
165515
+ fh.style.height = "";
165516
+ const ft = this.__floatingTableEl;
165517
+ if (ft) ft.style.transform = "";
165518
+ }
165507
165519
  if (shouldBeActive) {
165508
165520
  this.updateComplete.then(() => this.__syncFloatingHeader());
165509
165521
  return;
@@ -165532,8 +165544,12 @@ var _DeesTable = class _DeesTable extends (_a42 = DeesElement, _heading1_dec = [
165532
165544
  fh.style.top = `${stick.top}px`;
165533
165545
  fh.style.left = `${clipLeft}px`;
165534
165546
  fh.style.width = `${clipWidth}px`;
165547
+ const visibleHeight = Math.min(headerHeight, distance);
165548
+ const exitOffset = headerHeight - visibleHeight;
165549
+ fh.style.height = `${visibleHeight}px`;
165535
165550
  floatTable.style.width = `${tableRect.width}px`;
165536
165551
  floatTable.style.marginLeft = `${tableRect.left - clipLeft}px`;
165552
+ floatTable.style.transform = exitOffset > 0 ? `translateY(-${exitOffset}px)` : "";
165537
165553
  }
165538
165554
  async disconnectedCallback() {
165539
165555
  super.disconnectedCallback();
@@ -165845,7 +165861,7 @@ var _DeesTable = class _DeesTable extends (_a42 = DeesElement, _heading1_dec = [
165845
165861
  const key2 = String(col.key);
165846
165862
  const existing = this.getSortDescriptor(key2);
165847
165863
  const cascadeLen = this.sortBy.length;
165848
- const sortableColumnCount = effectiveColumns.filter((c11) => !!c11.sortable).length;
165864
+ const sortableColumnCount = effectiveColumns.filter((c11) => c11.sortable !== false).length;
165849
165865
  const maxSlot = Math.min(
165850
165866
  Math.max(cascadeLen + (existing ? 0 : 1), 1),
165851
165867
  Math.max(sortableColumnCount, 1)
@@ -165939,6 +165955,16 @@ var _DeesTable = class _DeesTable extends (_a42 = DeesElement, _heading1_dec = [
165939
165955
  }, "action")
165940
165956
  });
165941
165957
  }
165958
+ items.push({ divider: true });
165959
+ items.push({
165960
+ name: this.showColumnFilters ? "Hide column filters" : "Show column filters",
165961
+ iconName: this.showColumnFilters ? "lucide:filterX" : "lucide:filter",
165962
+ action: /* @__PURE__ */ __name(async () => {
165963
+ this.showColumnFilters = !this.showColumnFilters;
165964
+ this.requestUpdate();
165965
+ return null;
165966
+ }, "action")
165967
+ });
165942
165968
  return items;
165943
165969
  }
165944
165970
  // ─── sort: indicator + ARIA ──────────────────────────────────────────
@@ -193928,12 +193954,35 @@ var demoFunc57 = /* @__PURE__ */ __name(() => b2`
193928
193954
  {
193929
193955
  name: "Analytics",
193930
193956
  iconName: "lucide:lineChart",
193931
- element: DemoViewAnalytics
193957
+ element: DemoViewAnalytics,
193958
+ subViews: [
193959
+ {
193960
+ name: "Overview",
193961
+ iconName: "lucide:activity",
193962
+ element: DemoViewAnalytics
193963
+ },
193964
+ {
193965
+ name: "Reports",
193966
+ iconName: "lucide:fileText",
193967
+ element: DemoViewDashboard
193968
+ }
193969
+ ]
193932
193970
  },
193933
193971
  {
193934
193972
  name: "Settings",
193935
193973
  iconName: "lucide:settings",
193936
- element: DemoViewSettings
193974
+ subViews: [
193975
+ {
193976
+ name: "Profile",
193977
+ iconName: "lucide:user",
193978
+ element: DemoViewSettings
193979
+ },
193980
+ {
193981
+ name: "Billing",
193982
+ iconName: "lucide:creditCard",
193983
+ element: DemoViewSettings
193984
+ }
193985
+ ]
193937
193986
  }
193938
193987
  ]}
193939
193988
  @logout=${() => {
@@ -193978,10 +194027,12 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a97 = DeesElement, _
193978
194027
  <div class="viewTabs-container">
193979
194028
  <div class="section-label">Navigation</div>
193980
194029
  <div class="viewTabs">
193981
- ${this.viewTabs.map(
193982
- (view) => b2`
194030
+ ${this.viewTabs.map((view) => {
194031
+ const hasSubs = !!view.subViews?.length;
194032
+ const groupActive = hasSubs && this.isGroupActive(view);
194033
+ return b2`
193983
194034
  <div
193984
- class="viewTab ${this.selectedView === view ? "selected" : ""}"
194035
+ class="viewTab ${this.selectedView === view ? "selected" : ""} ${hasSubs ? "hasSubs" : ""} ${groupActive ? "groupActive" : ""}"
193985
194036
  @click=${() => this.loadView(view)}
193986
194037
  >
193987
194038
  ${view.iconName ? b2`
@@ -193990,9 +194041,34 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a97 = DeesElement, _
193990
194041
  <dees-icon .icon="${"lucide:file"}"></dees-icon>
193991
194042
  `}
193992
194043
  <span>${view.name}</span>
194044
+ ${hasSubs ? b2`
194045
+ <dees-icon class="chevron" .icon="${"lucide:chevronDown"}"></dees-icon>
194046
+ ` : ""}
193993
194047
  </div>
193994
- `
193995
- )}
194048
+ ${hasSubs && groupActive ? b2`
194049
+ <div class="subViews">
194050
+ ${view.subViews.map(
194051
+ (sub2) => b2`
194052
+ <div
194053
+ class="viewTab sub ${this.selectedView === sub2 ? "selected" : ""}"
194054
+ @click=${(e11) => {
194055
+ e11.stopPropagation();
194056
+ this.loadView(sub2);
194057
+ }}
194058
+ >
194059
+ ${sub2.iconName ? b2`
194060
+ <dees-icon .icon="${sub2.iconName.includes(":") ? sub2.iconName : `lucide:${sub2.iconName}`}"></dees-icon>
194061
+ ` : b2`
194062
+ <dees-icon .icon="${"lucide:dot"}"></dees-icon>
194063
+ `}
194064
+ <span>${sub2.name}</span>
194065
+ </div>
194066
+ `
194067
+ )}
194068
+ </div>
194069
+ ` : ""}
194070
+ `;
194071
+ })}
193996
194072
  </div>
193997
194073
  </div>
193998
194074
  <div class="appActions">
@@ -194160,7 +194236,19 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a97 = DeesElement, _
194160
194236
  this.currentTerminal = null;
194161
194237
  }
194162
194238
  }
194239
+ isGroupActive(view) {
194240
+ if (this.selectedView === view) return true;
194241
+ return view.subViews?.some((sv) => sv === this.selectedView) ?? false;
194242
+ }
194163
194243
  async loadView(viewArg) {
194244
+ if (!viewArg.element && viewArg.subViews?.length) {
194245
+ const firstNavigable = viewArg.subViews.find((sv) => sv.element);
194246
+ if (firstNavigable) {
194247
+ return this.loadView(firstNavigable);
194248
+ }
194249
+ return;
194250
+ }
194251
+ if (!viewArg.element) return;
194164
194252
  const appcontent = this.shadowRoot.querySelector(".appcontent");
194165
194253
  const view = new viewArg.element();
194166
194254
  if (this.currentView) {
@@ -194372,6 +194460,55 @@ __publicField(_DeesSimpleAppDash, "styles", [
194372
194460
  white-space: nowrap;
194373
194461
  }
194374
194462
 
194463
+ .viewTab .chevron {
194464
+ flex: 0 0 auto;
194465
+ font-size: 14px;
194466
+ opacity: 0.5;
194467
+ transform: rotate(-90deg);
194468
+ transition: transform 0.2s ease, opacity 0.15s ease;
194469
+ }
194470
+
194471
+ .viewTab.hasSubs:hover .chevron {
194472
+ opacity: 0.75;
194473
+ }
194474
+
194475
+ .viewTab.hasSubs.groupActive .chevron {
194476
+ transform: rotate(0deg);
194477
+ opacity: 0.9;
194478
+ }
194479
+
194480
+ .subViews {
194481
+ display: flex;
194482
+ flex-direction: column;
194483
+ gap: 2px;
194484
+ margin: 2px 0 4px 12px;
194485
+ padding-left: 12px;
194486
+ position: relative;
194487
+ }
194488
+
194489
+ .subViews::before {
194490
+ content: '';
194491
+ position: absolute;
194492
+ left: 0;
194493
+ top: 4px;
194494
+ bottom: 4px;
194495
+ width: 1px;
194496
+ background: var(--dees-color-border-default);
194497
+ }
194498
+
194499
+ .viewTab.sub {
194500
+ padding: 8px 12px;
194501
+ font-size: 12px;
194502
+ }
194503
+
194504
+ .viewTab.sub dees-icon {
194505
+ font-size: 14px;
194506
+ }
194507
+
194508
+ .viewTab.sub.selected::before {
194509
+ left: -12px;
194510
+ }
194511
+
194375
194512
  .appActions {
194376
194513
  padding: 12px 8px;
194377
194514
  border-top: 1px solid var(--dees-color-border-default);
@@ -200295,7 +200432,7 @@ init_group_runtime();
200295
200432
  // ts_web/00_commitinfo_data.ts
200296
200433
  var commitinfo = {
200297
200434
  name: "@design.estate/dees-catalog",
200298
- version: "3.67.0",
200435
+ version: "3.68.0",
200299
200436
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
200300
200437
  };
200301
200438
  export {
@@ -202268,4 +202405,4 @@ ibantools/jsnext/ibantools.js:
202268
202405
  * @preferred
202269
202406
  *)
202270
202407
  */
202271
- //# sourceMappingURL=bundle-1775595907478.js.map
202408
+ //# sourceMappingURL=bundle-1775635568867.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.67.0',
6
+ version: '3.68.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9