@kubex/zinc 1.1.131 → 1.1.132
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.
|
@@ -23751,19 +23751,6 @@
|
|
|
23751
23751
|
"module": "components/panel/panel.js"
|
|
23752
23752
|
}
|
|
23753
23753
|
},
|
|
23754
|
-
{
|
|
23755
|
-
"kind": "field",
|
|
23756
|
-
"name": "bodySlot",
|
|
23757
|
-
"type": {
|
|
23758
|
-
"text": "HTMLSlotElement | null"
|
|
23759
|
-
},
|
|
23760
|
-
"privacy": "private",
|
|
23761
|
-
"readonly": true,
|
|
23762
|
-
"inheritedFrom": {
|
|
23763
|
-
"name": "ZnPanel",
|
|
23764
|
-
"module": "components/panel/panel.js"
|
|
23765
|
-
}
|
|
23766
|
-
},
|
|
23767
23754
|
{
|
|
23768
23755
|
"kind": "method",
|
|
23769
23756
|
"name": "observeBodyContent",
|
|
@@ -31139,15 +31126,6 @@
|
|
|
31139
31126
|
"privacy": "private",
|
|
31140
31127
|
"default": "null"
|
|
31141
31128
|
},
|
|
31142
|
-
{
|
|
31143
|
-
"kind": "field",
|
|
31144
|
-
"name": "bodySlot",
|
|
31145
|
-
"type": {
|
|
31146
|
-
"text": "HTMLSlotElement | null"
|
|
31147
|
-
},
|
|
31148
|
-
"privacy": "private",
|
|
31149
|
-
"readonly": true
|
|
31150
|
-
},
|
|
31151
31129
|
{
|
|
31152
31130
|
"kind": "method",
|
|
31153
31131
|
"name": "observeBodyContent",
|
|
@@ -51559,19 +51537,6 @@
|
|
|
51559
51537
|
"module": "components/panel/panel.js"
|
|
51560
51538
|
}
|
|
51561
51539
|
},
|
|
51562
|
-
{
|
|
51563
|
-
"kind": "field",
|
|
51564
|
-
"name": "bodySlot",
|
|
51565
|
-
"type": {
|
|
51566
|
-
"text": "HTMLSlotElement | null"
|
|
51567
|
-
},
|
|
51568
|
-
"privacy": "private",
|
|
51569
|
-
"readonly": true,
|
|
51570
|
-
"inheritedFrom": {
|
|
51571
|
-
"name": "ZnPanel",
|
|
51572
|
-
"module": "components/panel/panel.js"
|
|
51573
|
-
}
|
|
51574
|
-
},
|
|
51575
51540
|
{
|
|
51576
51541
|
"kind": "method",
|
|
51577
51542
|
"name": "observeBodyContent",
|
|
@@ -52861,7 +52826,7 @@
|
|
|
52861
52826
|
"package": {
|
|
52862
52827
|
"name": "@kubex/zinc",
|
|
52863
52828
|
"description": "A collection of web components for building web applications based off of @shoelace-style/Shoelace",
|
|
52864
|
-
"version": "1.1.
|
|
52829
|
+
"version": "1.1.132",
|
|
52865
52830
|
"author": "",
|
|
52866
52831
|
"license": "MIT"
|
|
52867
52832
|
}
|
package/dist/web-types.json
CHANGED
package/dist/zn.d.ts
CHANGED
|
@@ -3872,7 +3872,6 @@ declare module "components/panel/panel.component" {
|
|
|
3872
3872
|
protected firstUpdated(_changedProperties: PropertyValues): void;
|
|
3873
3873
|
connectedCallback(): void;
|
|
3874
3874
|
disconnectedCallback(): void;
|
|
3875
|
-
private get bodySlot();
|
|
3876
3875
|
private observeBodyContent;
|
|
3877
3876
|
private measureBodyContent;
|
|
3878
3877
|
protected render(): unknown;
|
package/dist/zn.min.js
CHANGED
|
@@ -1163,7 +1163,7 @@ import{a as Fn,b as h3,c as _r,d as c,e as V}from"./chunks/zn.UBLZO6CI.js";var K
|
|
|
1163
1163
|
aria-label="hover-container">
|
|
1164
1164
|
<slot name="content">${this.content}</slot>
|
|
1165
1165
|
</div>
|
|
1166
|
-
</zn-popup>`}};It.styles=z(_0),c([F("slot:not([name])")],It.prototype,"defaultSlot",2),c([F(".hover-container__body")],It.prototype,"body",2),c([F("zn-popup")],It.prototype,"popup",2),c([d()],It.prototype,"content",2),c([d()],It.prototype,"placement",2),c([d({type:Boolean,reflect:!0})],It.prototype,"disabled",2),c([d({type:Number})],It.prototype,"distance",2),c([d({type:Boolean,reflect:!0})],It.prototype,"open",2),c([d({type:Number})],It.prototype,"skidding",2),c([d()],It.prototype,"trigger",2),c([d({type:Boolean})],It.prototype,"hoist",2),c([K("open",{waitUntilFirstUpdate:!0})],It.prototype,"handleOpenChange",1),c([K(["content","distance","hoist","placement","skidding"])],It.prototype,"handleOptionsChange",1),c([K("disabled")],It.prototype,"handleDisabledChange",1);var Ju=It;It.define("zn-hover-container");var k0=_`@keyframes rotate-gradient{from{--rotate:0deg}to{--rotate:360deg}}:host{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-transform:none}*,*::before,*::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--zn-border-color))}[hidden]{display:none !important}.width-container,.form-container,.wide-form-container{height:100%;width:100%;margin:var(--zn-default-margin,0 auto)}.width-container{max-width:var(--zn-container)}.form-container{max-width:var(--zn-container-ph)}.wide-form-container{max-width:var(--zn-container-lg)}:host ::-webkit-scrollbar{width:5px;height:5px}:host{}:host ::-webkit-scrollbar-track{background:transparent}:host{}:host ::-webkit-scrollbar-thumb{background:rgba(var(--inverse-base),0.2);border-radius:5px}:host{}:host ::-webkit-scrollbar-thumb:hover{background:rgba(var(--inverse-base),0.6)}:host{flex-grow:1;overflow:visible;display:flex;max-width:100%;z-index:1;position:relative;min-width:var(--zn-spacing-small-panel);flex-basis:var(--zn-panel-basis);--zn-page-surface-background:var(--zn-panel);--zn-active-nav-background:var(--zn-panel)}.panel{position:relative;border:1px solid rgb(var(--zn-border-color));display:flex;border-radius:var(--zn-border-radius);flex-direction:column;flex-grow:1;flex-basis:var(--zn-spacing-small-panel);width:100%;background-color:rgba(var(--zn-panel),var(--zn-panel-opacity))}.panel__inner{overflow:hidden;display:flex;border-radius:var(--zn-border-radius);flex-direction:column;flex-grow:1}.panel__content{display:flex;flex-grow:1;overflow:hidden;position:relative}.panel__header{padding:var(--zn-panel-header-padding,var(--zn-base-gap))}.panel__header::part(base){border-bottom:0;overflow:visible}.panel__header--inline{border-bottom:0}.panel__header--underline{border-bottom:1px solid rgb(var(--zn-border-color))}.panel__header::part(content){padding:0}.panel__body{display:flex;flex-direction:column;overflow-y:auto;flex-grow:1;padding:var(--zn-base-gap)}.panel__body>:not([hidden])~:not([hidden]){border:1px solid rgb(var(--zn-border-color))}.panel__footer{font-size:var(--zn-font-size-small);display:block;padding:var(--zn-panel-footer-padding,var(--zn-spacing-small) var(--zn-base-gap));background:rgb(var(--zn-body));border-bottom-left-radius:var(--zn-border-radius);border-bottom-right-radius:var(--zn-border-radius)}.panel--tabbed .panel__body{padding:0}.panel--transparent{background-color:transparent;border:none}.panel--transparent:before{display:none}.panel:not(.panel--flush,.panel--flush-x,.panel--flush-y) ::slotted(zn-sp){--zn-sp-padding:0 !important}.panel.panel--borderless-header:not(.panel--flush,.panel--flush-y) .panel__body{padding-top:0}.panel--empty .panel__body{padding:0}.panel--flush .panel__body{padding:0}.panel--flush-x .panel__body{padding-inline:0}.panel--flush-y .panel__body{padding-block:0}.panel--flush-footer .panel__footer{padding:0}.panel--transparent .panel__header{padding-left:0;padding-right:0}.panel--cosmic{border:1px solid transparent}.panel--cosmic:before{content:"";z-index:-1;position:absolute;top:-2px;left:-2px;height:calc(100% + 4px);width:calc(100% + 4px);filter:blur(var(--zn-blur,1px));opacity:0.9;border-radius:var(--zn-border-radius);background-image:conic-gradient(from var(--rotate) at 50% 50%,#71d9ff 0%,#a100ff 22%,#71d9ff 44%,#ff00ce 74%,#71d9ff 94%);animation:rotate-gradient 6s linear infinite}.panel--shadow{box-shadow:0 6px 20px 10px rgba(0,0,0,0.25)}`;var Ze=class extends k{constructor(){super(...arguments);this.hasSlotController=new Y(this,"[default]","actions","footer");this.bodyEmpty=!1;this.resizeObserver=null}firstUpdated(t){if(super.firstUpdated(t),this.observeBodyContent(),this.basis&&this.style.setProperty("--zn-panel-basis",this.basis.toString()+"px"),!this.tabbed){let r=this.querySelector("zn-tabs");if(r){r.setAttribute("flush-x","");let n=this.shadowRoot?.querySelector(".body");n&&n.classList.toggle("ntp",!0)}}}connectedCallback(){if(super.connectedCallback(),this.hasUpdated&&this.observeBodyContent(),window.CSS.registerProperty)try{window.CSS.registerProperty({inherits:!1,initialValue:"0deg",name:"--rotate",syntax:"<angle>"})}catch{}}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver?.disconnect(),this.resizeObserver=null}
|
|
1166
|
+
</zn-popup>`}};It.styles=z(_0),c([F("slot:not([name])")],It.prototype,"defaultSlot",2),c([F(".hover-container__body")],It.prototype,"body",2),c([F("zn-popup")],It.prototype,"popup",2),c([d()],It.prototype,"content",2),c([d()],It.prototype,"placement",2),c([d({type:Boolean,reflect:!0})],It.prototype,"disabled",2),c([d({type:Number})],It.prototype,"distance",2),c([d({type:Boolean,reflect:!0})],It.prototype,"open",2),c([d({type:Number})],It.prototype,"skidding",2),c([d()],It.prototype,"trigger",2),c([d({type:Boolean})],It.prototype,"hoist",2),c([K("open",{waitUntilFirstUpdate:!0})],It.prototype,"handleOpenChange",1),c([K(["content","distance","hoist","placement","skidding"])],It.prototype,"handleOptionsChange",1),c([K("disabled")],It.prototype,"handleDisabledChange",1);var Ju=It;It.define("zn-hover-container");var k0=_`@keyframes rotate-gradient{from{--rotate:0deg}to{--rotate:360deg}}:host{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-transform:none}*,*::before,*::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--zn-border-color))}[hidden]{display:none !important}.width-container,.form-container,.wide-form-container{height:100%;width:100%;margin:var(--zn-default-margin,0 auto)}.width-container{max-width:var(--zn-container)}.form-container{max-width:var(--zn-container-ph)}.wide-form-container{max-width:var(--zn-container-lg)}:host ::-webkit-scrollbar{width:5px;height:5px}:host{}:host ::-webkit-scrollbar-track{background:transparent}:host{}:host ::-webkit-scrollbar-thumb{background:rgba(var(--inverse-base),0.2);border-radius:5px}:host{}:host ::-webkit-scrollbar-thumb:hover{background:rgba(var(--inverse-base),0.6)}:host{flex-grow:1;overflow:visible;display:flex;max-width:100%;z-index:1;position:relative;min-width:var(--zn-spacing-small-panel);flex-basis:var(--zn-panel-basis);--zn-page-surface-background:var(--zn-panel);--zn-active-nav-background:var(--zn-panel)}.panel{position:relative;border:1px solid rgb(var(--zn-border-color));display:flex;border-radius:var(--zn-border-radius);flex-direction:column;flex-grow:1;flex-basis:var(--zn-spacing-small-panel);width:100%;background-color:rgba(var(--zn-panel),var(--zn-panel-opacity))}.panel__inner{overflow:hidden;display:flex;border-radius:var(--zn-border-radius);flex-direction:column;flex-grow:1}.panel__content{display:flex;flex-grow:1;overflow:hidden;position:relative}.panel__header{padding:var(--zn-panel-header-padding,var(--zn-base-gap))}.panel__header::part(base){border-bottom:0;overflow:visible}.panel__header--inline{border-bottom:0}.panel__header--underline{border-bottom:1px solid rgb(var(--zn-border-color))}.panel__header::part(content){padding:0}.panel__body{display:flex;flex-direction:column;overflow-y:auto;flex-grow:1;padding:var(--zn-base-gap)}.panel__body>:not([hidden])~:not([hidden]){border:1px solid rgb(var(--zn-border-color))}.panel__footer{font-size:var(--zn-font-size-small);display:block;padding:var(--zn-panel-footer-padding,var(--zn-spacing-small) var(--zn-base-gap));background:rgb(var(--zn-body));border-bottom-left-radius:var(--zn-border-radius);border-bottom-right-radius:var(--zn-border-radius)}.panel--tabbed .panel__body{padding:0}.panel--transparent{background-color:transparent;border:none}.panel--transparent:before{display:none}.panel:not(.panel--flush,.panel--flush-x,.panel--flush-y) ::slotted(zn-sp){--zn-sp-padding:0 !important}.panel.panel--borderless-header:not(.panel--flush,.panel--flush-y) .panel__body{padding-top:0}.panel--empty .panel__body{padding:0}.panel--flush .panel__body{padding:0}.panel--flush-x .panel__body{padding-inline:0}.panel--flush-y .panel__body{padding-block:0}.panel--flush-footer .panel__footer{padding:0}.panel--transparent .panel__header{padding-left:0;padding-right:0}.panel--cosmic{border:1px solid transparent}.panel--cosmic:before{content:"";z-index:-1;position:absolute;top:-2px;left:-2px;height:calc(100% + 4px);width:calc(100% + 4px);filter:blur(var(--zn-blur,1px));opacity:0.9;border-radius:var(--zn-border-radius);background-image:conic-gradient(from var(--rotate) at 50% 50%,#71d9ff 0%,#a100ff 22%,#71d9ff 44%,#ff00ce 74%,#71d9ff 94%);animation:rotate-gradient 6s linear infinite}.panel--shadow{box-shadow:0 6px 20px 10px rgba(0,0,0,0.25)}`;var Ze=class extends k{constructor(){super(...arguments);this.hasSlotController=new Y(this,"[default]","actions","footer");this.bodyEmpty=!1;this.resizeObserver=null}firstUpdated(t){if(super.firstUpdated(t),this.observeBodyContent(),this.basis&&this.style.setProperty("--zn-panel-basis",this.basis.toString()+"px"),!this.tabbed){let r=this.querySelector("zn-tabs");if(r){r.setAttribute("flush-x","");let n=this.shadowRoot?.querySelector(".body");n&&n.classList.toggle("ntp",!0)}}}connectedCallback(){if(super.connectedCallback(),this.hasUpdated&&this.observeBodyContent(),window.CSS.registerProperty)try{window.CSS.registerProperty({inherits:!1,initialValue:"0deg",name:"--rotate",syntax:"<angle>"})}catch{}}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver?.disconnect(),this.resizeObserver=null}observeBodyContent(){let t=this.renderRoot?.querySelector(".panel__body");t&&(this.resizeObserver??(this.resizeObserver=new ResizeObserver(()=>this.measureBodyContent())),this.resizeObserver.disconnect(),this.resizeObserver.observe(t),this.measureBodyContent())}measureBodyContent(){let t=this.renderRoot?.querySelector(".panel__body");if(!t)return;let r=getComputedStyle(t),n=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);this.bodyEmpty=t.scrollHeight-n<=0}render(){let t=this.hasSlotController.test("actions"),r=this.hasSlotController.test("footer"),n=this.caption||t,a=!this.hasSlotController.test("[default]")||this.bodyEmpty,s=this.flush||this.tabbed||this.flushY,l=!this.headerBorderless&&!(this.transparent&&s)&&!a;return u`
|
|
1167
1167
|
<div class="${M({panel:!0,"panel--flush":this.flush||this.tabbed,"panel--flush-x":this.flushX,"panel--flush-y":this.flushY,"panel--flush-footer":this.flushFooter,"panel--tabbed":this.tabbed,"panel--transparent":this.transparent,"panel--has-actions":t,"panel--has-footer":r,"panel--empty":a,"panel--has-header":n,"panel--borderless-header":this.headerBorderless,"panel--cosmic":this.cosmic,"panel--shadow":this.shadow})}">
|
|
1168
1168
|
|
|
1169
1169
|
<div class="panel__inner">
|
package/package.json
CHANGED
|
@@ -92,27 +92,25 @@ export default class ZnPanel extends ZincElement {
|
|
|
92
92
|
this.resizeObserver = null;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
private get bodySlot(): HTMLSlotElement | null {
|
|
96
|
-
return this.renderRoot?.querySelector('.panel__body > slot') ?? null;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Slotted content can grow without the body's own box changing, so the observers go on the
|
|
100
|
-
// slotted elements rather than the body.
|
|
101
95
|
private observeBodyContent() {
|
|
102
|
-
const
|
|
103
|
-
if (!
|
|
96
|
+
const body = this.renderRoot?.querySelector('.panel__body');
|
|
97
|
+
if (!body) return;
|
|
104
98
|
|
|
105
99
|
this.resizeObserver ??= new ResizeObserver(() => this.measureBodyContent());
|
|
106
100
|
this.resizeObserver.disconnect();
|
|
107
|
-
|
|
101
|
+
this.resizeObserver.observe(body);
|
|
108
102
|
this.measureBodyContent();
|
|
109
103
|
}
|
|
110
104
|
|
|
105
|
+
// Measured on the body, not on the slotted elements: `display: contents` hosts such as zn-stat
|
|
106
|
+
// render content but have no box of their own to read or observe.
|
|
111
107
|
private measureBodyContent() {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
108
|
+
const body = this.renderRoot?.querySelector('.panel__body');
|
|
109
|
+
if (!body) return;
|
|
110
|
+
|
|
111
|
+
const style = getComputedStyle(body);
|
|
112
|
+
const padding = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);
|
|
113
|
+
this.bodyEmpty = body.scrollHeight - padding <= 0;
|
|
116
114
|
}
|
|
117
115
|
|
|
118
116
|
protected render(): unknown {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../../../dist/zn.min.js';
|
|
2
|
-
import { expect, fixture, html, waitUntil } from '@open-wc/testing';
|
|
2
|
+
import { aTimeout, expect, fixture, html, waitUntil } from '@open-wc/testing';
|
|
3
3
|
|
|
4
4
|
describe('<zn-panel>', () => {
|
|
5
5
|
it('should render a component', async () => {
|
|
@@ -41,6 +41,20 @@ describe('<zn-panel>', () => {
|
|
|
41
41
|
expect(el.shadowRoot!.querySelector('.panel')!.classList.contains('panel--empty')).to.be.true;
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
+
it('keeps the padded body when slotted content has no box of its own', async () => {
|
|
45
|
+
const el = await fixture(html` <zn-panel caption="Example">
|
|
46
|
+
<div style="display: contents">
|
|
47
|
+
<div style="height: 20px"></div>
|
|
48
|
+
</div>
|
|
49
|
+
</zn-panel> `);
|
|
50
|
+
const header = el.shadowRoot!.querySelector('.panel__header')!;
|
|
51
|
+
|
|
52
|
+
await aTimeout(50);
|
|
53
|
+
|
|
54
|
+
expect(header.classList.contains('panel__header--underline')).to.be.true;
|
|
55
|
+
expect(el.shadowRoot!.querySelector('.panel')!.classList.contains('panel--empty')).to.be.false;
|
|
56
|
+
});
|
|
57
|
+
|
|
44
58
|
it('restores the header underline when slotted content gains height', async () => {
|
|
45
59
|
const el = await fixture(html` <zn-panel caption="Example">
|
|
46
60
|
<div id="wrapper"></div>
|