@wippy-fe/theme 0.0.52 → 0.0.53

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "implementationRelease": "1.0.52",
3
+ "implementationRelease": "1.0.53",
4
4
  "upstream": {
5
5
  "package": "@primeuix/themes",
6
6
  "version": "2.0.3",
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "packageVersion": "0.0.52",
4
- "implementationRelease": "1.0.52",
3
+ "packageVersion": "0.0.53",
4
+ "implementationRelease": "1.0.53",
5
5
  "compatibility": {
6
- "themePackageVersion": "0.0.52",
6
+ "themePackageVersion": "0.0.53",
7
7
  "manifestSchemaVersion": "1.0.0",
8
- "implementationRelease": "1.0.52",
8
+ "implementationRelease": "1.0.53",
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": "e41c69ba0d676a55cc121b4381d476dd30e959ad9dafec1f250e7ff149c11d39",
17
+ "themeContract": "2dcbe6fd096aa69d081e793e4c177bd0f791ebd04a12bcd57957f64b9d413f62",
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": "f7ec739c4bd7dfb2fe95c5062f9e97086cf4edb8ae6914a9810c79710951b03d",
38
+ "inputHash": "72da773feb9f72ba8b0cfc9b3d2cf85fea673fbe4e501a96df2928ef5b2c5249",
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.52",
3
+ "version": "0.0.53",
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",
@@ -1,5 +1,6 @@
1
1
  import type { App, VNode } from 'vue'
2
2
  import PrimeVue from 'primevue/config'
3
+ import Menu from 'primevue/menu'
3
4
  import Portal from 'primevue/portal'
4
5
  import { createCommentVNode, h, renderSlot, Teleport } from 'vue'
5
6
 
@@ -407,6 +408,62 @@ function teardownOverlayLayer(inst: PortalInstance): void {
407
408
  }
408
409
  }
409
410
 
411
+ interface PrimeVueMenuOptions {
412
+ methods?: {
413
+ bindOutsideClickListener?: (this: PrimeVueMenuInstance) => void
414
+ }
415
+ }
416
+
417
+ interface PrimeVueMenuInstance {
418
+ container: HTMLElement | null
419
+ target: HTMLElement | null
420
+ outsideClickListener: ((event: MouseEvent) => void) | null
421
+ overlayVisible: boolean
422
+ popup: boolean
423
+ focusedOptionIndex: string | number
424
+ hide: () => void
425
+ }
426
+
427
+ let menuOutsideClickPatched = false
428
+
429
+ /**
430
+ * PrimeVue 4.5.5 Menu still tests document-capture clicks with `event.target`.
431
+ * At the document boundary, a click from inside a shadow root is retargeted to
432
+ * the shadow host, so Menu mistakes its own teleported panel for an outside
433
+ * click and hides before an input or menu item can handle the event.
434
+ *
435
+ * Select already uses `event.composedPath()`. Apply the same rule to Menu while
436
+ * preserving its popup/inline behavior. Menu is imported and patched by this
437
+ * plugin so consumers only need to install `PrimeVuePlugin`.
438
+ */
439
+ function patchMenuOutsideClick(): void {
440
+ if (menuOutsideClickPatched)
441
+ return
442
+
443
+ const menu = Menu as unknown as PrimeVueMenuOptions
444
+ if (!menu.methods || typeof menu.methods.bindOutsideClickListener !== 'function')
445
+ return
446
+
447
+ menu.methods.bindOutsideClickListener = function (this: PrimeVueMenuInstance) {
448
+ if (this.outsideClickListener)
449
+ return
450
+
451
+ this.outsideClickListener = (event: MouseEvent) => {
452
+ const path = event.composedPath()
453
+ const isOutsideContainer = this.container && !path.includes(this.container)
454
+ const isOutsideTarget = !(this.target && path.includes(this.target))
455
+
456
+ if (this.overlayVisible && isOutsideContainer && isOutsideTarget)
457
+ this.hide()
458
+ else if (!this.popup && isOutsideContainer && isOutsideTarget)
459
+ this.focusedOptionIndex = -1
460
+ }
461
+ document.addEventListener('click', this.outsideClickListener, true)
462
+ }
463
+
464
+ menuOutsideClickPatched = true
465
+ }
466
+
410
467
  let patched = false
411
468
 
412
469
  /**
@@ -507,6 +564,7 @@ export function patchOverlayPortal(): void {
507
564
 
508
565
  export const PrimeVuePlugin = {
509
566
  install: (app: App) => {
567
+ patchMenuOutsideClick()
510
568
  patchOverlayPortal()
511
569
  app.use(PrimeVue, { theme: 'none' })
512
570
  },
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "packageVersion": "0.0.52",
3
+ "packageVersion": "0.0.53",
4
4
  "compatibility": {
5
- "themePackageVersion": "0.0.52",
5
+ "themePackageVersion": "0.0.53",
6
6
  "manifestSchemaVersion": "1.0.0",
7
- "implementationRelease": "1.0.52",
7
+ "implementationRelease": "1.0.53",
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": "e41c69ba0d676a55cc121b4381d476dd30e959ad9dafec1f250e7ff149c11d39",
16
+ "themeContract": "2dcbe6fd096aa69d081e793e4c177bd0f791ebd04a12bcd57957f64b9d413f62",
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": "f7ec739c4bd7dfb2fe95c5062f9e97086cf4edb8ae6914a9810c79710951b03d",
37
+ "inputHash": "72da773feb9f72ba8b0cfc9b3d2cf85fea673fbe4e501a96df2928ef5b2c5249",
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.52",
4
- "implementationRelease": "1.0.52",
3
+ "packageVersion": "0.0.53",
4
+ "implementationRelease": "1.0.53",
5
5
  "generatedFrom": [
6
6
  "theme-config.css",
7
7
  "contracts/theme-contract.json"
8
8
  ],
9
9
  "compatibility": {
10
- "themePackageVersion": "0.0.52",
10
+ "themePackageVersion": "0.0.53",
11
11
  "manifestSchemaVersion": "1.0.0",
12
- "implementationRelease": "1.0.52",
12
+ "implementationRelease": "1.0.53",
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": "e41c69ba0d676a55cc121b4381d476dd30e959ad9dafec1f250e7ff149c11d39",
21
+ "themeContract": "2dcbe6fd096aa69d081e793e4c177bd0f791ebd04a12bcd57957f64b9d413f62",
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": "f7ec739c4bd7dfb2fe95c5062f9e97086cf4edb8ae6914a9810c79710951b03d",
42
+ "inputHash": "72da773feb9f72ba8b0cfc9b3d2cf85fea673fbe4e501a96df2928ef5b2c5249",
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
  },