@conduction/nextcloud-vue 1.0.0-beta.228 → 1.0.0-beta.229

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.
@@ -2570,6 +2570,48 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
2570
2570
  font-size: 0.85em;
2571
2571
  color: var(--color-text-maxcontrast);
2572
2572
  }
2573
+ /*
2574
+ * NcSelect's dropdown, when it is inside a dialog.
2575
+ *
2576
+ * `NcSelect.appendToBody` defaults to TRUE, so vue-select teleports its menu
2577
+ * out of the dialog and makes it a `<body>` sibling — leaving the dialog's
2578
+ * stacking context entirely — and `@nextcloud/vue` gives that menu
2579
+ * `--vs-dropdown-z-index: 9999`.
2580
+ *
2581
+ * 9999 clears a STOCK NcModal mask, which sits at 9998. It does not clear the
2582
+ * baseline directly above: this library raises dialog masks to 10005 (the
2583
+ * unscoped `.modal-mask.dialog__modal` rule shipped from CnEditDataModal, and
2584
+ * 10010 for `.cn-dialog--nested`). So the dialog paints over its own dropdown.
2585
+ * The options render, they are visible, and every click on them is swallowed by
2586
+ * the mask — a real user simply cannot pick an option. Measured on pipelinq
2587
+ * (#757), whose built bundle carries `--vs-dropdown-z-index: 1000` / `9999`
2588
+ * against a `.modal-mask.dialog__modal { z-index: 10005 !important }`.
2589
+ *
2590
+ * This is ours to fix, not upstream's: at @nextcloud/vue's own 9998 the
2591
+ * combination works, and it is THIS library that moved the mask above the
2592
+ * dropdown.
2593
+ *
2594
+ * `@nextcloud/vue` ships exactly this override for the timezone select inside
2595
+ * NcDateTimePicker — `.vs__dropdown-menu--floating { z-index: 100001 !important }`
2596
+ * — so this adopts the same selector and the same value rather than inventing a
2597
+ * layer. Do NOT rely on that upstream rule: it lives in NcDateTimePicker's own
2598
+ * stylesheet chunk, so an app gets it only if it happens to load that
2599
+ * component's CSS. pipelinq's bundle does not, which is why the bug is real
2600
+ * there and invisible in a harness that does. That accident is exactly why the
2601
+ * rule belongs here, where every consumer of this library gets it.
2602
+ *
2603
+ * `!important` for the same reason upstream uses it: the value it must beat is
2604
+ * `.vs__dropdown-menu`'s own single-class rule, so without it the winner comes
2605
+ * down to stylesheet order — and a lazily-imported chunk can load after this
2606
+ * file. Nothing writes an inline z-index on this element, so it overrides no one.
2607
+ *
2608
+ * Scoped to the `--floating` variant deliberately: that is the appended-to-body
2609
+ * case. A dropdown left in the DOM stacks correctly inside its own dialog and
2610
+ * must not be lifted over unrelated chrome.
2611
+ */
2612
+ .vs__dropdown-menu--floating {
2613
+ z-index: 100001 !important;
2614
+ }
2573
2615
 
2574
2616
 
2575
2617
  .cn-label-widget[data-v-9c9d617c] {
@@ -2570,6 +2570,48 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
2570
2570
  font-size: 0.85em;
2571
2571
  color: var(--color-text-maxcontrast);
2572
2572
  }
2573
+ /*
2574
+ * NcSelect's dropdown, when it is inside a dialog.
2575
+ *
2576
+ * `NcSelect.appendToBody` defaults to TRUE, so vue-select teleports its menu
2577
+ * out of the dialog and makes it a `<body>` sibling — leaving the dialog's
2578
+ * stacking context entirely — and `@nextcloud/vue` gives that menu
2579
+ * `--vs-dropdown-z-index: 9999`.
2580
+ *
2581
+ * 9999 clears a STOCK NcModal mask, which sits at 9998. It does not clear the
2582
+ * baseline directly above: this library raises dialog masks to 10005 (the
2583
+ * unscoped `.modal-mask.dialog__modal` rule shipped from CnEditDataModal, and
2584
+ * 10010 for `.cn-dialog--nested`). So the dialog paints over its own dropdown.
2585
+ * The options render, they are visible, and every click on them is swallowed by
2586
+ * the mask — a real user simply cannot pick an option. Measured on pipelinq
2587
+ * (#757), whose built bundle carries `--vs-dropdown-z-index: 1000` / `9999`
2588
+ * against a `.modal-mask.dialog__modal { z-index: 10005 !important }`.
2589
+ *
2590
+ * This is ours to fix, not upstream's: at @nextcloud/vue's own 9998 the
2591
+ * combination works, and it is THIS library that moved the mask above the
2592
+ * dropdown.
2593
+ *
2594
+ * `@nextcloud/vue` ships exactly this override for the timezone select inside
2595
+ * NcDateTimePicker — `.vs__dropdown-menu--floating { z-index: 100001 !important }`
2596
+ * — so this adopts the same selector and the same value rather than inventing a
2597
+ * layer. Do NOT rely on that upstream rule: it lives in NcDateTimePicker's own
2598
+ * stylesheet chunk, so an app gets it only if it happens to load that
2599
+ * component's CSS. pipelinq's bundle does not, which is why the bug is real
2600
+ * there and invisible in a harness that does. That accident is exactly why the
2601
+ * rule belongs here, where every consumer of this library gets it.
2602
+ *
2603
+ * `!important` for the same reason upstream uses it: the value it must beat is
2604
+ * `.vs__dropdown-menu`'s own single-class rule, so without it the winner comes
2605
+ * down to stylesheet order — and a lazily-imported chunk can load after this
2606
+ * file. Nothing writes an inline z-index on this element, so it overrides no one.
2607
+ *
2608
+ * Scoped to the `--floating` variant deliberately: that is the appended-to-body
2609
+ * case. A dropdown left in the DOM stacks correctly inside its own dialog and
2610
+ * must not be lifted over unrelated chrome.
2611
+ */
2612
+ .vs__dropdown-menu--floating {
2613
+ z-index: 100001 !important;
2614
+ }
2573
2615
 
2574
2616
 
2575
2617
  .cn-label-widget[data-v-9c9d617c] {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conduction/nextcloud-vue",
3
- "version": "1.0.0-beta.228",
3
+ "version": "1.0.0-beta.229",
4
4
  "description": "Shared Vue component library for Conduction Nextcloud apps — complements @nextcloud/vue with higher-level components, OpenRegister integration, and NL Design System support",
5
5
  "license": "EUPL-1.2",
6
6
  "author": "Conduction B.V. <info@conduction.nl>",
@@ -152,3 +152,46 @@
152
152
  font-size: 0.85em;
153
153
  color: var(--color-text-maxcontrast);
154
154
  }
155
+
156
+ /*
157
+ * NcSelect's dropdown, when it is inside a dialog.
158
+ *
159
+ * `NcSelect.appendToBody` defaults to TRUE, so vue-select teleports its menu
160
+ * out of the dialog and makes it a `<body>` sibling — leaving the dialog's
161
+ * stacking context entirely — and `@nextcloud/vue` gives that menu
162
+ * `--vs-dropdown-z-index: 9999`.
163
+ *
164
+ * 9999 clears a STOCK NcModal mask, which sits at 9998. It does not clear the
165
+ * baseline directly above: this library raises dialog masks to 10005 (the
166
+ * unscoped `.modal-mask.dialog__modal` rule shipped from CnEditDataModal, and
167
+ * 10010 for `.cn-dialog--nested`). So the dialog paints over its own dropdown.
168
+ * The options render, they are visible, and every click on them is swallowed by
169
+ * the mask — a real user simply cannot pick an option. Measured on pipelinq
170
+ * (#757), whose built bundle carries `--vs-dropdown-z-index: 1000` / `9999`
171
+ * against a `.modal-mask.dialog__modal { z-index: 10005 !important }`.
172
+ *
173
+ * This is ours to fix, not upstream's: at @nextcloud/vue's own 9998 the
174
+ * combination works, and it is THIS library that moved the mask above the
175
+ * dropdown.
176
+ *
177
+ * `@nextcloud/vue` ships exactly this override for the timezone select inside
178
+ * NcDateTimePicker — `.vs__dropdown-menu--floating { z-index: 100001 !important }`
179
+ * — so this adopts the same selector and the same value rather than inventing a
180
+ * layer. Do NOT rely on that upstream rule: it lives in NcDateTimePicker's own
181
+ * stylesheet chunk, so an app gets it only if it happens to load that
182
+ * component's CSS. pipelinq's bundle does not, which is why the bug is real
183
+ * there and invisible in a harness that does. That accident is exactly why the
184
+ * rule belongs here, where every consumer of this library gets it.
185
+ *
186
+ * `!important` for the same reason upstream uses it: the value it must beat is
187
+ * `.vs__dropdown-menu`'s own single-class rule, so without it the winner comes
188
+ * down to stylesheet order — and a lazily-imported chunk can load after this
189
+ * file. Nothing writes an inline z-index on this element, so it overrides no one.
190
+ *
191
+ * Scoped to the `--floating` variant deliberately: that is the appended-to-body
192
+ * case. A dropdown left in the DOM stacks correctly inside its own dialog and
193
+ * must not be lifted over unrelated chrome.
194
+ */
195
+ .vs__dropdown-menu--floating {
196
+ z-index: 100001 !important;
197
+ }