@kyndryl-design-system/shidoka-applications 2.80.0 → 2.80.1
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 +21 -0
- package/components/reusable/iconSelector/iconSelector.d.ts.map +1 -1
- package/components/reusable/iconSelector/iconSelector.js +51 -4
- package/components/reusable/iconSelector/iconSelector.js.map +1 -1
- package/components/reusable/iconSelector/iconSelectorGroup.d.ts +8 -0
- package/components/reusable/iconSelector/iconSelectorGroup.d.ts.map +1 -1
- package/components/reusable/iconSelector/iconSelectorGroup.js +3 -3
- package/components/reusable/iconSelector/iconSelectorGroup.js.map +1 -1
- package/package.json +1 -1
|
@@ -29,13 +29,25 @@ export declare class IconSelector extends LitElement {
|
|
|
29
29
|
/**
|
|
30
30
|
* When true, the icon is only visible when the parent element is hovered.
|
|
31
31
|
* Visibility is controlled via CSS on the parent component.
|
|
32
|
+
* Can also be set via `--kyn-icon-selector-only-visible-on-hover: 1` on an ancestor.
|
|
32
33
|
*/
|
|
33
34
|
accessor onlyVisibleOnHover: boolean;
|
|
34
35
|
/**
|
|
35
36
|
* When true, checked items remain visible even when onlyVisibleOnHover is enabled.
|
|
36
37
|
* Useful for showing users which items they've already favorited.
|
|
38
|
+
* Can also be set via `--kyn-icon-selector-persist-when-checked: 1` on an ancestor.
|
|
37
39
|
*/
|
|
38
40
|
accessor persistWhenChecked: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Enables a subtle pop/crossfade animation when toggling checked state.
|
|
43
|
+
* Can also be enabled for all descendants by setting the CSS custom property
|
|
44
|
+
* `--kyn-icon-selector-animate-selection: 1` on any ancestor element.
|
|
45
|
+
*/
|
|
46
|
+
accessor animateSelection: boolean;
|
|
47
|
+
/** @internal Resolved flags (prop OR inherited CSS custom property). */
|
|
48
|
+
private _shouldAnimate;
|
|
49
|
+
private _shouldOnlyVisibleOnHover;
|
|
50
|
+
private _shouldPersistWhenChecked;
|
|
39
51
|
render(): import("lit-html").TemplateResult<1>;
|
|
40
52
|
private _handleClick;
|
|
41
53
|
private _handleKeydown;
|
|
@@ -46,6 +58,15 @@ export declare class IconSelector extends LitElement {
|
|
|
46
58
|
* @internal
|
|
47
59
|
*/
|
|
48
60
|
private _handleHostClick;
|
|
61
|
+
firstUpdated(): void;
|
|
62
|
+
private _cssResolved;
|
|
63
|
+
private _readCSSFlags;
|
|
64
|
+
willUpdate(changedProps: Map<string, unknown>): void;
|
|
65
|
+
/** @internal Cached CSS custom property values (read once in firstUpdated). */
|
|
66
|
+
private _cssAnimate;
|
|
67
|
+
private _cssOnlyVisibleOnHover;
|
|
68
|
+
private _cssPersistWhenChecked;
|
|
69
|
+
private _resolveFlags;
|
|
49
70
|
connectedCallback(): void;
|
|
50
71
|
disconnectedCallback(): void;
|
|
51
72
|
}
|
|
@@ -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
|
|
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;IAEjC,MAAM;IAiCf,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEO,YAAY;IASrB,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,aAAa;IAgBZ,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAUtD,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,sBAAsB,CAAS;IACvC,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 c}from"tslib";import{css as n,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
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as c}from"tslib";import{css as n,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=n`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -34,6 +34,10 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
34
34
|
vertical-align: middle;
|
|
35
35
|
line-height: 0;
|
|
36
36
|
}
|
|
37
|
+
.icon-selector.animate-selection {
|
|
38
|
+
display: inline-grid;
|
|
39
|
+
place-items: center;
|
|
40
|
+
}
|
|
37
41
|
.icon-selector:focus-visible {
|
|
38
42
|
outline-color: var(--kd-color-border-variants-focus);
|
|
39
43
|
}
|
|
@@ -80,7 +84,50 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
80
84
|
}
|
|
81
85
|
.icon-selector--checked .icon--checked {
|
|
82
86
|
display: flex;
|
|
83
|
-
}
|
|
87
|
+
}
|
|
88
|
+
.animate-selection .icon {
|
|
89
|
+
grid-area: 1/1;
|
|
90
|
+
transition: opacity 200ms ease-out, transform 200ms ease-out;
|
|
91
|
+
}
|
|
92
|
+
.animate-selection .icon--unchecked {
|
|
93
|
+
display: flex;
|
|
94
|
+
opacity: 1;
|
|
95
|
+
transform: scale(1);
|
|
96
|
+
}
|
|
97
|
+
.animate-selection .icon-selector--checked .icon--unchecked, .animate-selection.icon-selector--checked .icon--unchecked {
|
|
98
|
+
display: flex;
|
|
99
|
+
opacity: 0;
|
|
100
|
+
transform: scale(0.6);
|
|
101
|
+
}
|
|
102
|
+
.animate-selection .icon--checked {
|
|
103
|
+
display: flex;
|
|
104
|
+
opacity: 0;
|
|
105
|
+
transform: scale(0.6);
|
|
106
|
+
}
|
|
107
|
+
.animate-selection .icon-selector--checked .icon--checked, .animate-selection.icon-selector--checked .icon--checked {
|
|
108
|
+
display: flex;
|
|
109
|
+
opacity: 1;
|
|
110
|
+
transform: scale(1);
|
|
111
|
+
animation: icon-pop 450ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@keyframes icon-pop {
|
|
115
|
+
0% {
|
|
116
|
+
transform: scale(0);
|
|
117
|
+
opacity: 0;
|
|
118
|
+
}
|
|
119
|
+
50% {
|
|
120
|
+
transform: scale(1.35);
|
|
121
|
+
opacity: 1;
|
|
122
|
+
}
|
|
123
|
+
75% {
|
|
124
|
+
transform: scale(0.9);
|
|
125
|
+
}
|
|
126
|
+
100% {
|
|
127
|
+
transform: scale(1);
|
|
128
|
+
opacity: 1;
|
|
129
|
+
}
|
|
130
|
+
}`;let b=(()=>{var n,b,v,y,f,g,_,C;let O,S,W,w,x,H,L,V,P,j,$=[r("kyn-icon-selector")],F=[],M=a,A=[],E=[],R=[],B=[],U=[],z=[],D=[],K=[],q=[],I=[],G=[],J=[],N=[],Q=[],T=[],X=[];return S=class extends M{constructor(){super(...arguments),n.set(this,s(this,A,!1)),b.set(this,(s(this,E),s(this,R,""))),v.set(this,(s(this,B),s(this,U,"Remove from favorites"))),y.set(this,(s(this,z),s(this,D,"Add to favorites"))),f.set(this,(s(this,K),s(this,q,!1))),g.set(this,(s(this,I),s(this,G,!1))),_.set(this,(s(this,J),s(this,N,!1))),C.set(this,(s(this,Q),s(this,T,!1))),this._shouldAnimate=(s(this,X),!1),this._shouldOnlyVisibleOnHover=!1,this._shouldPersistWhenChecked=!1,this._handleHostClick=e=>{e.stopPropagation()},this._cssResolved=!1,this._cssAnimate=!1,this._cssOnlyVisibleOnHover=!1,this._cssPersistWhenChecked=!1}get checked(){return i(this,n,"f")}set checked(e){c(this,n,e,"f")}get value(){return i(this,b,"f")}set value(e){c(this,b,e,"f")}get checkedLabel(){return i(this,v,"f")}set checkedLabel(e){c(this,v,e,"f")}get uncheckedLabel(){return i(this,y,"f")}set uncheckedLabel(e){c(this,y,e,"f")}get disabled(){return i(this,f,"f")}set disabled(e){c(this,f,e,"f")}get onlyVisibleOnHover(){return i(this,g,"f")}set onlyVisibleOnHover(e){c(this,g,e,"f")}get persistWhenChecked(){return i(this,_,"f")}set persistWhenChecked(e){c(this,_,e,"f")}get animateSelection(){return i(this,C,"f")}set animateSelection(e){c(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},t=this.checked?this.checkedLabel:this.uncheckedLabel;return l`
|
|
84
131
|
<button
|
|
85
132
|
type="button"
|
|
86
133
|
class=${d(e)}
|
|
@@ -96,8 +143,8 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
96
143
|
<slot name="icon-unchecked">${k(p)}</slot>
|
|
97
144
|
</span>
|
|
98
145
|
<span class="icon icon--checked">
|
|
99
|
-
<slot name="icon-checked">${k(
|
|
146
|
+
<slot name="icon-checked">${k(m)}</slot>
|
|
100
147
|
</span>
|
|
101
148
|
</button>
|
|
102
|
-
`}_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}}))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._handleHostClick)}disconnectedCallback(){this.removeEventListener("click",this._handleHostClick),super.disconnectedCallback()}},n=new WeakMap,
|
|
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._cssResolved||(this._readCSSFlags(),this._resolveFlags(),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"),this._cssResolved=!0}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()}},n=new WeakMap,b=new WeakMap,v=new WeakMap,y=new WeakMap,f=new WeakMap,g=new WeakMap,_=new WeakMap,C=new WeakMap,e(S,"IconSelector"),(()=>{var e;const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=M[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})],L=[h({type:Boolean,reflect:!0})],V=[h({type:Boolean,reflect:!0})],P=[h({type:Boolean})],j=[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},A,E),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},R,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},U,z),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},D,K),t(S,null,L,{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},q,I),t(S,null,V,{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},G,J),t(S,null,P,{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},N,Q),t(S,null,j,{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},T,X),t(null,O={value:S},$,{kind:"class",name:S.name,metadata:s},null,F),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,F),S})();export{b as IconSelector};
|
|
103
150
|
//# 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 */\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 */\n @property({ type: Boolean })\n accessor persistWhenChecked = false;\n\n override render() {\n const classes = {\n 'icon-selector': true,\n 'icon-selector--checked': this.checked,\n 'only-visible-on-hover': this.onlyVisibleOnHover,\n 'persist-when-checked': this.persistWhenChecked,\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 connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._handleHostClick);\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","_handleHostClick","_persistWhenChecked_extraInitializers","e","stopPropagation","checked","__classPrivateFieldGet","value","__classPrivateFieldSet","checkedLabel","uncheckedLabel","disabled","onlyVisibleOnHover","persistWhenChecked","render","classes","currentLabel","html","classMap","_handleClick","_handleKeydown","unsafeSVG","defaultUncheckedIcon","defaultCheckedIcon","preventDefault","_emitChange","key","origEvent","dispatchEvent","CustomEvent","bubbles","composed","detail","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","property","type","Boolean","reflect","_value_decorators","String","_checkedLabel_decorators","_uncheckedLabel_decorators","_persistWhenChecked_decorators","__esDecorate","_checked_decorators","kind","name","static","private","access","has","obj","get","metadata","_metadata","_disabled_decorators","_onlyVisibleOnHover_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","IconSelectorScss","shadowRootOptions","delegatesFocus"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkBaA,EAAY,iDADxBC,EAAc,6BACmBC,+EAARC,EAAA,cAAQC,oCAWvBC,EAAAC,IAAAC,KAAAC,EAAAD,KAAAE,GAAU,IAIVC,EAAAJ,IAAAC,MAAAC,EAAAD,KAAAI,GAAAH,EAAAD,KAAAK,EAAQ,MAIRC,EAAAP,IAAAC,MAAAC,EAAAD,KAAAO,GAAAN,EAAAD,KAAAQ,EAAe,2BAIfC,EAAAV,IAAAC,MAAAC,EAAAD,KAAAU,GAAAT,EAAAD,KAAAW,EAAiB,sBAIjBC,EAAAb,IAAAC,MAAAC,EAAAD,KAAAa,GAAAZ,EAAAD,KAAAc,GAAW,KAOXC,EAAAhB,IAAAC,MAAAC,EAAAD,KAAAgB,GAAAf,EAAAD,KAAAiB,GAAqB,KAOrBC,EAAAnB,IAAAC,MAAAC,EAAAD,KAAAmB,GAAAlB,EAAAD,KAAAoB,GAAqB,KA0EtBpB,KAAAqB,kBAAgBpB,EAAAD,KAAAsB,GAAIC,IAC1BA,EAAEC,iBAAiB,GAzGrB,WAASC,GAAO,OAAAC,EAAA1B,KAAAF,EAAA,IAAA,CAAhB,WAAS2B,CAAOE,GAAAC,EAAA5B,KAAAF,EAAA6B,EAAA,IAAA,CAIhB,SAASA,GAAK,OAAAD,EAAA1B,KAAAG,EAAA,IAAA,CAAd,SAASwB,CAAKA,GAAAC,EAAA5B,KAAAG,EAAAwB,EAAA,IAAA,CAId,gBAASE,GAAY,OAAAH,EAAA1B,KAAAM,EAAA,IAAA,CAArB,gBAASuB,CAAYF,GAAAC,EAAA5B,KAAAM,EAAAqB,EAAA,IAAA,CAIrB,kBAASG,GAAc,OAAAJ,EAAA1B,KAAAS,EAAA,IAAA,CAAvB,kBAASqB,CAAcH,GAAAC,EAAA5B,KAAAS,EAAAkB,EAAA,IAAA,CAIvB,YAASI,GAAQ,OAAAL,EAAA1B,KAAAY,EAAA,IAAA,CAAjB,YAASmB,CAAQJ,GAAAC,EAAA5B,KAAAY,EAAAe,EAAA,IAAA,CAOjB,sBAASK,GAAkB,OAAAN,EAAA1B,KAAAe,EAAA,IAAA,CAA3B,sBAASiB,CAAkBL,GAAAC,EAAA5B,KAAAe,EAAAY,EAAA,IAAA,CAO3B,sBAASM,GAAkB,OAAAP,EAAA1B,KAAAkB,EAAA,IAAA,CAA3B,sBAASe,CAAkBN,GAAAC,EAAA5B,KAAAkB,EAAAS,EAAA,IAAA,CAElB,MAAAO,GACP,MAAMC,EAAU,CACd,iBAAiB,EACjB,yBAA0BnC,KAAKyB,QAC/B,wBAAyBzB,KAAKgC,mBAC9B,uBAAwBhC,KAAKiC,oBAGzBG,EAAepC,KAAKyB,QAAUzB,KAAK6B,aAAe7B,KAAK8B,eAE7D,OAAOO,CAAI;;;gBAGCC,EAASH;;uBAEFnC,KAAKyB;qBACPW;gBACLA;oBACIpC,KAAK+B;iBACR/B,KAAKuC;mBACHvC,KAAKwC;;;wCAGgBC,EAAUC;;;sCAGZD,EAAUE;;;MAMtC,YAAAJ,CAAahB,GACfvB,KAAK+B,WAETR,EAAEqB,iBACFrB,EAAEC,kBAEFxB,KAAKyB,SAAWzB,KAAKyB,QACrBzB,KAAK6C,YAAYtB,IAGX,cAAAiB,CAAejB,GACjBvB,KAAK+B,UAEK,MAAVR,EAAEuB,KAAyB,UAAVvB,EAAEuB,MACrBvB,EAAEqB,iBACFrB,EAAEC,kBACFxB,KAAKyB,SAAWzB,KAAKyB,QACrBzB,KAAK6C,YAAYtB,IAIb,WAAAsB,CAAYE,GAClB/C,KAAKgD,cACH,IAAIC,YAAY,YAAa,CAC3BC,SAAS,EACTC,UAAU,EACVC,OAAQ,CACN3B,QAASzB,KAAKyB,QACdE,MAAO3B,KAAK2B,MACZoB,gBAeC,iBAAAM,GACPC,MAAMD,oBACNrD,KAAKuD,iBAAiB,QAASvD,KAAKqB,kBAG7B,oBAAAmC,GACPxD,KAAKyD,oBAAoB,QAASzD,KAAKqB,kBACvCiC,MAAME,wRApHPE,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAInCC,EAAA,CAAAJ,EAAS,CAAEC,KAAMI,UAIjBC,EAAA,CAAAN,EAAS,CAAEC,KAAMI,UAIjBE,EAAA,CAAAP,EAAS,CAAEC,KAAMI,aAIjBL,EAAS,CAAEC,KAAMC,QAASC,SAAS,QAOnCH,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAOnCK,EAAA,CAAAR,EAAS,CAAEC,KAAMC,WA7BlBO,EAAAvE,EAAA,KAAAwE,EAAA,CAAAC,KAAA,WAAAC,KAAA,UAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAASlD,QAAO1B,IAAA,CAAA4E,EAAAhD,KAAAgD,EAAPlD,QAAOE,CAAA,GAAAkD,SAAAC,GAAA5E,EAAAE,GAIhB+D,EAAAvE,EAAA,KAAAkE,EAAA,CAAAO,KAAA,WAAAC,KAAA,QAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,UAAAA,EAAAC,IAAAD,GAAAA,EAAShD,MAAK5B,IAAA,CAAA4E,EAAAhD,KAAAgD,EAALhD,MAAKA,CAAA,GAAAkD,SAAAC,GAAAzE,EAAAE,GAId4D,EAAAvE,EAAA,KAAAoE,EAAA,CAAAK,KAAA,WAAAC,KAAA,eAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,iBAAAA,EAAAC,IAAAD,GAAAA,EAAS9C,aAAY9B,IAAA,CAAA4E,EAAAhD,KAAAgD,EAAZ9C,aAAYF,CAAA,GAAAkD,SAAAC,GAAAtE,EAAAE,GAIrByD,EAAAvE,EAAA,KAAAqE,EAAA,CAAAI,KAAA,WAAAC,KAAA,iBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,mBAAAA,EAAAC,IAAAD,GAAAA,EAAS7C,eAAc/B,IAAA,CAAA4E,EAAAhD,KAAAgD,EAAd7C,eAAcH,CAAA,GAAAkD,SAAAC,GAAAnE,EAAAE,GAIvBsD,EAAAvE,EAAA,KAAAmF,EAAA,CAAAV,KAAA,WAAAC,KAAA,WAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAAS5C,SAAQhC,IAAA,CAAA4E,EAAAhD,KAAAgD,EAAR5C,SAAQJ,CAAA,GAAAkD,SAAAC,GAAAhE,EAAAE,GAOjBmD,EAAAvE,EAAA,KAAAoF,EAAA,CAAAX,KAAA,WAAAC,KAAA,qBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,uBAAAA,EAAAC,IAAAD,GAAAA,EAAS3C,mBAAkBjC,IAAA,CAAA4E,EAAAhD,KAAAgD,EAAlB3C,mBAAkBL,CAAA,GAAAkD,SAAAC,GAAA7D,EAAAE,GAO3BgD,EAAAvE,EAAA,KAAAsE,EAAA,CAAAG,KAAA,WAAAC,KAAA,qBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,uBAAAA,EAAAC,IAAAD,GAAAA,EAAS1C,mBAAkBlC,IAAA,CAAA4E,EAAAhD,KAAAgD,EAAlB1C,mBAAkBN,CAAA,GAAAkD,SAAAC,GAAA1D,EAAAE,GAzC7B6C,EAAA,KAAAc,EAAA,CAAAtD,MAAA/B,GAAAsF,EAAA,CAAAb,KAAA,QAAAC,KAAA1E,EAAA0E,KAAAO,SAAAC,GAAA,KAAAK,iHACkBvF,EAAAwF,OAASC,EAAUC,GAGnB1F,EAAA2F,kBAAoB,IAC/B5F,EAAW4F,kBACdC,gBAAgB,GANPvF,EAAAL,EAAAuF,MAAY"}
|
|
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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"}
|
|
@@ -19,6 +19,12 @@ export declare class IconSelectorGroup extends LitElement {
|
|
|
19
19
|
* This propagates the onlyVisibleOnHover attribute to all children.
|
|
20
20
|
*/
|
|
21
21
|
accessor onlyVisibleOnHover: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* When true, checked child icon-selectors remain visible even when onlyVisibleOnHover is enabled.
|
|
24
|
+
*/
|
|
25
|
+
accessor persistWhenChecked: boolean;
|
|
26
|
+
/** Enables a subtle pop/crossfade animation when toggling checked state on all children. */
|
|
27
|
+
accessor animateSelection: boolean;
|
|
22
28
|
/** Slotted icon selectors.
|
|
23
29
|
* @internal
|
|
24
30
|
*/
|
|
@@ -33,7 +39,9 @@ export declare class IconSelectorGroup extends LitElement {
|
|
|
33
39
|
private _syncChildrenState;
|
|
34
40
|
/**
|
|
35
41
|
* @internal
|
|
42
|
+
* Re-entrancy guard for event dispatch.
|
|
36
43
|
*/
|
|
44
|
+
private _dispatching;
|
|
37
45
|
private _handleChildChange;
|
|
38
46
|
updated(changedProperties: Map<string, unknown>): void;
|
|
39
47
|
}
|
|
@@ -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,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAExC,iBAAiB;IAQjB,oBAAoB;IAQpB,MAAM;IAQf;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as a}from"tslib";import{css as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPrivateFieldGet as i,__classPrivateFieldSet as a}from"tslib";import{css as n,LitElement as l,unsafeCSS as r,html as c}from"lit";import{customElement as o,property as h,state as d}from"lit/decorators.js";var p=n`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -21,9 +21,9 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as s,__classPr
|
|
|
21
21
|
}
|
|
22
22
|
.icon-selector-group--horizontal {
|
|
23
23
|
flex-direction: row;
|
|
24
|
-
}`;let
|
|
24
|
+
}`;let u=(()=>{var n,u,v,m,g,b,f;let k,y,C,S,_,W,w,O,x,H=[o("kyn-icon-selector-group")],V=[],M=l,E=[],B=[],j=[],A=[],z=[],L=[],P=[],$=[],q=[],G=[],I=[],D=[],F=[],J=[];return y=class extends M{constructor(){super(...arguments),n.set(this,s(this,E,[])),u.set(this,(s(this,B),s(this,j,!1))),v.set(this,(s(this,A),s(this,z,"vertical"))),m.set(this,(s(this,L),s(this,P,!1))),g.set(this,(s(this,$),s(this,q,!1))),b.set(this,(s(this,G),s(this,I,!1))),f.set(this,(s(this,D),s(this,F,[]))),this._dispatching=(s(this,J),!1),this._handleChildChange=e=>{if(this._dispatching)return;e.stopPropagation();const{checked:t,value:s}=e.detail;let i=[...this.value];t&&!i.includes(s)?i.push(s):t||(i=i.filter((e=>e!==s))),this.value=i,this._dispatching=!0,this.dispatchEvent(new CustomEvent("on-change",{composed:!0,detail:{value:this.value,origEvent:e}})),this._dispatching=!1}}get value(){return i(this,n,"f")}set value(e){a(this,n,e,"f")}get disabled(){return i(this,u,"f")}set disabled(e){a(this,u,e,"f")}get direction(){return i(this,v,"f")}set direction(e){a(this,v,e,"f")}get onlyVisibleOnHover(){return i(this,m,"f")}set onlyVisibleOnHover(e){a(this,m,e,"f")}get persistWhenChecked(){return i(this,g,"f")}set persistWhenChecked(e){a(this,g,e,"f")}get animateSelection(){return i(this,b,"f")}set animateSelection(e){a(this,b,e,"f")}get _selectors(){return i(this,f,"f")}set _selectors(e){a(this,f,e,"f")}connectedCallback(){super.connectedCallback(),this.addEventListener("on-change",this._handleChildChange)}disconnectedCallback(){this.removeEventListener("on-change",this._handleChildChange),super.disconnectedCallback()}render(){return c`
|
|
25
25
|
<div class="icon-selector-group icon-selector-group--${this.direction}">
|
|
26
26
|
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
27
27
|
</div>
|
|
28
|
-
`}_handleSlotChange(){this._selectors=Array.from(this.querySelectorAll("kyn-icon-selector")),this._syncChildrenState()}_syncChildrenState(){this._selectors.forEach((e=>{this.disabled
|
|
28
|
+
`}_handleSlotChange(){this._selectors=Array.from(this.querySelectorAll("kyn-icon-selector")),this._syncChildrenState()}_syncChildrenState(){this._selectors.forEach((e=>{e.disabled=this.disabled,e.onlyVisibleOnHover=this.onlyVisibleOnHover,e.persistWhenChecked=this.persistWhenChecked,e.animateSelection=this.animateSelection,e.checked=this.value.includes(e.value)}))}updated(e){(e.has("value")||e.has("disabled")||e.has("onlyVisibleOnHover")||e.has("persistWhenChecked")||e.has("animateSelection"))&&this._syncChildrenState()}},n=new WeakMap,u=new WeakMap,v=new WeakMap,m=new WeakMap,g=new WeakMap,b=new WeakMap,f=new WeakMap,e(y,"IconSelectorGroup"),(()=>{var e;const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=M[Symbol.metadata])&&void 0!==e?e:null):void 0;C=[h({type:Array})],S=[h({type:Boolean,reflect:!0})],_=[h({type:String,reflect:!0})],W=[h({type:Boolean,reflect:!0})],w=[h({type:Boolean})],O=[h({type:Boolean})],x=[d()],t(y,null,C,{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(y,null,S,{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},j,A),t(y,null,_,{kind:"accessor",name:"direction",static:!1,private:!1,access:{has:e=>"direction"in e,get:e=>e.direction,set:(e,t)=>{e.direction=t}},metadata:s},z,L),t(y,null,W,{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},P,$),t(y,null,w,{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},q,G),t(y,null,O,{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},I,D),t(y,null,x,{kind:"accessor",name:"_selectors",static:!1,private:!1,access:{has:e=>"_selectors"in e,get:e=>e._selectors,set:(e,t)=>{e._selectors=t}},metadata:s},F,J),t(null,k={value:y},H,{kind:"class",name:y.name,metadata:s},null,V),y=k.value,s&&Object.defineProperty(y,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s})})(),y.styles=r(p),s(y,V),y})();export{u as IconSelectorGroup};
|
|
29
29
|
//# sourceMappingURL=iconSelectorGroup.js.map
|
|
@@ -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 /** 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 if (this.disabled) {\n selector.disabled = true;\n }\n if (this.onlyVisibleOnHover) {\n selector.onlyVisibleOnHover = true;\n }\n selector.checked = this.value.includes(selector.value);\n });\n }\n\n /**\n * @internal\n */\n private _handleChildChange = (e: CustomEvent) => {\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.dispatchEvent(\n new CustomEvent('on-change', {\n composed: true,\n detail: {\n value: this.value,\n origEvent: e,\n },\n })\n );\n };\n\n override updated(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('value') ||\n changedProperties.has('disabled') ||\n changedProperties.has('onlyVisibleOnHover')\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__selectors_accessor_storage","_onlyVisibleOnHover_extraInitializers","__selectors_initializers","_handleChildChange","__selectors_extraInitializers","e","stopPropagation","checked","value","selectorValue","detail","newValue","includes","push","filter","v","dispatchEvent","CustomEvent","composed","origEvent","__classPrivateFieldGet","__classPrivateFieldSet","disabled","direction","onlyVisibleOnHover","_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","__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 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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"}
|