solid-ui 3.1.3-8 → 3.1.3-9
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/dist/chunks/{account-jSZP2tZ5.js → account-CWY924jw.js} +8 -8
- package/dist/chunks/{account-jSZP2tZ5.js.map → account-CWY924jw.js.map} +1 -1
- package/dist/chunks/{auth-CZOEEeJ8.js → auth-DIRGfFle.js} +4 -4
- package/dist/chunks/{auth-CZOEEeJ8.js.map → auth-DIRGfFle.js.map} +1 -1
- package/dist/chunks/{avatar-BugsRJZg.js → avatar-CLJz6mOV.js} +3 -3
- package/dist/chunks/{avatar-BugsRJZg.js.map → avatar-CLJz6mOV.js.map} +1 -1
- package/dist/chunks/{button-0s0lZdxm.js → button-CBQEwOtX.js} +7 -3
- package/dist/chunks/button-CBQEwOtX.js.map +1 -0
- package/dist/chunks/{combobox-Cxi8xUMn.js → combobox-B7a6BjQr.js} +5 -5
- package/dist/chunks/combobox-B7a6BjQr.js.map +1 -0
- package/dist/chunks/{dialog-BAzrHJ8w.js → dialog-Bn4qiZi-.js} +2 -2
- package/dist/chunks/{dialog-BAzrHJ8w.js.map → dialog-Bn4qiZi-.js.map} +1 -1
- package/dist/chunks/{guard-Cml6dHTv.js → guard-Cxl9QbaG.js} +3 -3
- package/dist/chunks/{guard-Cml6dHTv.js.map → guard-Cxl9QbaG.js.map} +1 -1
- package/dist/chunks/{login-button-pe1-DVNZ.js → login-button-ChyF_OoC.js} +4 -4
- package/dist/chunks/{login-button-pe1-DVNZ.js.map → login-button-ChyF_OoC.js.map} +1 -1
- package/dist/chunks/{logout-button-C5dtQiBB.js → logout-button-BRPS8630.js} +4 -4
- package/dist/chunks/{logout-button-C5dtQiBB.js.map → logout-button-BRPS8630.js.map} +1 -1
- package/dist/chunks/{provider-DRxSExO6.js → provider-D0RqwRoM.js} +2 -2
- package/dist/chunks/{provider-DRxSExO6.js.map → provider-D0RqwRoM.js.map} +1 -1
- package/dist/chunks/{signup-button-QvYELqb6.js → signup-button-Df4rYzNO.js} +4 -4
- package/dist/chunks/{signup-button-QvYELqb6.js.map → signup-button-Df4rYzNO.js.map} +1 -1
- package/dist/chunks/{src-DYvSns7X.js → src-Dxxeu4rj.js} +2 -2
- package/dist/chunks/{src-DYvSns7X.js.map → src-Dxxeu4rj.js.map} +1 -1
- package/dist/components/account.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.cjs.js +2 -2
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.d.ts +1 -0
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.esm.js +5 -1
- package/dist/components/button/Button.esm.js.map +1 -1
- package/dist/components/button/Button.styles.cjs.js +1 -1
- package/dist/components/button/Button.styles.cjs.js.map +1 -1
- package/dist/components/button/Button.styles.esm.js +1 -1
- package/dist/components/button/Button.styles.esm.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +2 -2
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +4 -4
- package/dist/components/combobox/Combobox.esm.js.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +11 -11
- package/dist/index.js +2 -2
- package/dist/loader.js +2 -2
- package/dist/solid-ui.js +5 -5
- package/dist/solid-ui.min.js +5 -5
- package/dist/solid-ui.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/button-0s0lZdxm.js.map +0 -1
- package/dist/chunks/combobox-Cxi8xUMn.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/account-
|
|
1
|
+
import { n as e, t } from "../chunks/account-CWY924jw.js";
|
|
2
2
|
export { e as Account, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/avatar-
|
|
1
|
+
import { n as e, t } from "../chunks/avatar-CLJz6mOV.js";
|
|
2
2
|
export { e as Avatar, t as default };
|
|
@@ -2,9 +2,9 @@ const e=require("../../lib/components/decorators.cjs.js"),t=require("../../lib/c
|
|
|
2
2
|
<button type=${this.type} ?disabled=${e} @click=${this.onClick}>
|
|
3
3
|
${this.loading?r.html`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>`:r.nothing}
|
|
4
4
|
<slot name="left-icon"></slot>
|
|
5
|
-
<slot name="icon"></slot>
|
|
5
|
+
<slot @slotchange=${this.onIconSlotChange} name="icon"></slot>
|
|
6
6
|
<slot></slot>
|
|
7
7
|
<slot name="right-icon"></slot>
|
|
8
8
|
</button>
|
|
9
|
-
`}onClick(){switch(this.type){case`submit`:this.getInternals().form?.requestSubmit();break;case`reset`:this.getInternals().form?.reset();break}}},{e:[h,_,y,x,d],c:[L,f]}=A(o,[[m,1,`variant`],[g,1,`type`],[v,1,`disabled`],[b,1,`loading`]],p,0,void 0,t.default),o),a=class extends F{constructor(){super(L),k(this,`styles`,n.default),k(this,`formAssociated`,!0),f()}},k(a,S,void 0),a),exports.BUTTON_VARIANTS=I,Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return L}});
|
|
9
|
+
`}onIconSlotChange(e){let t=e.target;this.toggleAttribute(`data-has-icon-slot`,t.assignedElements().length>0)}onClick(){switch(this.type){case`submit`:this.getInternals().form?.requestSubmit();break;case`reset`:this.getInternals().form?.reset();break}}},{e:[h,_,y,x,d],c:[L,f]}=A(o,[[m,1,`variant`],[g,1,`type`],[v,1,`disabled`],[b,1,`loading`]],p,0,void 0,t.default),o),a=class extends F{constructor(){super(L),k(this,`styles`,n.default),k(this,`formAssociated`,!0),f()}},k(a,S,void 0),a),exports.BUTTON_VARIANTS=I,Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return L}});
|
|
10
10
|
//# sourceMappingURL=Button.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","getInternals","form","requestSubmit","reset","
|
|
1
|
+
{"version":3,"file":"Button.cjs.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","onIconSlotChange","e","slot","target","toggleAttribute","assignedElements","length","getInternals","form","requestSubmit","reset","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default"],"sources":["../../../src/components/button/Button.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Button.styles.css'\n\nexport const BUTTON_VARIANTS = ['primary', 'secondary', 'tertiary', 'outline', 'ghost'] as const\nexport type ButtonVariant = typeof BUTTON_VARIANTS[number]\n\n@customElement('solid-ui-button')\nexport default class Button extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor variant: ButtonVariant = 'primary'\n\n @property({ type: String, reflect: true })\n accessor type = 'button'\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined = undefined\n\n @property({ type: Boolean })\n accessor loading = false\n\n render () {\n const disabled = this.disabled ?? this.loading\n\n return html`\n <button type=${this.type} ?disabled=${disabled} @click=${this.onClick}>\n ${this.loading ? html`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>` : nothing}\n <slot name=\"left-icon\"></slot>\n <slot @slotchange=${this.onIconSlotChange} name=\"icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </button>\n `\n }\n\n private onIconSlotChange (e: Event) {\n const slot = e.target as HTMLSlotElement\n\n this.toggleAttribute('data-has-icon-slot', slot.assignedElements().length > 0)\n }\n\n private onClick () {\n switch (this.type) {\n case 'submit':\n this.getInternals().form?.requestSubmit()\n break\n case 'reset':\n this.getInternals().form?.reset()\n break\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export default class Button extends WebComponent {
|
|
|
9
9
|
accessor disabled: boolean | undefined;
|
|
10
10
|
accessor loading: boolean;
|
|
11
11
|
render(): import('lit-html').TemplateResult<1>;
|
|
12
|
+
private onIconSlotChange;
|
|
12
13
|
private onClick;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAI9D,OAAO,8BAA8B,CAAA;AAIrC,eAAO,MAAM,eAAe,mEAAoE,CAAA;AAChG,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;AAG1D,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAY;IAC9C,MAAM,CAAC,MAAM,0BAAS;IACtB,MAAM,CAAC,cAAc,UAAO;IAG5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAY;IAG3C,QAAQ,CAAC,IAAI,SAAW;IAGxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAY;IAGlD,QAAQ,CAAC,OAAO,UAAQ;IAExB,MAAM;IAcN,OAAO,CAAC,OAAO;CAUhB"}
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAI9D,OAAO,8BAA8B,CAAA;AAIrC,eAAO,MAAM,eAAe,mEAAoE,CAAA;AAChG,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;AAG1D,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAY;IAC9C,MAAM,CAAC,MAAM,0BAAS;IACtB,MAAM,CAAC,cAAc,UAAO;IAG5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAY;IAG3C,QAAQ,CAAC,IAAI,SAAW;IAGxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAY;IAGlD,QAAQ,CAAC,OAAO,UAAQ;IAExB,MAAM;IAcN,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,OAAO;CAUhB"}
|
|
@@ -227,12 +227,16 @@ new (C = (c = /*#__PURE__*/ new WeakMap(), l = /*#__PURE__*/ new WeakMap(), u =
|
|
|
227
227
|
<button type=${this.type} ?disabled=${e} @click=${this.onClick}>
|
|
228
228
|
${this.loading ? r`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>` : i}
|
|
229
229
|
<slot name="left-icon"></slot>
|
|
230
|
-
<slot name="icon"></slot>
|
|
230
|
+
<slot @slotchange=${this.onIconSlotChange} name="icon"></slot>
|
|
231
231
|
<slot></slot>
|
|
232
232
|
<slot name="right-icon"></slot>
|
|
233
233
|
</button>
|
|
234
234
|
`;
|
|
235
235
|
}
|
|
236
|
+
onIconSlotChange(e) {
|
|
237
|
+
let t = e.target;
|
|
238
|
+
this.toggleAttribute("data-has-icon-slot", t.assignedElements().length > 0);
|
|
239
|
+
}
|
|
236
240
|
onClick() {
|
|
237
241
|
switch (this.type) {
|
|
238
242
|
case "submit":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.esm.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","getInternals","form","requestSubmit","reset","
|
|
1
|
+
{"version":3,"file":"Button.esm.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","onIconSlotChange","e","slot","target","toggleAttribute","assignedElements","length","getInternals","form","requestSubmit","reset","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default"],"sources":["../../../src/components/button/Button.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Button.styles.css'\n\nexport const BUTTON_VARIANTS = ['primary', 'secondary', 'tertiary', 'outline', 'ghost'] as const\nexport type ButtonVariant = typeof BUTTON_VARIANTS[number]\n\n@customElement('solid-ui-button')\nexport default class Button extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor variant: ButtonVariant = 'primary'\n\n @property({ type: String, reflect: true })\n accessor type = 'button'\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined = undefined\n\n @property({ type: Boolean })\n accessor loading = false\n\n render () {\n const disabled = this.disabled ?? this.loading\n\n return html`\n <button type=${this.type} ?disabled=${disabled} @click=${this.onClick}>\n ${this.loading ? html`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>` : nothing}\n <slot name=\"left-icon\"></slot>\n <slot @slotchange=${this.onIconSlotChange} name=\"icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </button>\n `\n }\n\n private onIconSlotChange (e: Event) {\n const slot = e.target as HTMLSlotElement\n\n this.toggleAttribute('data-has-icon-slot', slot.assignedElements().length > 0)\n }\n\n private onClick () {\n switch (this.type) {\n case 'submit':\n this.getInternals().form?.requestSubmit()\n break\n case 'reset':\n this.getInternals().form?.reset()\n break\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAaM,IAAkB;CAAC;CAAW;CAAa;CAAY;CAAW;AAAO;AAAUC,IAAA,CAG/FP,EAAc,iBAAiB,CAAC;AAAA,IAAAQ;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,kBAAA,IAAAF,QAAA,GAAAG,kBAAA,IAAAH,QAAA,GAAAI,KAAAC,IAK9BZ,EAAS;CAAEa,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACC,IAGzChB,EAAS;CAAEa,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACE,IAGzCjB,EAAS,EAAEa,MAAMK,QAAQ,CAAC,GAACC,IAG3BnB,EAAS,EAAEa,MAAMK,QAAQ,CAAC,GAAC,YAAAE,IAd9B,cACoCvB,EAAa;CAAAyB,YAAA,GAAAC,GAAA;EAWGC,AAXH,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAlB,IAAAmB,EAAA,IAAA,GAAAC,EAAA,MAKb,SAAS,EAAA,GAAAF,EAAA,MAAAhB,GAAAmB,EAAA,MAG3B,QAAQ,CAAA,GAAAH,EAAA,MAAAf,GAAAmB,EAAA,MAGiBC,KAAAA,CAAS,CAAA,GAAAL,EAAA,MAAAd,GAAAoB,EAAA,MAG/B,EAAK,CAAA;CAAA;CAAA,KAAAnB,KAAA;EAAA,OAAAoB,EAAAzB,GAAA,IAAA;CAAA;CAAA,IATf0B,QAAOC,GAAA;EAAAC,EAAA5B,GAAA,MAAA2B,CAAA;CAAA;CAAA,IAGPpB,OAAI;EAAA,OAAAkB,EAAAvB,GAAA,IAAA;CAAA;CAAA,IAAJK,KAAIoB,GAAA;EAAAC,EAAA1B,GAAA,MAAAyB,CAAA;CAAA;CAAA,IAGJE,WAAQ;EAAA,OAAAJ,EAAAtB,GAAA,IAAA;CAAA;CAAA,IAAR0B,SAAQF,GAAA;EAAAC,EAAAzB,GAAA,MAAAwB,CAAA;CAAA;CAAA,IAGRG,UAAO;EAAA,OAAAL,EAAArB,GAAA,IAAA;CAAA;CAAA,IAAP0B,QAAOH,GAAA;EAAAC,EAAAxB,GAAA,MAAAuB,CAAA;CAAA;CAEhBI,SAAU;EACR,IAAMF,IAAW,KAAKA,YAAY,KAAKC;EAEvC,OAAOtC,CAAI;uBACQ,KAAKe,KAAI,aAAcsB,EAAQ,UAAW,KAAKG,QAAO;cAC/D,KAAKF,UAAUtC,CAAI,8DAA8DC,EAAO;;gCAEtE,KAAKwC,iBAAgB;;;;;CAKnD;CAEQA,iBAAkBC,GAAU;EAClC,IAAMC,IAAOD,EAAEE;EAEf,KAAKC,gBAAgB,sBAAsBF,EAAKG,iBAAiB,CAAC,CAACC,SAAS,CAAC;CAC/E;CAEQP,UAAW;EACjB,QAAQ,KAAKzB,MAAb;GACE,KAAK;IACH,KAAKiC,aAAa,CAAC,CAACC,MAAMC,cAAc;IACxC;GACF,KAAK;IACH,KAAKF,aAAa,CAAC,CAACC,MAAME,MAAM;IAChC;EACJ;CACF;AACF,GAAC,CAAAT,GAAA,CAAAd,GAAAC,GAAAC,GAAAE,GAAAL,IAAAyB,GAAA,CAAA9C,GAAA+C,MAAAC,EAAAhC,GAAA;CAAA;EAAAR;EAAA;EAAA;CAAA;CAAA;EAAAI;EAAA;EAAA;CAAA;CAAA;EAAAC;EAAA;EAAA;CAAA;CAAA;EAAAE;EAAA;EAAA;CAAA;AAAA,GAAAhB,GAAA,GAAA,KAAA,GA9CmCN,CAAY,GAAAuB,IAAAiC,IAAA,cAAAC,EAAA;CAAAhC,cAAA;EAAA,MAAAlB,CAAA,GAAAmD,EAAA,MAAA,UAC9BtD,CAAM,GAAAsD,EAAA,MAAA,kBACE,EAAI,GAAAJ,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAhD,GAAA,KAAA,CAAA,GAAAgD,GAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("lit").css`:host{--text-color:var(--solid-ui-color-white);--border-color:var(--solid-ui-color-primary);--background-color:var(--solid-ui-color-primary);--hover-text-color:var(--text-color);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:var(--solid-ui-color-tertiary);display:inline-flex}:host button{font-size:var(--solid-ui-font-size-md);color:var(--text-color);background:var(--background-color);border:1px solid var(--border-color);border-radius:5px;flex:1;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-weight:600;display:flex;position:relative}:host button:disabled{opacity:.5;cursor:not-allowed}:host button:hover:not(:disabled){color:var(--hover-text-color);background:var(--hover-background-color);border-color:var(--hover-border-color)}:host button icon-svg-spinners-180-ring,:host button ::slotted([slot=left-icon]),:host button ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-md);height:var(--solid-ui-font-size-md)}:host button:after{content:\"\";width:var(--solid-ui-clickable-area);height:var(--solid-ui-clickable-area);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host(
|
|
1
|
+
var e=require("lit").css`:host{--text-color:var(--solid-ui-color-white);--border-color:var(--solid-ui-color-primary);--background-color:var(--solid-ui-color-primary);--hover-text-color:var(--text-color);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:var(--solid-ui-color-tertiary);display:inline-flex}:host button{font-size:var(--solid-ui-font-size-md);color:var(--text-color);background:var(--background-color);border:1px solid var(--border-color);border-radius:5px;flex:1;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-weight:600;display:flex;position:relative}:host button:disabled{opacity:.5;cursor:not-allowed}:host button:hover:not(:disabled){color:var(--hover-text-color);background:var(--hover-background-color);border-color:var(--hover-border-color)}:host button icon-svg-spinners-180-ring,:host button ::slotted([slot=left-icon]),:host button ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-md);height:var(--solid-ui-font-size-md)}:host button:after{content:\"\";width:var(--solid-ui-clickable-area);height:var(--solid-ui-clickable-area);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host([data-has-icon-slot]) button{padding:4px}:host([data-has-icon-slot]) button ::slotted([slot=icon]){width:var(--solid-ui-font-size-2xl);height:var(--solid-ui-font-size-2xl)}:host([variant=secondary]) button{--text-color:var(--solid-ui-color-gray-800);--border-color:var(--solid-ui-color-slate-400);--background-color:var(--solid-ui-color-white);--hover-text-color:var(--solid-ui-color-white);--hover-background-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary)}:host([variant=tertiary]) button{--text-color:var(--solid-ui-color-primary);--border-color:transparent;--background-color:transparent;--hover-text-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:transparent;border-width:0 0 1px;border-radius:0;padding:0}:host([variant=outline]) button{--text-color:currentColor;--border-color:currentColor;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:currentColor;--hover-background-color:color-mix(in srgb, currentColor 25%, transparent)}:host([variant=ghost]) button{--text-color:currentColor;--border-color:transparent;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:transparent;--hover-background-color:color-mix(in srgb, currentColor 25%, transparent)}`;exports.default=e;
|
|
2
2
|
//# sourceMappingURL=Button.styles.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.styles.cjs.js","names":[],"sources":["../../../src/components/button/Button.styles.css"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host(
|
|
1
|
+
{"version":3,"file":"Button.styles.cjs.js","names":[],"sources":["../../../src/components/button/Button.styles.css"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host([data-has-icon-slot]) button {\n padding: 4px;\n\n ::slotted([slot=\"icon\"]) {\n width: var(--solid-ui-font-size-2xl);\n height: var(--solid-ui-font-size-2xl);\n }\n}\n\n:host([variant='secondary']) button {\n --text-color: var(--solid-ui-color-gray-800);\n --border-color: var(--solid-ui-color-slate-400);\n --background-color: var(--solid-ui-color-white);\n --hover-text-color: var(--solid-ui-color-white);\n --hover-background-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n}\n\n:host([variant='tertiary']) button {\n --text-color: var(--solid-ui-color-primary);\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: transparent;\n\n padding: 0;\n border-radius: 0;\n border-width: 0;\n border-bottom-width: 1px;\n}\n\n:host([variant='outline']) button {\n --text-color: currentColor;\n --border-color: currentColor;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: currentColor;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n\n:host([variant='ghost']) button {\n --text-color: currentColor;\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: transparent;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { css as e } from "lit";
|
|
2
2
|
//#region src/components/button/Button.styles.css
|
|
3
|
-
var t = e`:host{--text-color:var(--solid-ui-color-white);--border-color:var(--solid-ui-color-primary);--background-color:var(--solid-ui-color-primary);--hover-text-color:var(--text-color);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:var(--solid-ui-color-tertiary);display:inline-flex}:host button{font-size:var(--solid-ui-font-size-md);color:var(--text-color);background:var(--background-color);border:1px solid var(--border-color);border-radius:5px;flex:1;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-weight:600;display:flex;position:relative}:host button:disabled{opacity:.5;cursor:not-allowed}:host button:hover:not(:disabled){color:var(--hover-text-color);background:var(--hover-background-color);border-color:var(--hover-border-color)}:host button icon-svg-spinners-180-ring,:host button ::slotted([slot=left-icon]),:host button ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-md);height:var(--solid-ui-font-size-md)}:host button:after{content:\"\";width:var(--solid-ui-clickable-area);height:var(--solid-ui-clickable-area);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host(
|
|
3
|
+
var t = e`:host{--text-color:var(--solid-ui-color-white);--border-color:var(--solid-ui-color-primary);--background-color:var(--solid-ui-color-primary);--hover-text-color:var(--text-color);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:var(--solid-ui-color-tertiary);display:inline-flex}:host button{font-size:var(--solid-ui-font-size-md);color:var(--text-color);background:var(--background-color);border:1px solid var(--border-color);border-radius:5px;flex:1;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-weight:600;display:flex;position:relative}:host button:disabled{opacity:.5;cursor:not-allowed}:host button:hover:not(:disabled){color:var(--hover-text-color);background:var(--hover-background-color);border-color:var(--hover-border-color)}:host button icon-svg-spinners-180-ring,:host button ::slotted([slot=left-icon]),:host button ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-md);height:var(--solid-ui-font-size-md)}:host button:after{content:\"\";width:var(--solid-ui-clickable-area);height:var(--solid-ui-clickable-area);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host([data-has-icon-slot]) button{padding:4px}:host([data-has-icon-slot]) button ::slotted([slot=icon]){width:var(--solid-ui-font-size-2xl);height:var(--solid-ui-font-size-2xl)}:host([variant=secondary]) button{--text-color:var(--solid-ui-color-gray-800);--border-color:var(--solid-ui-color-slate-400);--background-color:var(--solid-ui-color-white);--hover-text-color:var(--solid-ui-color-white);--hover-background-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary)}:host([variant=tertiary]) button{--text-color:var(--solid-ui-color-primary);--border-color:transparent;--background-color:transparent;--hover-text-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:transparent;border-width:0 0 1px;border-radius:0;padding:0}:host([variant=outline]) button{--text-color:currentColor;--border-color:currentColor;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:currentColor;--hover-background-color:color-mix(in srgb, currentColor 25%, transparent)}:host([variant=ghost]) button{--text-color:currentColor;--border-color:transparent;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:transparent;--hover-background-color:color-mix(in srgb, currentColor 25%, transparent)}`;
|
|
4
4
|
//#endregion
|
|
5
5
|
export { t as default };
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.styles.esm.js","names":[],"sources":["../../../src/components/button/Button.styles.css"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host(
|
|
1
|
+
{"version":3,"file":"Button.styles.esm.js","names":[],"sources":["../../../src/components/button/Button.styles.css"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host([data-has-icon-slot]) button {\n padding: 4px;\n\n ::slotted([slot=\"icon\"]) {\n width: var(--solid-ui-font-size-2xl);\n height: var(--solid-ui-font-size-2xl);\n }\n}\n\n:host([variant='secondary']) button {\n --text-color: var(--solid-ui-color-gray-800);\n --border-color: var(--solid-ui-color-slate-400);\n --background-color: var(--solid-ui-color-white);\n --hover-text-color: var(--solid-ui-color-white);\n --hover-background-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n}\n\n:host([variant='tertiary']) button {\n --text-color: var(--solid-ui-color-primary);\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: transparent;\n\n padding: 0;\n border-radius: 0;\n border-width: 0;\n border-bottom-width: 1px;\n}\n\n:host([variant='outline']) button {\n --text-color: currentColor;\n --border-color: currentColor;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: currentColor;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n\n:host([variant='ghost']) button {\n --text-color: currentColor;\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: transparent;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, r as t, t as n } from "../chunks/button-
|
|
1
|
+
import { n as e, r as t, t as n } from "../chunks/button-CBQEwOtX.js";
|
|
2
2
|
export { e as BUTTON_VARIANTS, t as Button, n as default };
|
|
@@ -42,7 +42,7 @@ const e=require("../../lib/components/decorators.cjs.js"),t=require("../../lib/c
|
|
|
42
42
|
aria-labelledby=${this.label?this.inputTrait.labelId:i.nothing}
|
|
43
43
|
aria-label=${this.label?i.nothing:n}
|
|
44
44
|
?hidden=${!this.open}
|
|
45
|
-
@
|
|
45
|
+
@mousedown=${this.onListboxMouseDown}
|
|
46
46
|
>
|
|
47
47
|
${e.map((e,t)=>i.html`<div
|
|
48
48
|
id=${this.getOptionId(t)}
|
|
@@ -55,5 +55,5 @@ const e=require("../../lib/components/decorators.cjs.js"),t=require("../../lib/c
|
|
|
55
55
|
</div>`)}
|
|
56
56
|
</div>
|
|
57
57
|
</wa-popup>
|
|
58
|
-
`}getFilteredOptions(){return this.getOptions().filter(e=>e.label.toLowerCase().includes(this.filter))}getOptions(){let e=this.querySelectorAll(`solid-ui-combobox-option`);return Array.from(e).map(e=>({value:e.value,label:e.textContent??``}))}getOptionId(e){return`${this.listboxId}-option-${e}`}getInitialActiveIndex(e){let t=e.findIndex(e=>e.value===this.value);return t>=0?t:e.length>0?0:-1}getNextIndex(e,t,n){return t.length===0?-1:(e+n+t.length)%t.length}setActiveIndex(e){this.activeIndex=e}show(e){if(this.open)return;let t=this.getFilteredOptions();t.length!==0&&(this.open=!0,this.activeIndex=e?.focusLast?t.length-1:this.getInitialActiveIndex(t),this.addOpenListeners(),requestAnimationFrame(()=>this.scrollActiveOptionIntoView()))}hide(){this.open&&(this.open=!1,this.activeIndex=-1,this.removeOpenListeners())}selectOption(e){this.inputTrait.setValue(e),this.hide(),this.inputElement?.focus({preventScroll:!0})}scrollActiveOptionIntoView(){this.activeIndex<0||this.shadowRoot?.querySelector(`#${this.getOptionId(this.activeIndex)}`)?.scrollIntoView({block:`nearest`})}addOpenListeners(){if(this.openListenersAttached)return;document.addEventListener(`focusin`,this.handleDocumentFocusIn),document.addEventListener(`mousedown`,this.handleDocumentMouseDown);let e=this.getRootNode();e!==document&&e.addEventListener(`focusin`,this.handleDocumentFocusIn),this.openListenersAttached=!0}removeOpenListeners(){if(!this.openListenersAttached)return;document.removeEventListener(`focusin`,this.handleDocumentFocusIn),document.removeEventListener(`mousedown`,this.handleDocumentMouseDown);let e=this.getRootNode();e!==document&&e.removeEventListener(`focusin`,this.handleDocumentFocusIn),this.openListenersAttached=!1}onAnchorMouseDown(e){e.preventDefault(),this.inputElement?.focus({preventScroll:!0})}onInputFocus(){this.show()}openPopupFromKey(e){this.open||this.show({focusLast:e})}onInputKeyDown(e){let t=this.getFilteredOptions();switch(e.key){case`ArrowDown`:e.preventDefault(),this.open?(this.activeIndex=this.getNextIndex(this.activeIndex,t,1),this.scrollActiveOptionIntoView()):this.openPopupFromKey(!1);break;case`ArrowUp`:e.preventDefault(),this.open?(this.activeIndex=this.getNextIndex(this.activeIndex,t,-1),this.scrollActiveOptionIntoView()):this.openPopupFromKey(!0);break;case`Enter`:this.open&&this.activeIndex>=0&&t[this.activeIndex]?(e.preventDefault(),this.selectOption(t[this.activeIndex].value)):this.open||(e.preventDefault(),this.inputTrait.onSubmit());break;case`Escape`:this.open&&(e.preventDefault(),e.stopPropagation(),this.hide(),this.inputElement?.focus({preventScroll:!0}));break;case`Tab`:this.hide();break}}
|
|
58
|
+
`}getFilteredOptions(){return this.getOptions().filter(e=>e.label.toLowerCase().includes(this.filter))}getOptions(){let e=this.querySelectorAll(`solid-ui-combobox-option`);return Array.from(e).map(e=>({value:e.value,label:e.textContent??``}))}getOptionId(e){return`${this.listboxId}-option-${e}`}getInitialActiveIndex(e){let t=e.findIndex(e=>e.value===this.value);return t>=0?t:e.length>0?0:-1}getNextIndex(e,t,n){return t.length===0?-1:(e+n+t.length)%t.length}setActiveIndex(e){this.activeIndex=e}show(e){if(this.open)return;let t=this.getFilteredOptions();t.length!==0&&(this.open=!0,this.activeIndex=e?.focusLast?t.length-1:this.getInitialActiveIndex(t),this.addOpenListeners(),requestAnimationFrame(()=>this.scrollActiveOptionIntoView()))}hide(){this.open&&(this.filter=``,this.open=!1,this.activeIndex=-1,this.removeOpenListeners())}selectOption(e){this.inputTrait.setValue(e),this.hide(),this.inputElement?.focus({preventScroll:!0})}scrollActiveOptionIntoView(){this.activeIndex<0||this.shadowRoot?.querySelector(`#${this.getOptionId(this.activeIndex)}`)?.scrollIntoView({block:`nearest`})}addOpenListeners(){if(this.openListenersAttached)return;document.addEventListener(`focusin`,this.handleDocumentFocusIn),document.addEventListener(`mousedown`,this.handleDocumentMouseDown);let e=this.getRootNode();e!==document&&e.addEventListener(`focusin`,this.handleDocumentFocusIn),this.openListenersAttached=!0}removeOpenListeners(){if(!this.openListenersAttached)return;document.removeEventListener(`focusin`,this.handleDocumentFocusIn),document.removeEventListener(`mousedown`,this.handleDocumentMouseDown);let e=this.getRootNode();e!==document&&e.removeEventListener(`focusin`,this.handleDocumentFocusIn),this.openListenersAttached=!1}onAnchorMouseDown(e){e.preventDefault(),this.inputElement?.focus({preventScroll:!0})}onInputFocus(){this.show()}openPopupFromKey(e){this.open||this.show({focusLast:e})}onInputKeyDown(e){let t=this.getFilteredOptions();switch(e.key){case`ArrowDown`:e.preventDefault(),this.open?(this.activeIndex=this.getNextIndex(this.activeIndex,t,1),this.scrollActiveOptionIntoView()):this.openPopupFromKey(!1);break;case`ArrowUp`:e.preventDefault(),this.open?(this.activeIndex=this.getNextIndex(this.activeIndex,t,-1),this.scrollActiveOptionIntoView()):this.openPopupFromKey(!0);break;case`Enter`:this.open&&this.activeIndex>=0&&t[this.activeIndex]?(e.preventDefault(),this.selectOption(t[this.activeIndex].value)):this.open||(e.preventDefault(),this.inputTrait.onSubmit());break;case`Escape`:this.open&&(e.preventDefault(),e.stopPropagation(),this.hide(),this.inputElement?.focus({preventScroll:!0}));break;case`Tab`:this.hide();break}}onListboxMouseDown(e){if(e.preventDefault(),!(e.target instanceof HTMLElement))return;let t=e.target.closest(`[role="option"]`);if(!t)return;let n=t.id,r=Number.parseInt(n.replace(`${this.listboxId}-option-`,``),10),i=this.getFilteredOptions()[r];i&&this.selectOption(i.value)}},{e:[x,C,T,D,k,j,N,F,L,_],c:[Q,v]}=K(s,[[b,1,`label`],[S,1,`name`],[w,1,`value`],[E,1,`placeholder`],[O,1,`required`],[A,1,`inputElement`],[M,1,`filter`],[P,1,`open`],[I,1,`activeIndex`]],y,0,void 0,t.default),s),o=class extends Z{constructor(){super(Q),G(this,`styles`,r.default),G(this,`formAssociated`,!0),v()}},G(o,R,void 0),o),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return Q}});
|
|
59
59
|
//# sourceMappingURL=Combobox.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.cjs.js","names":["customElement","WebComponent","html","nothing","property","query","state","InputTrait","styles","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_inputElementDecs","_filterDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","inputElement","filter","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_inputElement","_init_filter","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","inputTrait","addTrait","getInputElement","getInternals","onValueChanged","toLowerCase","options","getFilteredOptions","length","getInitialActiveIndex","listboxId","inputId","disconnectedCallback","removeOpenListeners","render","activeOption","undefined","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseUp","map","option","index","setActiveIndex","getOptions","querySelectorAll","Array","from","textContent","selectedIndex","findIndex","getNextIndex","currentIndex","direction","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","selectOption","setValue","focus","preventScroll","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","target","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","replace","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport InputTrait from '@/lib/components/traits/InputTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\ntype ComboboxOptionData = { value: string; label: string }\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String })\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private inputTrait: InputTrait\n private openListenersAttached = false\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.inputTrait = this.addTrait(\n new InputTrait(this, {\n getInputElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n onValueChanged: (value) => {\n this.filter = value.toLowerCase()\n\n const options = this.getFilteredOptions()\n\n if (options.length === 0) {\n this.hide()\n return\n }\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n },\n })\n )\n\n this.listboxId = `listbox-${this.inputTrait.inputId}`\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.inputTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.inputTrait.inputId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.value}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.inputTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mouseup=${this.onListboxMouseUp}\n >\n ${options.map(\n (option, index) =>\n html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.label}\n </div>`\n )}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n return this.getOptions().filter((option) =>\n option.label.toLowerCase().includes(this.filter)\n )\n }\n\n private getOptions (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n }\n\n private selectOption (value: string) {\n this.inputTrait.setValue(value)\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex].value)\n } else if (!this.open) {\n event.preventDefault()\n this.inputTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n }\n }\n\n private onListboxMouseUp (event: MouseEvent) {\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option.value)\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox.cjs.js","names":["customElement","WebComponent","html","nothing","property","query","state","InputTrait","styles","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_inputElementDecs","_filterDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","inputElement","filter","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_inputElement","_init_filter","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","inputTrait","addTrait","getInputElement","getInternals","onValueChanged","toLowerCase","options","getFilteredOptions","length","getInitialActiveIndex","listboxId","inputId","disconnectedCallback","removeOpenListeners","render","activeOption","undefined","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseDown","map","option","index","setActiveIndex","getOptions","querySelectorAll","Array","from","textContent","selectedIndex","findIndex","getNextIndex","currentIndex","direction","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","selectOption","setValue","focus","preventScroll","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","target","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","replace","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport InputTrait from '@/lib/components/traits/InputTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\ntype ComboboxOptionData = { value: string; label: string }\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String })\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private inputTrait: InputTrait\n private openListenersAttached = false\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.inputTrait = this.addTrait(\n new InputTrait(this, {\n getInputElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n onValueChanged: (value) => {\n this.filter = value.toLowerCase()\n\n const options = this.getFilteredOptions()\n\n if (options.length === 0) {\n this.hide()\n return\n }\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n },\n })\n )\n\n this.listboxId = `listbox-${this.inputTrait.inputId}`\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.inputTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.inputTrait.inputId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.value}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.inputTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mousedown=${this.onListboxMouseDown}\n >\n ${options.map(\n (option, index) =>\n html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.label}\n </div>`\n )}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n return this.getOptions().filter((option) =>\n option.label.toLowerCase().includes(this.filter)\n )\n }\n\n private getOptions (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.filter = ''\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n }\n\n private selectOption (value: string) {\n this.inputTrait.setValue(value)\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex].value)\n } else if (!this.open) {\n event.preventDefault()\n this.inputTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n }\n }\n\n private onListboxMouseDown (event: MouseEvent) {\n event.preventDefault()\n\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option.value)\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM9D,OAAO,4BAA4B,CAAA;AACnC,OAAO,uDAAuD,CAAA;AAO9D,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAChD,MAAM,CAAC,MAAM,0BAAS;IACtB,MAAM,CAAC,cAAc,UAAO;IAG5B,QAAQ,CAAC,KAAK,SAAK;IAGnB,QAAQ,CAAC,IAAI,SAAK;IAGlB,QAAQ,CAAC,KAAK,SAAK;IAGnB,QAAQ,CAAC,WAAW,SAAK;IAGzB,QAAQ,CAAC,QAAQ,UAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAG7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAK;IAG5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;;IA6BlC,oBAAoB;IAMpB,SAAS,CAAC,MAAM;IAyEhB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM9D,OAAO,4BAA4B,CAAA;AACnC,OAAO,uDAAuD,CAAA;AAO9D,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAChD,MAAM,CAAC,MAAM,0BAAS;IACtB,MAAM,CAAC,cAAc,UAAO;IAG5B,QAAQ,CAAC,KAAK,SAAK;IAGnB,QAAQ,CAAC,IAAI,SAAK;IAGlB,QAAQ,CAAC,KAAK,SAAK;IAGnB,QAAQ,CAAC,WAAW,SAAK;IAGzB,QAAQ,CAAC,QAAQ,UAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAG7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAK;IAG5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;;IA6BlC,oBAAoB;IAMpB,SAAS,CAAC,MAAM;IAyEhB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB,CAM5B;IAED,OAAO,CAAC,uBAAuB,CAM9B;IAED,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -317,7 +317,7 @@ new (V = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), p =
|
|
|
317
317
|
aria-labelledby=${this.label ? this.inputTrait.labelId : a}
|
|
318
318
|
aria-label=${this.label ? a : n}
|
|
319
319
|
?hidden=${!this.open}
|
|
320
|
-
@
|
|
320
|
+
@mousedown=${this.onListboxMouseDown}
|
|
321
321
|
>
|
|
322
322
|
${e.map((e, t) => i`<div
|
|
323
323
|
id=${this.getOptionId(t)}
|
|
@@ -361,7 +361,7 @@ new (V = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), p =
|
|
|
361
361
|
t.length !== 0 && (this.open = !0, this.activeIndex = e?.focusLast ? t.length - 1 : this.getInitialActiveIndex(t), this.addOpenListeners(), requestAnimationFrame(() => this.scrollActiveOptionIntoView()));
|
|
362
362
|
}
|
|
363
363
|
hide() {
|
|
364
|
-
this.open && (this.open = !1, this.activeIndex = -1, this.removeOpenListeners());
|
|
364
|
+
this.open && (this.filter = "", this.open = !1, this.activeIndex = -1, this.removeOpenListeners());
|
|
365
365
|
}
|
|
366
366
|
selectOption(e) {
|
|
367
367
|
this.inputTrait.setValue(e), this.hide(), this.inputElement?.focus({ preventScroll: !0 });
|
|
@@ -410,8 +410,8 @@ new (V = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), p =
|
|
|
410
410
|
break;
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
|
-
|
|
414
|
-
if (!(e.target instanceof HTMLElement)) return;
|
|
413
|
+
onListboxMouseDown(e) {
|
|
414
|
+
if (e.preventDefault(), !(e.target instanceof HTMLElement)) return;
|
|
415
415
|
let t = e.target.closest("[role=\"option\"]");
|
|
416
416
|
if (!t) return;
|
|
417
417
|
let n = t.id, r = Number.parseInt(n.replace(`${this.listboxId}-option-`, ""), 10), i = this.getFilteredOptions()[r];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.esm.js","names":["customElement","WebComponent","html","nothing","property","query","state","InputTrait","styles","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_inputElementDecs","_filterDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","inputElement","filter","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_inputElement","_init_filter","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","inputTrait","addTrait","getInputElement","getInternals","onValueChanged","toLowerCase","options","getFilteredOptions","length","getInitialActiveIndex","listboxId","inputId","disconnectedCallback","removeOpenListeners","render","activeOption","undefined","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseUp","map","option","index","setActiveIndex","getOptions","querySelectorAll","Array","from","textContent","selectedIndex","findIndex","getNextIndex","currentIndex","direction","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","selectOption","setValue","focus","preventScroll","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","target","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","replace","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport InputTrait from '@/lib/components/traits/InputTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\ntype ComboboxOptionData = { value: string; label: string }\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String })\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private inputTrait: InputTrait\n private openListenersAttached = false\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.inputTrait = this.addTrait(\n new InputTrait(this, {\n getInputElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n onValueChanged: (value) => {\n this.filter = value.toLowerCase()\n\n const options = this.getFilteredOptions()\n\n if (options.length === 0) {\n this.hide()\n return\n }\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n },\n })\n )\n\n this.listboxId = `listbox-${this.inputTrait.inputId}`\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.inputTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.inputTrait.inputId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.value}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.inputTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mouseup=${this.onListboxMouseUp}\n >\n ${options.map(\n (option, index) =>\n html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.label}\n </div>`\n )}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n return this.getOptions().filter((option) =>\n option.label.toLowerCase().includes(this.filter)\n )\n }\n\n private getOptions (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n }\n\n private selectOption (value: string) {\n this.inputTrait.setValue(value)\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex].value)\n } else if (!this.open) {\n event.preventDefault()\n this.inputTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n }\n }\n\n private onListboxMouseUp (event: MouseEvent) {\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option.value)\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox.esm.js","names":["customElement","WebComponent","html","nothing","property","query","state","InputTrait","styles","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_inputElementDecs","_filterDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","inputElement","filter","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_inputElement","_init_filter","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","inputTrait","addTrait","getInputElement","getInternals","onValueChanged","toLowerCase","options","getFilteredOptions","length","getInitialActiveIndex","listboxId","inputId","disconnectedCallback","removeOpenListeners","render","activeOption","undefined","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseDown","map","option","index","setActiveIndex","getOptions","querySelectorAll","Array","from","textContent","selectedIndex","findIndex","getNextIndex","currentIndex","direction","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","selectOption","setValue","focus","preventScroll","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","target","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","replace","e","c","_initClass","_applyDecs","_Class","_identity","default"],"sources":["../../../src/components/combobox/Combobox.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport InputTrait from '@/lib/components/traits/InputTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\ntype ComboboxOptionData = { value: string; label: string }\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String })\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private inputTrait: InputTrait\n private openListenersAttached = false\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.inputTrait = this.addTrait(\n new InputTrait(this, {\n getInputElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n onValueChanged: (value) => {\n this.filter = value.toLowerCase()\n\n const options = this.getFilteredOptions()\n\n if (options.length === 0) {\n this.hide()\n return\n }\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n },\n })\n )\n\n this.listboxId = `listbox-${this.inputTrait.inputId}`\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.inputTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.inputTrait.inputId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.value}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.inputTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mousedown=${this.onListboxMouseDown}\n >\n ${options.map(\n (option, index) =>\n html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.label}\n </div>`\n )}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n return this.getOptions().filter((option) =>\n option.label.toLowerCase().includes(this.filter)\n )\n }\n\n private getOptions (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.filter = ''\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n }\n\n private selectOption (value: string) {\n this.inputTrait.setValue(value)\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex].value)\n } else if (!this.open) {\n event.preventDefault()\n this.inputTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n }\n }\n\n private onListboxMouseDown (event: MouseEvent) {\n event.preventDefault()\n\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option.value)\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/combobox-
|
|
1
|
+
import { n as e, t } from "../chunks/combobox-B7a6BjQr.js";
|
|
2
2
|
export { e as Combobox, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/dialog-
|
|
1
|
+
import { n as e, t } from "../chunks/dialog-Bn4qiZi-.js";
|
|
2
2
|
export { e as Dialog, t as default };
|
package/dist/components/guard.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/guard-
|
|
1
|
+
import { n as e, t } from "../chunks/guard-Cxl9QbaG.js";
|
|
2
2
|
export { e as Guard, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/login-button-
|
|
1
|
+
import { n as e, t } from "../chunks/login-button-ChyF_OoC.js";
|
|
2
2
|
export { e as LoginButton, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as e, r as t } from "../chunks/auth-
|
|
1
|
+
import { i as e, r as t } from "../chunks/auth-DIRGfFle.js";
|
|
2
2
|
export { e as LoginModal, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/logout-button-
|
|
1
|
+
import { n as e, t } from "../chunks/logout-button-BRPS8630.js";
|
|
2
2
|
export { e as LogoutButton, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/provider-
|
|
1
|
+
import { n as e, t } from "../chunks/provider-D0RqwRoM.js";
|
|
2
2
|
export { e as Provider, t as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/signup-button-
|
|
1
|
+
import { n as e, t } from "../chunks/signup-button-Df4rYzNO.js";
|
|
2
2
|
export { e as SignupButton, t as default };
|
package/dist/components.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import "./chunks/auth-
|
|
2
|
-
import "./chunks/dialog-
|
|
1
|
+
import "./chunks/auth-DIRGfFle.js";
|
|
2
|
+
import "./chunks/dialog-Bn4qiZi-.js";
|
|
3
3
|
import "./chunks/dialog-header-CWIAAoDo.js";
|
|
4
|
-
import "./chunks/button-
|
|
4
|
+
import "./chunks/button-CBQEwOtX.js";
|
|
5
5
|
import "./chunks/dialog-content-fdJrkCyB.js";
|
|
6
6
|
import "./chunks/dialog-footer-Bs_p2Nn9.js";
|
|
7
|
-
import "./chunks/combobox-
|
|
7
|
+
import "./chunks/combobox-B7a6BjQr.js";
|
|
8
8
|
import "./chunks/combobox-option-DiR3VpyT.js";
|
|
9
|
-
import "./chunks/avatar-
|
|
10
|
-
import "./chunks/login-button-
|
|
11
|
-
import "./chunks/logout-button-
|
|
9
|
+
import "./chunks/avatar-CLJz6mOV.js";
|
|
10
|
+
import "./chunks/login-button-ChyF_OoC.js";
|
|
11
|
+
import "./chunks/logout-button-BRPS8630.js";
|
|
12
12
|
import "./chunks/menu-item-CWg-eS4V.js";
|
|
13
13
|
import "./chunks/menu-DNcuV-1J.js";
|
|
14
|
-
import "./chunks/signup-button-
|
|
15
|
-
import "./chunks/account-
|
|
14
|
+
import "./chunks/signup-button-Df4rYzNO.js";
|
|
15
|
+
import "./chunks/account-CWY924jw.js";
|
|
16
16
|
import "./components/dialog-provider.js";
|
|
17
17
|
import "./chunks/dialogs-root-Cv932Aqm.js";
|
|
18
18
|
import "./chunks/footer-kVa_uMeQ.js";
|
|
19
|
-
import "./chunks/guard-
|
|
19
|
+
import "./chunks/guard-Cxl9QbaG.js";
|
|
20
20
|
import "./chunks/input-BF224Jid.js";
|
|
21
21
|
import "./chunks/photo-capture-tiBsdSbA.js";
|
|
22
|
-
import "./chunks/provider-
|
|
22
|
+
import "./chunks/provider-D0RqwRoM.js";
|
|
23
23
|
import "./chunks/select-D8dW53pr.js";
|
|
24
24
|
import "./chunks/select-option-B-6ULCpQ.js";
|
|
25
25
|
import "./chunks/solid-emblem-BDzhMTjL.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h as e } from "./chunks/solid-logic.esm-BhVcNu8u.js";
|
|
2
|
-
import { C as t, S as n, _ as r, a as i, b as a, c as o, d as s, f as c, g as l, h as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b, v as x, x as S, y as C } from "./chunks/src-
|
|
3
|
-
import { a as w, c as T, l as E, n as D, o as O, s as k, t as A, u as j } from "./chunks/auth-
|
|
2
|
+
import { C as t, S as n, _ as r, a as i, b as a, c as o, d as s, f as c, g as l, h as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b, v as x, x as S, y as C } from "./chunks/src-Dxxeu4rj.js";
|
|
3
|
+
import { a as w, c as T, l as E, n as D, o as O, s as k, t as A, u as j } from "./chunks/auth-DIRGfFle.js";
|
|
4
4
|
import { n as M, t as N } from "./chunks/context-uE5jJlS0.js";
|
|
5
5
|
import { a as P, i as F, n as I, o as L, r as R, t as z } from "./chunks/components-C1LEhsaK.js";
|
|
6
6
|
import { t as B } from "./chunks/show-dialog-eEW5yRBv.js";
|