@wippy-fe/theme 0.0.60 → 0.0.62
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 +13 -0
- package/contracts/theme-contract.json +1 -1
- package/effective-contract.json +6 -6
- package/package.json +2 -1
- package/primevue-plugin.ts +25 -10
- package/tailwind-contract.json +5 -5
- package/tokens.json +6 -6
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.0.61 (2026-10-05)
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Anchored PrimeVue dropdowns inside web components can open above their field when there is insufficient space below.
|
|
8
|
+
- Dropdowns can flip horizontally and shrink to the available viewport width, keeping long options and search fields visible on narrow screens.
|
|
9
|
+
- Filtering preserves the placement and width rules when PrimeVue updates the dropdown's inline styles.
|
|
10
|
+
|
|
11
|
+
### Compatibility
|
|
12
|
+
|
|
13
|
+
- CSS anchor placement is enabled only when the browser supports the required placement, flip and sizing features. Other browsers keep the existing placement path.
|
package/effective-contract.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"packageVersion": "0.0.
|
|
4
|
-
"implementationRelease": "1.0.
|
|
3
|
+
"packageVersion": "0.0.62",
|
|
4
|
+
"implementationRelease": "1.0.62",
|
|
5
5
|
"compatibility": {
|
|
6
|
-
"themePackageVersion": "0.0.
|
|
6
|
+
"themePackageVersion": "0.0.62",
|
|
7
7
|
"manifestSchemaVersion": "1.0.0",
|
|
8
|
-
"implementationRelease": "1.0.
|
|
8
|
+
"implementationRelease": "1.0.62",
|
|
9
9
|
"tailwindVersion": "3.4.19",
|
|
10
10
|
"tailwindcssPrimeuiVersion": "0.6.1",
|
|
11
11
|
"primevueVersion": "4.5.5",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"referencePrimeuixThemesVersion": "2.0.3",
|
|
15
15
|
"referencePrimeuixThemesIntegrity": "sha512-3fS1883mtCWhgUgNf/feiaaDSOND4EBIOu9tZnzJlJ8QtYyL6eFLcA6V3ymCWqLVXQ1+lTVEZv1gl47FIdXReg==",
|
|
16
16
|
"sourceHashes": {
|
|
17
|
-
"themeContract": "
|
|
17
|
+
"themeContract": "12b153ce7e8c50f1ed3a9acacf7cca18a1879eb0263252ce82adde4c54cba724",
|
|
18
18
|
"runtimeAcceptanceRequirements": "6bac23fb52a87b18b1661b5ac73747a972e07f40af6961571b5f4dd831d4cb85",
|
|
19
19
|
"themeConfig": "9b484e9da76871d11edda5a555b0d0443a262acd80fb42c74c4fd78e2b23b5ae",
|
|
20
20
|
"tailwindConfig": "f1e862105254f082a78823ea685e3c6dc3ff5822516b7434a1e1141c976adc1d",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"acceptance": {
|
|
36
36
|
"status": "unverified",
|
|
37
37
|
"evidenceSchemaVersion": "1.0.0",
|
|
38
|
-
"inputHash": "
|
|
38
|
+
"inputHash": "322274f50fc263f822a296425594e91841dc2a0826ddd7e733066d29cff6c41a",
|
|
39
39
|
"requirements": "contracts/runtime-acceptance-requirements.json",
|
|
40
40
|
"gate": "node scripts/build-theme-contract.mjs --check --acceptance --evidence <path> --evidence-sha256 <hash>"
|
|
41
41
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wippy-fe/theme",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.62",
|
|
4
4
|
"description": "Theme variables, shared Tailwind config, and PrimeVue styling for Wippy web components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "theme-config.css",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"primevue-plugin.ts",
|
|
25
25
|
"primevue/",
|
|
26
26
|
"THEMING.md",
|
|
27
|
+
"CHANGELOG.md",
|
|
27
28
|
"README.md"
|
|
28
29
|
],
|
|
29
30
|
"dependencies": {
|
package/primevue-plugin.ts
CHANGED
|
@@ -47,9 +47,10 @@ function supportsTopLayer(): boolean {
|
|
|
47
47
|
* SELF-ANCHORED overlay families whose PrimeVue panel aligns to the component root,
|
|
48
48
|
* which is the Portal placeholder's DOM parent (`Select`, `MultiSelect`, `TreeSelect`,
|
|
49
49
|
* `CascadeSelect` — live-verified on `Select`; the others share the same align-to-root
|
|
50
|
-
* shape. `AutoComplete` is excluded — see {@link SELF_ANCHORED_OVERLAY}).
|
|
51
|
-
*
|
|
52
|
-
* align to an arbitrary caller-supplied
|
|
50
|
+
* shape. `AutoComplete` is excluded — see {@link SELF_ANCHORED_OVERLAY}). S2 requires
|
|
51
|
+
* the anchor, placement, fallback and sizing features checked below. Engines that lack
|
|
52
|
+
* a required feature, and menus / popovers that align to an arbitrary caller-supplied
|
|
53
|
+
* target, keep S1's pinned-layer positioning. S2 runs
|
|
53
54
|
* only behind this feature gate, and `applyAnchor` restores PrimeVue's own inline positioning
|
|
54
55
|
* verbatim (S1) if a promoted overlay can't enter the top layer — so the stacking fix always
|
|
55
56
|
* holds and positioning never regresses.
|
|
@@ -62,7 +63,10 @@ function supportsAnchor(): boolean {
|
|
|
62
63
|
&& typeof CSS !== 'undefined'
|
|
63
64
|
&& typeof CSS.supports === 'function'
|
|
64
65
|
&& CSS.supports('anchor-name: --a')
|
|
65
|
-
&& CSS.supports('
|
|
66
|
+
&& CSS.supports('position-area', 'bottom span-right')
|
|
67
|
+
&& CSS.supports('position-try-fallbacks', 'flip-block')
|
|
68
|
+
&& CSS.supports('min-width', 'min(anchor-size(width), 100vw)')
|
|
69
|
+
&& CSS.supports('max-width', 'stretch')
|
|
66
70
|
)
|
|
67
71
|
}
|
|
68
72
|
|
|
@@ -92,9 +96,12 @@ function setAnchorStyles(overlay: HTMLElement, anchorName: string): void {
|
|
|
92
96
|
s.setProperty('inset', 'auto', 'important')
|
|
93
97
|
s.setProperty('margin', '0', 'important')
|
|
94
98
|
s.setProperty('position-anchor', anchorName)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
s.setProperty('position-
|
|
99
|
+
// Flip the placement area rather than important inset declarations. Important
|
|
100
|
+
// anchor() offsets override the fallback's offsets and leave the panel offscreen.
|
|
101
|
+
s.setProperty('position-area', 'bottom span-right')
|
|
102
|
+
s.setProperty('position-try-fallbacks', 'flip-block, flip-inline, flip-block flip-inline')
|
|
103
|
+
s.setProperty('min-width', 'min(anchor-size(width), 100vw)', 'important')
|
|
104
|
+
s.setProperty('max-width', 'stretch', 'important')
|
|
98
105
|
}
|
|
99
106
|
|
|
100
107
|
/**
|
|
@@ -106,8 +113,8 @@ function setAnchorStyles(overlay: HTMLElement, anchorName: string): void {
|
|
|
106
113
|
* inline `style`. Since an inline style has ONE slot per property, that plain write
|
|
107
114
|
* REPLACES our `!important` value+priority — so a one-shot write is not durable. We
|
|
108
115
|
* therefore also watch the overlay's own `style` and re-apply whenever PrimeVue clobbers
|
|
109
|
-
* it; the
|
|
110
|
-
*
|
|
116
|
+
* it; checking the expected neutral offsets and margin makes the re-apply idempotent.
|
|
117
|
+
* The observer is released when the overlay leaves its layer ({@link releaseAnchor}).
|
|
111
118
|
*/
|
|
112
119
|
function applyAnchor(overlay: HTMLElement, anchorName: string): void {
|
|
113
120
|
if (!SELF_ANCHORED_OVERLAY.test(overlay.className))
|
|
@@ -132,8 +139,16 @@ function applyAnchor(overlay: HTMLElement, anchorName: string): void {
|
|
|
132
139
|
}
|
|
133
140
|
if (!anchorStyleObservers.has(overlay)) {
|
|
134
141
|
const obs = new MutationObserver(() => {
|
|
135
|
-
|
|
142
|
+
const s = overlay.style
|
|
143
|
+
if (s.top !== 'auto' || s.left !== 'auto' || s.margin !== '0px'
|
|
144
|
+
|| s.getPropertyPriority('top') !== 'important'
|
|
145
|
+
|| s.getPropertyPriority('left') !== 'important'
|
|
146
|
+
|| s.getPropertyPriority('margin') !== 'important'
|
|
147
|
+
|| s.getPropertyPriority('min-width') !== 'important'
|
|
148
|
+
|| s.maxWidth !== 'stretch'
|
|
149
|
+
|| s.getPropertyPriority('max-width') !== 'important') {
|
|
136
150
|
setAnchorStyles(overlay, anchorName)
|
|
151
|
+
}
|
|
137
152
|
})
|
|
138
153
|
obs.observe(overlay, { attributes: true, attributeFilter: ['style'] })
|
|
139
154
|
anchorStyleObservers.set(overlay, obs)
|
package/tailwind-contract.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"packageVersion": "0.0.
|
|
3
|
+
"packageVersion": "0.0.62",
|
|
4
4
|
"compatibility": {
|
|
5
|
-
"themePackageVersion": "0.0.
|
|
5
|
+
"themePackageVersion": "0.0.62",
|
|
6
6
|
"manifestSchemaVersion": "1.0.0",
|
|
7
|
-
"implementationRelease": "1.0.
|
|
7
|
+
"implementationRelease": "1.0.62",
|
|
8
8
|
"tailwindVersion": "3.4.19",
|
|
9
9
|
"tailwindcssPrimeuiVersion": "0.6.1",
|
|
10
10
|
"primevueVersion": "4.5.5",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"referencePrimeuixThemesVersion": "2.0.3",
|
|
14
14
|
"referencePrimeuixThemesIntegrity": "sha512-3fS1883mtCWhgUgNf/feiaaDSOND4EBIOu9tZnzJlJ8QtYyL6eFLcA6V3ymCWqLVXQ1+lTVEZv1gl47FIdXReg==",
|
|
15
15
|
"sourceHashes": {
|
|
16
|
-
"themeContract": "
|
|
16
|
+
"themeContract": "12b153ce7e8c50f1ed3a9acacf7cca18a1879eb0263252ce82adde4c54cba724",
|
|
17
17
|
"runtimeAcceptanceRequirements": "6bac23fb52a87b18b1661b5ac73747a972e07f40af6961571b5f4dd831d4cb85",
|
|
18
18
|
"themeConfig": "9b484e9da76871d11edda5a555b0d0443a262acd80fb42c74c4fd78e2b23b5ae",
|
|
19
19
|
"tailwindConfig": "f1e862105254f082a78823ea685e3c6dc3ff5822516b7434a1e1141c976adc1d",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"acceptance": {
|
|
35
35
|
"status": "unverified",
|
|
36
36
|
"evidenceSchemaVersion": "1.0.0",
|
|
37
|
-
"inputHash": "
|
|
37
|
+
"inputHash": "322274f50fc263f822a296425594e91841dc2a0826ddd7e733066d29cff6c41a",
|
|
38
38
|
"requirements": "contracts/runtime-acceptance-requirements.json",
|
|
39
39
|
"gate": "node scripts/build-theme-contract.mjs --check --acceptance --evidence <path> --evidence-sha256 <hash>"
|
|
40
40
|
},
|
package/tokens.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"packageVersion": "0.0.
|
|
4
|
-
"implementationRelease": "1.0.
|
|
3
|
+
"packageVersion": "0.0.62",
|
|
4
|
+
"implementationRelease": "1.0.62",
|
|
5
5
|
"generatedFrom": [
|
|
6
6
|
"theme-config.css",
|
|
7
7
|
"contracts/theme-contract.json"
|
|
8
8
|
],
|
|
9
9
|
"compatibility": {
|
|
10
|
-
"themePackageVersion": "0.0.
|
|
10
|
+
"themePackageVersion": "0.0.62",
|
|
11
11
|
"manifestSchemaVersion": "1.0.0",
|
|
12
|
-
"implementationRelease": "1.0.
|
|
12
|
+
"implementationRelease": "1.0.62",
|
|
13
13
|
"tailwindVersion": "3.4.19",
|
|
14
14
|
"tailwindcssPrimeuiVersion": "0.6.1",
|
|
15
15
|
"primevueVersion": "4.5.5",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"referencePrimeuixThemesVersion": "2.0.3",
|
|
19
19
|
"referencePrimeuixThemesIntegrity": "sha512-3fS1883mtCWhgUgNf/feiaaDSOND4EBIOu9tZnzJlJ8QtYyL6eFLcA6V3ymCWqLVXQ1+lTVEZv1gl47FIdXReg==",
|
|
20
20
|
"sourceHashes": {
|
|
21
|
-
"themeContract": "
|
|
21
|
+
"themeContract": "12b153ce7e8c50f1ed3a9acacf7cca18a1879eb0263252ce82adde4c54cba724",
|
|
22
22
|
"runtimeAcceptanceRequirements": "6bac23fb52a87b18b1661b5ac73747a972e07f40af6961571b5f4dd831d4cb85",
|
|
23
23
|
"themeConfig": "9b484e9da76871d11edda5a555b0d0443a262acd80fb42c74c4fd78e2b23b5ae",
|
|
24
24
|
"tailwindConfig": "f1e862105254f082a78823ea685e3c6dc3ff5822516b7434a1e1141c976adc1d",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"acceptance": {
|
|
40
40
|
"status": "unverified",
|
|
41
41
|
"evidenceSchemaVersion": "1.0.0",
|
|
42
|
-
"inputHash": "
|
|
42
|
+
"inputHash": "322274f50fc263f822a296425594e91841dc2a0826ddd7e733066d29cff6c41a",
|
|
43
43
|
"requirements": "contracts/runtime-acceptance-requirements.json",
|
|
44
44
|
"gate": "node scripts/build-theme-contract.mjs --check --acceptance --evidence <path> --evidence-sha256 <hash>"
|
|
45
45
|
},
|