@innertia-solutions/innertia-nuxt 0.1.37 → 0.1.39
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.
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,14 @@ All notable changes to `@innertia-solutions/innertia-nuxt` are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- `Forms.Select`: el dropdown ahora usa `dropdownScope:'window'` (Preline lo teletransporta al `<body>` y lo posiciona con floating-ui). Deja de recortarse dentro de contenedores con scroll —modales, paneles— y flota por encima (`z-[10000]`). Se expone `window.FloatingUIDOM` en el plugin de Preline y se agrega `@floating-ui/dom` como dependencia.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- `Kanban.Standard`: en modo `bordered=false`, el `ring` de highlight al arrastrar sobre una columna se recortaba por arriba (el contenedor `overflow-x-auto` sin padding clippeaba los 2px del ring). Se agrega `p-1` al scroll container en ese modo.
|
|
14
|
+
|
|
7
15
|
### BREAKING CHANGES
|
|
8
16
|
|
|
9
17
|
#### apps → contexts rename
|
|
@@ -111,9 +111,10 @@ const handleChange = (e: Event) => {
|
|
|
111
111
|
@change="handleChange"
|
|
112
112
|
data-hs-select='{
|
|
113
113
|
"placeholder": "Seleccionar...",
|
|
114
|
+
"dropdownScope": "window",
|
|
114
115
|
"toggleTag": "<button type=\"button\" aria-expanded=\"false\"></button>",
|
|
115
|
-
"toggleClasses": "innertia-field hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50
|
|
116
|
-
"dropdownClasses": "
|
|
116
|
+
"toggleClasses": "innertia-field hs-select-disabled:pointer-events-none hs-select-disabled:opacity-50 relative pe-9 flex gap-x-2 items-center text-nowrap cursor-pointer text-start",
|
|
117
|
+
"dropdownClasses": "z-[10000] w-full max-h-72 py-1 bg-[color:var(--field-dropdown-bg)] border border-[color:var(--field-border)] rounded-control overflow-hidden overflow-y-auto shadow-lg",
|
|
117
118
|
"optionClasses": "py-2 px-3 w-full text-sm text-foreground cursor-pointer bg-transparent hover:bg-muted-hover focus:outline-hidden focus:bg-muted-hover",
|
|
118
119
|
"optionTemplate": "<div class=\"flex justify-between items-center w-full\"><span data-title></span><span class=\"hidden hs-selected:block\"><svg class=\"shrink-0 size-3.5 text-blue-600 dark:text-blue-500\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg></span></div>"
|
|
119
120
|
}'
|
|
@@ -141,24 +142,10 @@ const handleChange = (e: Event) => {
|
|
|
141
142
|
|
|
142
143
|
<style>
|
|
143
144
|
/*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* del componente Vue (button generado, no del template).
|
|
145
|
+
* Con `dropdownScope:'window'` Preline teletransporta el panel del dropdown al
|
|
146
|
+
* <body> y lo posiciona con floating-ui (fixed + offset). Así escapa el overflow
|
|
147
|
+
* de cualquier contenedor con scroll (modales, paneles, etc.) y flota por encima.
|
|
148
|
+
* El trigger conserva sus bordes/esquinas completos porque el panel ya no se
|
|
149
|
+
* "fusiona" con él — flota separado.
|
|
150
150
|
*/
|
|
151
|
-
.hs-select [aria-expanded="true"].innertia-field {
|
|
152
|
-
border-bottom-left-radius: 0 !important;
|
|
153
|
-
border-bottom-right-radius: 0 !important;
|
|
154
|
-
border-bottom-color: transparent !important;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/* Pegar el dropdown al trigger eliminando cualquier offset/margen que
|
|
158
|
-
* Preline pueda inyectar. Target amplio: cualquier div con la clase
|
|
159
|
-
* `rounded-b-control` dentro del wrapper `.hs-select`. */
|
|
160
|
-
.hs-select div[class*="rounded-b-control"] {
|
|
161
|
-
top: 100% !important;
|
|
162
|
-
margin-top: -1px !important;
|
|
163
|
-
}
|
|
164
151
|
</style>
|
|
@@ -695,7 +695,7 @@ defineExpose({ reload: fetchAll, rows })
|
|
|
695
695
|
]"
|
|
696
696
|
>
|
|
697
697
|
<div
|
|
698
|
-
:class="['overflow-x-auto', bordered ? 'p-3' : '']"
|
|
698
|
+
:class="['overflow-x-auto', bordered ? 'p-3' : 'p-1']"
|
|
699
699
|
:style="sizeStyle"
|
|
700
700
|
>
|
|
701
701
|
<div v-if="loading && !rows.length" class="flex items-center justify-center py-16 gap-2 text-muted-foreground">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@innertia-solutions/innertia-nuxt",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.39",
|
|
4
4
|
"description": "Innertia Solutions — Nuxt layer unificada: core, auth, multitenancy, theme y app contexts",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nuxt",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"vue": ">=3.5.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
+
"@floating-ui/dom": "^1.7.6",
|
|
34
35
|
"@nuxtjs/seo": "^3.4.0",
|
|
35
36
|
"@pinia/nuxt": "^0.11.3",
|
|
36
37
|
"@tabler/icons-vue": "^3.44.0",
|
|
@@ -3,6 +3,7 @@ declare global {
|
|
|
3
3
|
HSStaticMethods?: { autoInit?: () => void }
|
|
4
4
|
HSSelect?: new (el: HTMLElement) => { destroy?: () => void }
|
|
5
5
|
HSThemeAppearance?: { init?: () => void }
|
|
6
|
+
FloatingUIDOM?: unknown
|
|
6
7
|
}
|
|
7
8
|
}
|
|
8
9
|
|
|
@@ -10,6 +11,13 @@ export default defineNuxtPlugin(async () => {
|
|
|
10
11
|
if (!process.client) return
|
|
11
12
|
|
|
12
13
|
try {
|
|
14
|
+
// Preline 3 lee `window.FloatingUIDOM` (global, no import) para posicionar
|
|
15
|
+
// dropdowns con `dropdownScope:'window'` (los teletransporta al body y flota
|
|
16
|
+
// con floating-ui, escapando cualquier overflow — ej. selects dentro de modales).
|
|
17
|
+
if (!window.FloatingUIDOM) {
|
|
18
|
+
window.FloatingUIDOM = await import('@floating-ui/dom')
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
await import('preline')
|
|
14
22
|
|
|
15
23
|
const initPreline = () => {
|