@kyndryl-design-system/shidoka-applications 2.80.1 → 2.80.2
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/components/reusable/iconSelector/iconSelector.d.ts +9 -1
- package/components/reusable/iconSelector/iconSelector.d.ts.map +1 -1
- package/components/reusable/iconSelector/iconSelector.js +7 -3
- package/components/reusable/iconSelector/iconSelector.js.map +1 -1
- package/components/reusable/iconSelector/iconSelectorGroup.d.ts +3 -0
- package/components/reusable/iconSelector/iconSelectorGroup.d.ts.map +1 -1
- package/components/reusable/iconSelector/iconSelectorGroup.js.map +1 -1
- package/package.json +1 -1
|
@@ -46,8 +46,14 @@ export declare class IconSelector extends LitElement {
|
|
|
46
46
|
accessor animateSelection: boolean;
|
|
47
47
|
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
48
48
|
private _shouldAnimate;
|
|
49
|
+
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
49
50
|
private _shouldOnlyVisibleOnHover;
|
|
51
|
+
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
50
52
|
private _shouldPersistWhenChecked;
|
|
53
|
+
/** @internal Suppresses opacity transition until initial state is painted. */
|
|
54
|
+
private _transitionsReady;
|
|
55
|
+
/** @internal Set on user interaction so animation only plays on deliberate toggles. */
|
|
56
|
+
private _justToggled;
|
|
51
57
|
render(): import("lit-html").TemplateResult<1>;
|
|
52
58
|
private _handleClick;
|
|
53
59
|
private _handleKeydown;
|
|
@@ -59,12 +65,14 @@ export declare class IconSelector extends LitElement {
|
|
|
59
65
|
*/
|
|
60
66
|
private _handleHostClick;
|
|
61
67
|
firstUpdated(): void;
|
|
62
|
-
|
|
68
|
+
updated(): void;
|
|
63
69
|
private _readCSSFlags;
|
|
64
70
|
willUpdate(changedProps: Map<string, unknown>): void;
|
|
65
71
|
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
66
72
|
private _cssAnimate;
|
|
73
|
+
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
67
74
|
private _cssOnlyVisibleOnHover;
|
|
75
|
+
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
68
76
|
private _cssPersistWhenChecked;
|
|
69
77
|
private _resolveFlags;
|
|
70
78
|
connectedCallback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AASlD;;;;;;;GAOG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAA+B;IAErD,cAAc;IACd,OAAgB,iBAAiB;;;;;MAG/B;IAEF,8BAA8B;IAE9B,QAAQ,CAAC,OAAO,UAAS;IAEzB,4EAA4E;IAE5E,QAAQ,CAAC,KAAK,SAAM;IAEpB,qCAAqC;IAErC,QAAQ,CAAC,YAAY,SAA2B;IAEhD,uCAAuC;IAEvC,QAAQ,CAAC,cAAc,SAAsB;IAE7C,sBAAsB;IAEtB,QAAQ,CAAC,QAAQ,UAAS;IAE1B;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,gBAAgB,UAAS;IAElC,wEAAwE;IACxE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,yBAAyB,CAAS;
|
|
1
|
+
{"version":3,"file":"iconSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AASlD;;;;;;;GAOG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAA+B;IAErD,cAAc;IACd,OAAgB,iBAAiB;;;;;MAG/B;IAEF,8BAA8B;IAE9B,QAAQ,CAAC,OAAO,UAAS;IAEzB,4EAA4E;IAE5E,QAAQ,CAAC,KAAK,SAAM;IAEpB,qCAAqC;IAErC,QAAQ,CAAC,YAAY,SAA2B;IAEhD,uCAAuC;IAEvC,QAAQ,CAAC,cAAc,SAAsB;IAE7C,sBAAsB;IAEtB,QAAQ,CAAC,QAAQ,UAAS;IAE1B;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;;;OAIG;IAEH,QAAQ,CAAC,gBAAgB,UAAS;IAElC,wEAAwE;IACxE,OAAO,CAAC,cAAc,CAAS;IAC/B,wEAAwE;IACxE,OAAO,CAAC,yBAAyB,CAAS;IAC1C,wEAAwE;IACxE,OAAO,CAAC,yBAAyB,CAAS;IAE1C,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB,CAAS;IAElC,uFAAuF;IACvF,OAAO,CAAC,YAAY,CAAS;IAEpB,MAAM;IAmCf,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEO,YAAY;IAOZ,OAAO;IAYhB,OAAO,CAAC,aAAa;IAeZ,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAUtD,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAS;IAE5B,+EAA+E;IAC/E,OAAO,CAAC,sBAAsB,CAAS;IAEvC,+EAA+E;IAC/E,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,aAAa;IAQZ,iBAAiB;IASjB,oBAAoB;CAI9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAC;KACnC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as n}from"tslib";import{css as c,LitElement as a,unsafeCSS as o,html as l}from"lit";import{customElement as r,property as h}from"lit/decorators.js";import{classMap as d}from"lit-html/directives/class-map.js";import{unsafeSVG as k}from"lit-html/directives/unsafe-svg.js";import{a1 as p,a2 as m}from"../../../vendor/@kyndryl-design-system/shidoka-icons-Bn8RHT_T.js";var u=c`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -53,6 +53,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
53
53
|
}
|
|
54
54
|
.icon-selector.only-visible-on-hover {
|
|
55
55
|
opacity: var(--kyn-icon-selector-hover-opacity, 0);
|
|
56
|
+
}
|
|
57
|
+
.icon-selector.only-visible-on-hover.transitions-ready {
|
|
56
58
|
transition: opacity 150ms ease-out;
|
|
57
59
|
}
|
|
58
60
|
.icon-selector.only-visible-on-hover.persist-when-checked.icon-selector--checked {
|
|
@@ -108,6 +110,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
108
110
|
display: flex;
|
|
109
111
|
opacity: 1;
|
|
110
112
|
transform: scale(1);
|
|
113
|
+
}
|
|
114
|
+
.animate-selection.just-toggled .icon-selector--checked .icon--checked, .animate-selection.just-toggled.icon-selector--checked .icon--checked {
|
|
111
115
|
animation: icon-pop 450ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
112
116
|
}
|
|
113
117
|
|
|
@@ -127,7 +131,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
127
131
|
transform: scale(1);
|
|
128
132
|
opacity: 1;
|
|
129
133
|
}
|
|
130
|
-
}`;let
|
|
134
|
+
}`;let y=(()=>{var c,y,b,v,g,f,_,C;let O,S,W,w,x,H,j,L,V,P,F=[r("kyn-icon-selector")],$=[],A=a,M=[],R=[],E=[],B=[],T=[],U=[],q=[],z=[],D=[],K=[],I=[],G=[],J=[],N=[],Q=[],X=[];return S=class extends A{constructor(){super(...arguments),c.set(this,s(this,M,!1)),y.set(this,(s(this,R),s(this,E,""))),b.set(this,(s(this,B),s(this,T,"Remove from favorites"))),v.set(this,(s(this,U),s(this,q,"Add to favorites"))),g.set(this,(s(this,z),s(this,D,!1))),f.set(this,(s(this,K),s(this,I,!1))),_.set(this,(s(this,G),s(this,J,!1))),C.set(this,(s(this,N),s(this,Q,!1))),this._shouldAnimate=(s(this,X),!1),this._shouldOnlyVisibleOnHover=!1,this._shouldPersistWhenChecked=!1,this._transitionsReady=!1,this._justToggled=!1,this._handleHostClick=e=>{e.stopPropagation()},this._cssAnimate=!1,this._cssOnlyVisibleOnHover=!1,this._cssPersistWhenChecked=!1}get checked(){return i(this,c,"f")}set checked(e){n(this,c,e,"f")}get value(){return i(this,y,"f")}set value(e){n(this,y,e,"f")}get checkedLabel(){return i(this,b,"f")}set checkedLabel(e){n(this,b,e,"f")}get uncheckedLabel(){return i(this,v,"f")}set uncheckedLabel(e){n(this,v,e,"f")}get disabled(){return i(this,g,"f")}set disabled(e){n(this,g,e,"f")}get onlyVisibleOnHover(){return i(this,f,"f")}set onlyVisibleOnHover(e){n(this,f,e,"f")}get persistWhenChecked(){return i(this,_,"f")}set persistWhenChecked(e){n(this,_,e,"f")}get animateSelection(){return i(this,C,"f")}set animateSelection(e){n(this,C,e,"f")}render(){const e={"icon-selector":!0,"icon-selector--checked":this.checked,"only-visible-on-hover":this._shouldOnlyVisibleOnHover,"persist-when-checked":this._shouldPersistWhenChecked,"animate-selection":this._shouldAnimate,"transitions-ready":this._transitionsReady,"just-toggled":this._justToggled},t=this.checked?this.checkedLabel:this.uncheckedLabel;return l`
|
|
131
135
|
<button
|
|
132
136
|
type="button"
|
|
133
137
|
class=${d(e)}
|
|
@@ -146,5 +150,5 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
146
150
|
<slot name="icon-checked">${k(m)}</slot>
|
|
147
151
|
</span>
|
|
148
152
|
</button>
|
|
149
|
-
`}_handleClick(e){this.disabled||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._emitChange(e))}_handleKeydown(e){this.disabled||" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._emitChange(e))}_emitChange(e){this.dispatchEvent(new CustomEvent("on-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,value:this.value,origEvent:e}}))}firstUpdated(){this.
|
|
153
|
+
`}_handleClick(e){this.disabled||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._justToggled=!0,this._emitChange(e))}_handleKeydown(e){this.disabled||" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),e.stopPropagation(),this.checked=!this.checked,this._justToggled=!0,this._emitChange(e))}_emitChange(e){this.dispatchEvent(new CustomEvent("on-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,value:this.value,origEvent:e}}))}firstUpdated(){this._readCSSFlags(),this._resolveFlags(),this.requestUpdate()}updated(){this._shouldOnlyVisibleOnHover&&!this._transitionsReady&&requestAnimationFrame((()=>{this._transitionsReady=!0,this.requestUpdate()}))}_readCSSFlags(){const e=getComputedStyle(this),t=t=>{const s=e.getPropertyValue(t).trim();return"1"===s||"true"===s};this._cssAnimate=t("--kyn-icon-selector-animate-selection"),this._cssOnlyVisibleOnHover=t("--kyn-icon-selector-only-visible-on-hover"),this._cssPersistWhenChecked=t("--kyn-icon-selector-persist-when-checked")}willUpdate(e){(e.has("animateSelection")||e.has("onlyVisibleOnHover")||e.has("persistWhenChecked"))&&this._resolveFlags()}_resolveFlags(){this._shouldAnimate=this.animateSelection||this._cssAnimate,this._shouldOnlyVisibleOnHover=this.onlyVisibleOnHover||this._cssOnlyVisibleOnHover,this._shouldPersistWhenChecked=this.persistWhenChecked||this._cssPersistWhenChecked}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._handleHostClick),this._readCSSFlags(),this._resolveFlags()}disconnectedCallback(){this.removeEventListener("click",this._handleHostClick),super.disconnectedCallback()}},c=new WeakMap,y=new WeakMap,b=new WeakMap,v=new WeakMap,g=new WeakMap,f=new WeakMap,_=new WeakMap,C=new WeakMap,e(S,"IconSelector"),(()=>{var e;const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=A[Symbol.metadata])&&void 0!==e?e:null):void 0;W=[h({type:Boolean,reflect:!0})],w=[h({type:String})],x=[h({type:String})],H=[h({type:String})],j=[h({type:Boolean,reflect:!0})],L=[h({type:Boolean,reflect:!0})],V=[h({type:Boolean})],P=[h({type:Boolean})],t(S,null,W,{kind:"accessor",name:"checked",static:!1,private:!1,access:{has:e=>"checked"in e,get:e=>e.checked,set:(e,t)=>{e.checked=t}},metadata:s},M,R),t(S,null,w,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:s},E,B),t(S,null,x,{kind:"accessor",name:"checkedLabel",static:!1,private:!1,access:{has:e=>"checkedLabel"in e,get:e=>e.checkedLabel,set:(e,t)=>{e.checkedLabel=t}},metadata:s},T,U),t(S,null,H,{kind:"accessor",name:"uncheckedLabel",static:!1,private:!1,access:{has:e=>"uncheckedLabel"in e,get:e=>e.uncheckedLabel,set:(e,t)=>{e.uncheckedLabel=t}},metadata:s},q,z),t(S,null,j,{kind:"accessor",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:s},D,K),t(S,null,L,{kind:"accessor",name:"onlyVisibleOnHover",static:!1,private:!1,access:{has:e=>"onlyVisibleOnHover"in e,get:e=>e.onlyVisibleOnHover,set:(e,t)=>{e.onlyVisibleOnHover=t}},metadata:s},I,G),t(S,null,V,{kind:"accessor",name:"persistWhenChecked",static:!1,private:!1,access:{has:e=>"persistWhenChecked"in e,get:e=>e.persistWhenChecked,set:(e,t)=>{e.persistWhenChecked=t}},metadata:s},J,N),t(S,null,P,{kind:"accessor",name:"animateSelection",static:!1,private:!1,access:{has:e=>"animateSelection"in e,get:e=>e.animateSelection,set:(e,t)=>{e.animateSelection=t}},metadata:s},Q,X),t(null,O={value:S},F,{kind:"class",name:S.name,metadata:s},null,$),S=O.value,s&&Object.defineProperty(S,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s})})(),S.styles=o(u),S.shadowRootOptions={...a.shadowRootOptions,delegatesFocus:!0},s(S,$),S})();export{y as IconSelector};
|
|
150
154
|
//# sourceMappingURL=iconSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelector.js","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport IconSelectorScss from './iconSelector.scss?inline';\n\nimport defaultUncheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend.svg';\nimport defaultCheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend-filled.svg';\n\n/**\n * Icon Selector - A checkbox-style toggle using icons for visual states.\n * Primarily designed for favorite/unfavorite functionality.\n *\n * @fires on-change - Emits when the checked state changes. Detail includes checked (boolean), value (string), and origEvent.\n * @slot icon-unchecked - Optional icon for unchecked state. Defaults to star outline.\n * @slot icon-checked - Optional icon for checked state. Defaults to filled star.\n */\n@customElement('kyn-icon-selector')\nexport class IconSelector extends LitElement {\n static override styles = unsafeCSS(IconSelectorScss);\n\n /** @ignore */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /** Checked/selected state. */\n @property({ type: Boolean, reflect: true })\n accessor checked = false;\n\n /** Value associated with this selector, useful for identifying the item. */\n @property({ type: String })\n accessor value = '';\n\n /** Accessible label when checked. */\n @property({ type: String })\n accessor checkedLabel = 'Remove from favorites';\n\n /** Accessible label when unchecked. */\n @property({ type: String })\n accessor uncheckedLabel = 'Add to favorites';\n\n /** Disabled state. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /**\n * When true, the icon is only visible when the parent element is hovered.\n * Visibility is controlled via CSS on the parent component.\n * Can also be set via `--kyn-icon-selector-only-visible-on-hover: 1` on an ancestor.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked items remain visible even when onlyVisibleOnHover is enabled.\n * Useful for showing users which items they've already favorited.\n * Can also be set via `--kyn-icon-selector-persist-when-checked: 1` on an ancestor.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /**\n * Enables a subtle pop/crossfade animation when toggling checked state.\n * Can also be enabled for all descendants by setting the CSS custom property\n * `--kyn-icon-selector-animate-selection: 1` on any ancestor element.\n */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldAnimate = false;\n private _shouldOnlyVisibleOnHover = false;\n private _shouldPersistWhenChecked = false;\n\n override render() {\n const classes = {\n 'icon-selector': true,\n 'icon-selector--checked': this.checked,\n 'only-visible-on-hover': this._shouldOnlyVisibleOnHover,\n 'persist-when-checked': this._shouldPersistWhenChecked,\n 'animate-selection': this._shouldAnimate,\n };\n\n const currentLabel = this.checked ? this.checkedLabel : this.uncheckedLabel;\n\n return html`\n <button\n type=\"button\"\n class=${classMap(classes)}\n role=\"checkbox\"\n aria-checked=${this.checked}\n aria-label=${currentLabel}\n title=${currentLabel}\n ?disabled=${this.disabled}\n @click=${this._handleClick}\n @keydown=${this._handleKeydown}\n >\n <span class=\"icon icon--unchecked\">\n <slot name=\"icon-unchecked\">${unsafeSVG(defaultUncheckedIcon)}</slot>\n </span>\n <span class=\"icon icon--checked\">\n <slot name=\"icon-checked\">${unsafeSVG(defaultCheckedIcon)}</slot>\n </span>\n </button>\n `;\n }\n\n private _handleClick(e: Event) {\n if (this.disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.checked = !this.checked;\n this._emitChange(e);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.disabled) return;\n\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n this.checked = !this.checked;\n this._emitChange(e);\n }\n }\n\n private _emitChange(origEvent: Event) {\n this.dispatchEvent(\n new CustomEvent('on-change', {\n bubbles: true,\n composed: true,\n detail: {\n checked: this.checked,\n value: this.value,\n origEvent,\n },\n })\n );\n }\n\n /**\n * Stop click events from bubbling up to parent elements (e.g., anchor tags).\n * This ensures clicking the icon-selector doesn't trigger navigation.\n * @internal\n */\n private _handleHostClick = (e: Event) => {\n e.stopPropagation();\n };\n\n override firstUpdated() {\n // Resolve again after first paint in case connectedCallback was too early.\n if (!this._cssResolved) {\n this._readCSSFlags();\n this._resolveFlags();\n this.requestUpdate();\n }\n }\n\n private _cssResolved = false;\n\n private _readCSSFlags() {\n const styles = getComputedStyle(this);\n const cssFlag = (prop: string) => {\n const val = styles.getPropertyValue(prop).trim();\n return val === '1' || val === 'true';\n };\n this._cssAnimate = cssFlag('--kyn-icon-selector-animate-selection');\n this._cssOnlyVisibleOnHover = cssFlag(\n '--kyn-icon-selector-only-visible-on-hover'\n );\n this._cssPersistWhenChecked = cssFlag(\n '--kyn-icon-selector-persist-when-checked'\n );\n this._cssResolved = true;\n }\n\n override willUpdate(changedProps: Map<string, unknown>) {\n if (\n changedProps.has('animateSelection') ||\n changedProps.has('onlyVisibleOnHover') ||\n changedProps.has('persistWhenChecked')\n ) {\n this._resolveFlags();\n }\n }\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssAnimate = false;\n private _cssOnlyVisibleOnHover = false;\n private _cssPersistWhenChecked = false;\n\n private _resolveFlags() {\n this._shouldAnimate = this.animateSelection || this._cssAnimate;\n this._shouldOnlyVisibleOnHover =\n this.onlyVisibleOnHover || this._cssOnlyVisibleOnHover;\n this._shouldPersistWhenChecked =\n this.persistWhenChecked || this._cssPersistWhenChecked;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._handleHostClick);\n // Read CSS custom properties early so the first render has correct classes.\n // Prevents blink where icons are briefly visible before only-visible-on-hover applies.\n this._readCSSFlags();\n this._resolveFlags();\n }\n\n override disconnectedCallback() {\n this.removeEventListener('click', this._handleHostClick);\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector': IconSelector;\n }\n}\n"],"names":["IconSelector","customElement","LitElement","_classThis","_classSuper","_IconSelector_checked_accessor_storage","set","this","__runInitializers","_checked_initializers","_IconSelector_value_accessor_storage","_checked_extraInitializers","_value_initializers","_IconSelector_checkedLabel_accessor_storage","_value_extraInitializers","_checkedLabel_initializers","_IconSelector_uncheckedLabel_accessor_storage","_checkedLabel_extraInitializers","_uncheckedLabel_initializers","_IconSelector_disabled_accessor_storage","_uncheckedLabel_extraInitializers","_disabled_initializers","_IconSelector_onlyVisibleOnHover_accessor_storage","_disabled_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelector_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelector_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_shouldAnimate","_animateSelection_extraInitializers","_shouldOnlyVisibleOnHover","_shouldPersistWhenChecked","_handleHostClick","e","stopPropagation","_cssResolved","_cssAnimate","_cssOnlyVisibleOnHover","_cssPersistWhenChecked","checked","__classPrivateFieldGet","value","__classPrivateFieldSet","checkedLabel","uncheckedLabel","disabled","onlyVisibleOnHover","persistWhenChecked","animateSelection","render","classes","currentLabel","html","classMap","_handleClick","_handleKeydown","unsafeSVG","defaultUncheckedIcon","defaultCheckedIcon","preventDefault","_emitChange","key","origEvent","dispatchEvent","CustomEvent","bubbles","composed","detail","firstUpdated","_readCSSFlags","_resolveFlags","requestUpdate","styles","getComputedStyle","cssFlag","prop","val","getPropertyValue","trim","willUpdate","changedProps","has","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","property","type","Boolean","reflect","_value_decorators","String","_checkedLabel_decorators","_uncheckedLabel_decorators","_persistWhenChecked_decorators","_animateSelection_decorators","__esDecorate","_checked_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","unsafeCSS","IconSelectorScss","shadowRootOptions","delegatesFocus"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iconSelector.js","sources":["../../../../src/components/reusable/iconSelector/iconSelector.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport IconSelectorScss from './iconSelector.scss?inline';\n\nimport defaultUncheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend.svg';\nimport defaultCheckedIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/recommend-filled.svg';\n\n/**\n * Icon Selector - A checkbox-style toggle using icons for visual states.\n * Primarily designed for favorite/unfavorite functionality.\n *\n * @fires on-change - Emits when the checked state changes. Detail includes checked (boolean), value (string), and origEvent.\n * @slot icon-unchecked - Optional icon for unchecked state. Defaults to star outline.\n * @slot icon-checked - Optional icon for checked state. Defaults to filled star.\n */\n@customElement('kyn-icon-selector')\nexport class IconSelector extends LitElement {\n static override styles = unsafeCSS(IconSelectorScss);\n\n /** @ignore */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /** Checked/selected state. */\n @property({ type: Boolean, reflect: true })\n accessor checked = false;\n\n /** Value associated with this selector, useful for identifying the item. */\n @property({ type: String })\n accessor value = '';\n\n /** Accessible label when checked. */\n @property({ type: String })\n accessor checkedLabel = 'Remove from favorites';\n\n /** Accessible label when unchecked. */\n @property({ type: String })\n accessor uncheckedLabel = 'Add to favorites';\n\n /** Disabled state. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /**\n * When true, the icon is only visible when the parent element is hovered.\n * Visibility is controlled via CSS on the parent component.\n * Can also be set via `--kyn-icon-selector-only-visible-on-hover: 1` on an ancestor.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked items remain visible even when onlyVisibleOnHover is enabled.\n * Useful for showing users which items they've already favorited.\n * Can also be set via `--kyn-icon-selector-persist-when-checked: 1` on an ancestor.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /**\n * Enables a subtle pop/crossfade animation when toggling checked state.\n * Can also be enabled for all descendants by setting the CSS custom property\n * `--kyn-icon-selector-animate-selection: 1` on any ancestor element.\n */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldAnimate = false;\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldOnlyVisibleOnHover = false;\n /** @internal Resolved flags (prop OR inherited CSS custom property). */\n private _shouldPersistWhenChecked = false;\n\n /** @internal Suppresses opacity transition until initial state is painted. */\n private _transitionsReady = false;\n\n /** @internal Set on user interaction so animation only plays on deliberate toggles. */\n private _justToggled = false;\n\n override render() {\n const classes = {\n 'icon-selector': true,\n 'icon-selector--checked': this.checked,\n 'only-visible-on-hover': this._shouldOnlyVisibleOnHover,\n 'persist-when-checked': this._shouldPersistWhenChecked,\n 'animate-selection': this._shouldAnimate,\n 'transitions-ready': this._transitionsReady,\n 'just-toggled': this._justToggled,\n };\n\n const currentLabel = this.checked ? this.checkedLabel : this.uncheckedLabel;\n\n return html`\n <button\n type=\"button\"\n class=${classMap(classes)}\n role=\"checkbox\"\n aria-checked=${this.checked}\n aria-label=${currentLabel}\n title=${currentLabel}\n ?disabled=${this.disabled}\n @click=${this._handleClick}\n @keydown=${this._handleKeydown}\n >\n <span class=\"icon icon--unchecked\">\n <slot name=\"icon-unchecked\">${unsafeSVG(defaultUncheckedIcon)}</slot>\n </span>\n <span class=\"icon icon--checked\">\n <slot name=\"icon-checked\">${unsafeSVG(defaultCheckedIcon)}</slot>\n </span>\n </button>\n `;\n }\n\n private _handleClick(e: Event) {\n if (this.disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.checked = !this.checked;\n this._justToggled = true;\n this._emitChange(e);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.disabled) return;\n\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n this.checked = !this.checked;\n this._justToggled = true;\n this._emitChange(e);\n }\n }\n\n private _emitChange(origEvent: Event) {\n this.dispatchEvent(\n new CustomEvent('on-change', {\n bubbles: true,\n composed: true,\n detail: {\n checked: this.checked,\n value: this.value,\n origEvent,\n },\n })\n );\n }\n\n /**\n * Stop click events from bubbling up to parent elements (e.g., anchor tags).\n * This ensures clicking the icon-selector doesn't trigger navigation.\n * @internal\n */\n private _handleHostClick = (e: Event) => {\n e.stopPropagation();\n };\n\n override firstUpdated() {\n // Re-resolve in case connectedCallback ran before styles were computed.\n this._readCSSFlags();\n this._resolveFlags();\n this.requestUpdate();\n }\n\n override updated() {\n // Enable opacity transitions one frame after the first render that includes\n // the only-visible-on-hover class, so the initial opacity:0 is applied\n // instantly (no flash) and subsequent hover interactions get smooth transitions.\n if (this._shouldOnlyVisibleOnHover && !this._transitionsReady) {\n requestAnimationFrame(() => {\n this._transitionsReady = true;\n this.requestUpdate();\n });\n }\n }\n\n private _readCSSFlags() {\n const styles = getComputedStyle(this);\n const cssFlag = (prop: string) => {\n const val = styles.getPropertyValue(prop).trim();\n return val === '1' || val === 'true';\n };\n this._cssAnimate = cssFlag('--kyn-icon-selector-animate-selection');\n this._cssOnlyVisibleOnHover = cssFlag(\n '--kyn-icon-selector-only-visible-on-hover'\n );\n this._cssPersistWhenChecked = cssFlag(\n '--kyn-icon-selector-persist-when-checked'\n );\n }\n\n override willUpdate(changedProps: Map<string, unknown>) {\n if (\n changedProps.has('animateSelection') ||\n changedProps.has('onlyVisibleOnHover') ||\n changedProps.has('persistWhenChecked')\n ) {\n this._resolveFlags();\n }\n }\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssAnimate = false;\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssOnlyVisibleOnHover = false;\n\n /** @internal Cached CSS custom property values (read once in firstUpdated). */\n private _cssPersistWhenChecked = false;\n\n private _resolveFlags() {\n this._shouldAnimate = this.animateSelection || this._cssAnimate;\n this._shouldOnlyVisibleOnHover =\n this.onlyVisibleOnHover || this._cssOnlyVisibleOnHover;\n this._shouldPersistWhenChecked =\n this.persistWhenChecked || this._cssPersistWhenChecked;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._handleHostClick);\n // Read CSS custom properties early so the first render has correct classes.\n // Prevents blink where icons are briefly visible before only-visible-on-hover applies.\n this._readCSSFlags();\n this._resolveFlags();\n }\n\n override disconnectedCallback() {\n this.removeEventListener('click', this._handleHostClick);\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector': IconSelector;\n }\n}\n"],"names":["IconSelector","customElement","LitElement","_classThis","_classSuper","_IconSelector_checked_accessor_storage","set","this","__runInitializers","_checked_initializers","_IconSelector_value_accessor_storage","_checked_extraInitializers","_value_initializers","_IconSelector_checkedLabel_accessor_storage","_value_extraInitializers","_checkedLabel_initializers","_IconSelector_uncheckedLabel_accessor_storage","_checkedLabel_extraInitializers","_uncheckedLabel_initializers","_IconSelector_disabled_accessor_storage","_uncheckedLabel_extraInitializers","_disabled_initializers","_IconSelector_onlyVisibleOnHover_accessor_storage","_disabled_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelector_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelector_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_shouldAnimate","_animateSelection_extraInitializers","_shouldOnlyVisibleOnHover","_shouldPersistWhenChecked","_transitionsReady","_justToggled","_handleHostClick","e","stopPropagation","_cssAnimate","_cssOnlyVisibleOnHover","_cssPersistWhenChecked","checked","__classPrivateFieldGet","value","__classPrivateFieldSet","checkedLabel","uncheckedLabel","disabled","onlyVisibleOnHover","persistWhenChecked","animateSelection","render","classes","currentLabel","html","classMap","_handleClick","_handleKeydown","unsafeSVG","defaultUncheckedIcon","defaultCheckedIcon","preventDefault","_emitChange","key","origEvent","dispatchEvent","CustomEvent","bubbles","composed","detail","firstUpdated","_readCSSFlags","_resolveFlags","requestUpdate","updated","requestAnimationFrame","styles","getComputedStyle","cssFlag","prop","val","getPropertyValue","trim","willUpdate","changedProps","has","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","property","type","Boolean","reflect","_value_decorators","String","_checkedLabel_decorators","_uncheckedLabel_decorators","_persistWhenChecked_decorators","_animateSelection_decorators","__esDecorate","_checked_decorators","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","unsafeCSS","IconSelectorScss","shadowRootOptions","delegatesFocus"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelectorGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAMlD;;;;;;GAMG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAoC;IAE1D,6BAA6B;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAE9B,wCAAwC;IAExC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,mDAAmD;IAEnD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE3D;;;OAGG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;OAEG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,4FAA4F;IAE5F,QAAQ,CAAC,gBAAgB,UAAS;IAElC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAExC,iBAAiB;IAQjB,oBAAoB;IAQpB,MAAM;IAQf;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,kBAAkB,CA+BxB;IAEO,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAWzD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,iBAAiB,CAAC;KAC9C;CACF"}
|
|
1
|
+
{"version":3,"file":"iconSelectorGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAMlD;;;;;;GAMG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAoC;IAE1D,6BAA6B;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAE9B,wCAAwC;IAExC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,mDAAmD;IAEnD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE3D;;;OAGG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC;;OAEG;IAEH,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,4FAA4F;IAE5F,QAAQ,CAAC,gBAAgB,UAAS;IAElC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAExC,iBAAiB;IAQjB,oBAAoB;IAQpB,MAAM;IAQf;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,kBAAkB,CA+BxB;IAEO,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAWzD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,iBAAiB,CAAC;KAC9C;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconSelectorGroup.js","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport IconSelectorGroupScss from './iconSelectorGroup.scss?inline';\n\nimport type { IconSelector } from './iconSelector';\n\n/**\n * Icon Selector Group - A container for managing multiple icon selectors with multi-select functionality.\n *\n * @fires on-change - Emits when any icon selector's state changes.\n * `detail: { value: string[], origEvent: Event }`\n * @slot unnamed - Slot for icon-selector elements.\n */\n@customElement('kyn-icon-selector-group')\nexport class IconSelectorGroup extends LitElement {\n static override styles = unsafeCSS(IconSelectorGroupScss);\n\n /** Selected values array. */\n @property({ type: Array })\n accessor value: string[] = [];\n\n /** Disabled state for all selectors. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /** Stack direction: 'vertical' or 'horizontal'. */\n @property({ type: String, reflect: true })\n accessor direction: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * When true, all child icon-selectors are only visible when the parent element is hovered.\n * This propagates the onlyVisibleOnHover attribute to all children.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked child icon-selectors remain visible even when onlyVisibleOnHover is enabled.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /** Enables a subtle pop/crossfade animation when toggling checked state on all children. */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** Slotted icon selectors.\n * @internal\n */\n @state()\n private accessor _selectors: IconSelector[] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n }\n\n override disconnectedCallback() {\n this.removeEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n super.disconnectedCallback();\n }\n\n override render() {\n return html`\n <div class=\"icon-selector-group icon-selector-group--${this.direction}\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n\n /**\n * @internal\n */\n private _handleSlotChange() {\n this._selectors = Array.from(\n this.querySelectorAll('kyn-icon-selector')\n ) as IconSelector[];\n this._syncChildrenState();\n }\n\n private _syncChildrenState() {\n this._selectors.forEach((selector) => {\n selector.disabled = this.disabled;\n selector.onlyVisibleOnHover = this.onlyVisibleOnHover;\n selector.persistWhenChecked = this.persistWhenChecked;\n selector.animateSelection = this.animateSelection;\n selector.checked = this.value.includes(selector.value);\n });\n }\n\n /**\n * @internal\n * Re-entrancy guard for event dispatch.\n */\n private _dispatching = false;\n\n private _handleChildChange = (e: CustomEvent) => {\n // prevent re-entrancy: the group's own dispatched on-change\n // re-triggers this listener since it fires on the same element.\n if (this._dispatching) return;\n\n // Stop the child event from bubbling further\n e.stopPropagation();\n\n const { checked, value: selectorValue } = e.detail;\n let newValue = [...this.value];\n\n if (checked && !newValue.includes(selectorValue)) {\n newValue.push(selectorValue);\n } else if (!checked) {\n newValue = newValue.filter((v) => v !== selectorValue);\n }\n\n this.value = newValue;\n\n // Emit group change event\n this._dispatching = true;\n this.dispatchEvent(\n new CustomEvent('on-change', {\n composed: true,\n detail: {\n value: this.value,\n origEvent: e,\n },\n })\n );\n this._dispatching = false;\n };\n\n override updated(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('value') ||\n changedProperties.has('disabled') ||\n changedProperties.has('onlyVisibleOnHover') ||\n changedProperties.has('persistWhenChecked') ||\n changedProperties.has('animateSelection')\n ) {\n this._syncChildrenState();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector-group': IconSelectorGroup;\n }\n}\n"],"names":["IconSelectorGroup","customElement","LitElement","_classThis","_classSuper","_IconSelectorGroup_value_accessor_storage","set","this","__runInitializers","_value_initializers","_IconSelectorGroup_disabled_accessor_storage","_value_extraInitializers","_disabled_initializers","_IconSelectorGroup_direction_accessor_storage","_disabled_extraInitializers","_direction_initializers","_IconSelectorGroup_onlyVisibleOnHover_accessor_storage","_direction_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelectorGroup_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelectorGroup_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_IconSelectorGroup__selectors_accessor_storage","_animateSelection_extraInitializers","__selectors_initializers","_dispatching","__selectors_extraInitializers","_handleChildChange","e","stopPropagation","checked","value","selectorValue","detail","newValue","includes","push","filter","v","dispatchEvent","CustomEvent","composed","origEvent","__classPrivateFieldGet","__classPrivateFieldSet","disabled","direction","onlyVisibleOnHover","persistWhenChecked","animateSelection","_selectors","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","render","html","_handleSlotChange","Array","from","querySelectorAll","_syncChildrenState","forEach","selector","updated","changedProperties","has","_value_decorators","property","type","Boolean","reflect","String","_persistWhenChecked_decorators","_animateSelection_decorators","__selectors_decorators","state","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_direction_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","IconSelectorGroupScss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iconSelectorGroup.js","sources":["../../../../src/components/reusable/iconSelector/iconSelectorGroup.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport IconSelectorGroupScss from './iconSelectorGroup.scss?inline';\n\nimport type { IconSelector } from './iconSelector';\n\n/**\n * Icon Selector Group - A container for managing multiple icon selectors with multi-select functionality.\n *\n * @fires on-change - Emits when any icon selector's state changes.\n * `detail: { value: string[], origEvent: Event }`\n * @slot unnamed - Slot for icon-selector elements.\n */\n@customElement('kyn-icon-selector-group')\nexport class IconSelectorGroup extends LitElement {\n static override styles = unsafeCSS(IconSelectorGroupScss);\n\n /** Selected values array. */\n @property({ type: Array })\n accessor value: string[] = [];\n\n /** Disabled state for all selectors. */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /** Stack direction: 'vertical' or 'horizontal'. */\n @property({ type: String, reflect: true })\n accessor direction: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * When true, all child icon-selectors are only visible when the parent element is hovered.\n * This propagates the onlyVisibleOnHover attribute to all children.\n */\n @property({ type: Boolean, reflect: true })\n accessor onlyVisibleOnHover = false;\n\n /**\n * When true, checked child icon-selectors remain visible even when onlyVisibleOnHover is enabled.\n */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n /** Enables a subtle pop/crossfade animation when toggling checked state on all children. */\n @property({ type: Boolean })\n accessor animateSelection = false;\n\n /** Slotted icon selectors.\n * @internal\n */\n @state()\n private accessor _selectors: IconSelector[] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n }\n\n override disconnectedCallback() {\n this.removeEventListener(\n 'on-change',\n this._handleChildChange as EventListener\n );\n super.disconnectedCallback();\n }\n\n override render() {\n return html`\n <div class=\"icon-selector-group icon-selector-group--${this.direction}\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n\n /**\n * @internal\n */\n private _handleSlotChange() {\n this._selectors = Array.from(\n this.querySelectorAll('kyn-icon-selector')\n ) as IconSelector[];\n this._syncChildrenState();\n }\n\n private _syncChildrenState() {\n this._selectors.forEach((selector) => {\n selector.disabled = this.disabled;\n selector.onlyVisibleOnHover = this.onlyVisibleOnHover;\n selector.persistWhenChecked = this.persistWhenChecked;\n selector.animateSelection = this.animateSelection;\n selector.checked = this.value.includes(selector.value);\n });\n }\n\n /**\n * @internal\n * Re-entrancy guard for event dispatch.\n */\n private _dispatching = false;\n\n /**\n * @internal\n */\n private _handleChildChange = (e: CustomEvent) => {\n // prevent re-entrancy: the group's own dispatched on-change\n // re-triggers this listener since it fires on the same element.\n if (this._dispatching) return;\n\n // Stop the child event from bubbling further\n e.stopPropagation();\n\n const { checked, value: selectorValue } = e.detail;\n let newValue = [...this.value];\n\n if (checked && !newValue.includes(selectorValue)) {\n newValue.push(selectorValue);\n } else if (!checked) {\n newValue = newValue.filter((v) => v !== selectorValue);\n }\n\n this.value = newValue;\n\n // Emit group change event\n this._dispatching = true;\n this.dispatchEvent(\n new CustomEvent('on-change', {\n composed: true,\n detail: {\n value: this.value,\n origEvent: e,\n },\n })\n );\n this._dispatching = false;\n };\n\n override updated(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('value') ||\n changedProperties.has('disabled') ||\n changedProperties.has('onlyVisibleOnHover') ||\n changedProperties.has('persistWhenChecked') ||\n changedProperties.has('animateSelection')\n ) {\n this._syncChildrenState();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-icon-selector-group': IconSelectorGroup;\n }\n}\n"],"names":["IconSelectorGroup","customElement","LitElement","_classThis","_classSuper","_IconSelectorGroup_value_accessor_storage","set","this","__runInitializers","_value_initializers","_IconSelectorGroup_disabled_accessor_storage","_value_extraInitializers","_disabled_initializers","_IconSelectorGroup_direction_accessor_storage","_disabled_extraInitializers","_direction_initializers","_IconSelectorGroup_onlyVisibleOnHover_accessor_storage","_direction_extraInitializers","_onlyVisibleOnHover_initializers","_IconSelectorGroup_persistWhenChecked_accessor_storage","_onlyVisibleOnHover_extraInitializers","_persistWhenChecked_initializers","_IconSelectorGroup_animateSelection_accessor_storage","_persistWhenChecked_extraInitializers","_animateSelection_initializers","_IconSelectorGroup__selectors_accessor_storage","_animateSelection_extraInitializers","__selectors_initializers","_dispatching","__selectors_extraInitializers","_handleChildChange","e","stopPropagation","checked","value","selectorValue","detail","newValue","includes","push","filter","v","dispatchEvent","CustomEvent","composed","origEvent","__classPrivateFieldGet","__classPrivateFieldSet","disabled","direction","onlyVisibleOnHover","persistWhenChecked","animateSelection","_selectors","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","render","html","_handleSlotChange","Array","from","querySelectorAll","_syncChildrenState","forEach","selector","updated","changedProperties","has","_value_decorators","property","type","Boolean","reflect","String","_persistWhenChecked_decorators","_animateSelection_decorators","__selectors_decorators","state","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","_direction_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","IconSelectorGroupScss"],"mappings":"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"}
|