@mhmo91/schmancy 0.2.61 → 0.2.64
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/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/form-C4cWM0em.cjs +8 -0
- package/dist/form-C4cWM0em.cjs.map +1 -0
- package/dist/{form-BphauHSv.js → form-k_nFgiSi.js} +11 -11
- package/dist/form-k_nFgiSi.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +4 -4
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/select-CENAt67G.cjs +55 -0
- package/dist/select-CENAt67G.cjs.map +1 -0
- package/dist/{select-D3PjbyfA.js → select-CmNozz2O.js} +45 -36
- package/dist/select-CmNozz2O.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/sheet-CpxhwF3c.cjs +41 -0
- package/dist/sheet-CpxhwF3c.cjs.map +1 -0
- package/dist/{sheet-DqckAHq4.js → sheet-DEnU17L8.js} +6 -2
- package/dist/sheet-DEnU17L8.js.map +1 -0
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/{teleport.component-C-DCNNPE.js → teleport.component-BdqDgtgF.js} +4 -4
- package/dist/{teleport.component-C-DCNNPE.js.map → teleport.component-BdqDgtgF.js.map} +1 -1
- package/dist/{teleport.component-BtFkJ2lv.cjs → teleport.component-Cxfkwkfm.cjs} +2 -2
- package/dist/{teleport.component-BtFkJ2lv.cjs.map → teleport.component-Cxfkwkfm.cjs.map} +1 -1
- package/dist/teleport.js +1 -1
- package/package.json +1 -1
- package/types/src/select/select.d.ts +14 -1
- package/dist/form-BphauHSv.js.map +0 -1
- package/dist/form-C0uDoLE1.cjs +0 -8
- package/dist/form-C0uDoLE1.cjs.map +0 -1
- package/dist/select-BvlBg33k.cjs +0 -55
- package/dist/select-BvlBg33k.cjs.map +0 -1
- package/dist/select-D3PjbyfA.js.map +0 -1
- package/dist/sheet-Crzdg6fC.cjs +0 -41
- package/dist/sheet-Crzdg6fC.cjs.map +0 -1
- package/dist/sheet-DqckAHq4.js.map +0 -1
package/dist/card.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./teleport.component-
|
|
1
|
+
"use strict";require("./teleport.component-Cxfkwkfm.cjs");
|
|
2
2
|
//# sourceMappingURL=card.cjs.map
|
package/dist/card.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./teleport.component-
|
|
1
|
+
import "./teleport.component-BdqDgtgF.js";
|
|
2
2
|
//# sourceMappingURL=card.js.map
|
package/dist/content-drawer.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./teleport.component-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./teleport.component-Cxfkwkfm.cjs");Object.defineProperty(exports,"SchmancyContentDrawer",{enumerable:!0,get:()=>e.SchmancyContentDrawer}),exports.SchmancyContentDrawerID=e.SchmancyContentDrawerID,Object.defineProperty(exports,"SchmancyContentDrawerMain",{enumerable:!0,get:()=>e.SchmancyContentDrawerMain}),exports.SchmancyContentDrawerMaxHeight=e.SchmancyContentDrawerMaxHeight,exports.SchmancyContentDrawerMinWidth=e.SchmancyContentDrawerMinWidth,Object.defineProperty(exports,"SchmancyContentDrawerSheet",{enumerable:!0,get:()=>e.SchmancyContentDrawerSheet}),exports.SchmancyContentDrawerSheetMode=e.SchmancyContentDrawerSheetMode,exports.SchmancyContentDrawerSheetState=e.SchmancyContentDrawerSheetState,exports.schmancyContentDrawer=e.schmancyContentDrawer;
|
|
2
2
|
//# sourceMappingURL=content-drawer.cjs.map
|
package/dist/content-drawer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as n, b as t, f as r, c, d as h, g as S, S as o, a as s, s as m } from "./teleport.component-
|
|
1
|
+
import { e as n, b as t, f as r, c, d as h, g as S, S as o, a as s, s as m } from "./teleport.component-BdqDgtgF.js";
|
|
2
2
|
export {
|
|
3
3
|
n as SchmancyContentDrawer,
|
|
4
4
|
t as SchmancyContentDrawerID,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";const i=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const u=require("./tailwind.mixin-04vClyRW.cjs"),h=require("lit"),l=require("lit/decorators.js");var p=Object.defineProperty,d=Object.getOwnPropertyDescriptor,m=(e,t,s,n)=>{for(var o,c=n>1?void 0:n?d(t,s):t,r=e.length-1;r>=0;r--)(o=e[r])&&(c=(n?o(t,s,c):o(c))||c);return n&&c&&p(t,s,c),c};let a=class extends u.TailwindElement(){constructor(){super(),this.$disconnecting=new i.Subject,this._controlsWithChecked=["input","radio","schmancy-radio","schmancy-switch","schmancy-checkbox","schmancy-radio-group","schmancy-autocomplete","schmancy-select"],this._controlsWithValue=["input","schmancy-input","schmancy-mask-input","textarea","schmancy-rating","schmancy-select","schmancy-combo","schmancy-date-time-input","schmancy-autocomplete","schmancy-checkbox","schmancy-select"],this._controlsThatSubmit=["button","schmancy-input","schmancy-button","schmancy-icon-button"],this.novalidate=!1,i.merge(i.fromEvent(this,"click").pipe(i.tap(e=>{var t;((t=e.target.type)==null?void 0:t.toLowerCase())==="submit"&&this.handleSubmitRequest(e)})),i.fromEvent(this,"keydown").pipe(i.tap(e=>{e.code!=="Enter"&&e.key!=="Enter"||this.handleSubmitRequest(e)}))).pipe(i.takeUntil(this.$disconnecting)).subscribe()}submit(){const e=this.getFormData();return!(!this.novalidate&&!this.reportValidity())&&(this.dispatchEvent(new CustomEvent("submit",{detail:e})),!0)}reset(){this.getFormElements().forEach(e=>{const t=e.tagName.toLowerCase();if(t==="select")for(let s=0;s<e.options.length;s++){const n=e.options[s];n.selected=n.defaultSelected}else t==="input"&&(e.type==="checkbox"||e.type=="radio")||t!=="input"&&this._controlsWithChecked.includes(t)?e.checked=e.hasAttribute("checked"):t==="schmancy-input"||t==="schmancy-rating"||t==="schmancy-mask-input"||t==="schmancy-date-time-input"?e.value=e.getAttribute("value"):this._controlsWithValue.includes(t)&&(e.value=e.defaultValue)}),this.dispatchEvent(new CustomEvent("reset"))}getFormElements(){var n;const e=(n=this.shadowRoot)==null?void 0:n.querySelector("slot"),t=e==null?void 0:e.assignedElements({flatten:!0}),s=[];return t==null||t.forEach(o=>{o.disabled||s.push(o);const c=Array.from(o.getElementsByTagName("*")).filter(r=>!r.disabled);s.push(...c)}),s}getFormData(){const e=new FormData;return this.getFormElements().forEach(t=>{const s=t.tagName.toLowerCase();if(s==="select")for(let n=0;n<t.options.length;n++){const o=t.options[n];o.selected&&e.append(t.name,o.value)}else this._controlsWithChecked.includes(s)&&t.checked?e.append(t.name,t.value||"on"):this._controlsWithValue.includes(s)&&t.type!=="checkbox"&&t.type!=="radio"&&t.type!=="submit"&&e.append(t.name,t.value)}),e}reportValidity(){return!this.getFormElements().some(e=>typeof e.reportValidity=="function"&&e.reportValidity()===!1)}handleSubmitRequest(e){var s;const t=e.target;return this._controlsThatSubmit.includes(t.tagName.toLowerCase())?this.submit():((s=t.type)==null?void 0:s.toLowerCase())==="reset"&&this.reset(),!0}render(){return h.html`<slot></slot>`}};a.tagName="schmancy-form",a.shadowRootOptions={...h.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!1},a.styles=h.css`
|
|
2
|
+
:host {
|
|
3
|
+
height: 100%;
|
|
4
|
+
width: 100%;
|
|
5
|
+
display: block;
|
|
6
|
+
}
|
|
7
|
+
`,m([l.property({type:Boolean,reflect:!0})],a.prototype,"novalidate",2),a=m([l.customElement("schmancy-form")],a);
|
|
8
|
+
//# sourceMappingURL=form-C4cWM0em.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-C4cWM0em.cjs","sources":["../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element schmancy-form\n *\n * @slot - Default slot for the form.\n *\n * @fires submit - Emitted when the form is submitted.\n * @fires reset - Emitted when the form is reset.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'schmancy-form'\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t\t'schmancy-select',\n\t]\n\tprivate _controlsWithValue = [\n\t\t'input',\n\t\t'schmancy-input',\n\t\t'schmancy-mask-input',\n\t\t'textarea',\n\t\t'schmancy-rating',\n\t\t'schmancy-select',\n\t\t'schmancy-combo',\n\t\t'schmancy-date-time-input',\n\t\t'schmancy-autocomplete',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-select',\n\t]\n\tprivate _controlsThatSubmit = ['button', 'schmancy-input', 'schmancy-button', 'schmancy-icon-button']\n\n\t/** Specifies if form data validation should be skipped on submit.\n\t * @attr novalidate\n\t * @type {boolean}\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) public novalidate = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(this, 'click').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif ((e.target as HTMLButtonElement).type?.toLowerCase() === 'submit') this.handleSubmitRequest(e)\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.code === 'Enter' || e.key === 'Enter') {\n\t\t\t\t\t\tthis.handleSubmitRequest(e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.$disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\t/** Submits the form. */\n\tpublic submit(): boolean {\n\t\tconst formData = this.getFormData()\n\t\tif (!this.novalidate && !this.reportValidity()) {\n\t\t\treturn false\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('submit', { detail: formData }))\n\t\treturn true\n\t}\n\n\t/** Resets the form. */\n\tpublic reset() {\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\toption.selected = option.defaultSelected\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t(tagName === 'input' && (element.type === 'checkbox' || element.type == 'radio')) ||\n\t\t\t\t(tagName !== 'input' && this._controlsWithChecked.includes(tagName))\n\t\t\t) {\n\t\t\t\telement.checked = element.hasAttribute('checked')\n\t\t\t} else if (\n\t\t\t\ttagName === 'schmancy-input' ||\n\t\t\t\ttagName === 'schmancy-rating' ||\n\t\t\t\ttagName === 'schmancy-mask-input' ||\n\t\t\t\ttagName === 'schmancy-date-time-input'\n\t\t\t) {\n\t\t\t\telement.value = element.getAttribute('value')\n\t\t\t} else if (this._controlsWithValue.includes(tagName)) {\n\t\t\t\telement.value = element.defaultValue\n\t\t\t}\n\t\t})\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\tprivate getFormElements(): any[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: any[] = []\n\t\tassignedElements?.forEach((element: any) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter((element: any) => !element.disabled)\n\t\t\tformElements.push(...children)\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\tif (option.selected) {\n\t\t\t\t\t\tformData.append(element.name, option.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this._controlsWithChecked.includes(tagName) && element.checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tthis._controlsWithValue.includes(tagName) &&\n\t\t\t\telement.type !== 'checkbox' &&\n\t\t\t\telement.type !== 'radio' &&\n\t\t\t\telement.type !== 'submit'\n\t\t\t) {\n\t\t\t\tformData.append(element.name, element.value)\n\t\t\t}\n\t\t})\n\n\t\treturn formData\n\t}\n\n\t/** Checks for validity of the form. */\n\tpublic reportValidity(): boolean {\n\t\tconst formElements = this.getFormElements()\n\t\treturn !formElements.some(\n\t\t\telement => typeof element.reportValidity === 'function' && element.reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement: any = event.target as HTMLElement\n\t\tif (this._controlsThatSubmit.includes(targetElement.tagName.toLowerCase())) {\n\t\t\tthis.submit()\n\t\t} else if (targetElement.type?.toLowerCase() === 'reset') {\n\t\t\tthis.reset()\n\t\t}\n\n\t\treturn true\n\t}\n\n\tprotected override render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n"],"names":["SchmancyForm","TailwindElement","constructor","super","this","$disconnecting","Subject","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","tagName","i","options","length","option","selected","defaultSelected","includes","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","push","children","Array","from","getElementsByTagName","filter","FormData","append","name","some","event","targetElement","submit","reset","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement"],"mappings":"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"}
|
|
@@ -2,15 +2,15 @@ import { Subject as l, merge as u, fromEvent as r, tap as h, takeUntil as p } fr
|
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
4
|
import { T as d } from "./tailwind.mixin-B1TvmOuJ.js";
|
|
5
|
-
import { html as y, LitElement as
|
|
5
|
+
import { html as y, LitElement as b, css as g } from "lit";
|
|
6
6
|
import { property as f, customElement as E } from "lit/decorators.js";
|
|
7
|
-
var
|
|
8
|
-
for (var a,
|
|
9
|
-
return o &&
|
|
7
|
+
var k = Object.defineProperty, v = Object.getOwnPropertyDescriptor, m = (t, e, s, o) => {
|
|
8
|
+
for (var a, c = o > 1 ? void 0 : o ? v(e, s) : e, i = t.length - 1; i >= 0; i--) (a = t[i]) && (c = (o ? a(e, s, c) : a(c)) || c);
|
|
9
|
+
return o && c && k(e, s, c), c;
|
|
10
10
|
};
|
|
11
|
-
let
|
|
11
|
+
let n = class extends d() {
|
|
12
12
|
constructor() {
|
|
13
|
-
super(), this.$disconnecting = new l(), this._controlsWithChecked = ["input", "radio", "schmancy-radio", "schmancy-switch", "schmancy-checkbox", "schmancy-radio-group", "schmancy-autocomplete"], this._controlsWithValue = ["input", "schmancy-input", "schmancy-mask-input", "textarea", "schmancy-rating", "schmancy-select", "schmancy-combo", "schmancy-date-time-input", "schmancy-autocomplete"], this._controlsThatSubmit = ["button", "schmancy-input", "schmancy-button", "schmancy-icon-button"], this.novalidate = !1, u(r(this, "click").pipe(h((t) => {
|
|
13
|
+
super(), this.$disconnecting = new l(), this._controlsWithChecked = ["input", "radio", "schmancy-radio", "schmancy-switch", "schmancy-checkbox", "schmancy-radio-group", "schmancy-autocomplete", "schmancy-select"], this._controlsWithValue = ["input", "schmancy-input", "schmancy-mask-input", "textarea", "schmancy-rating", "schmancy-select", "schmancy-combo", "schmancy-date-time-input", "schmancy-autocomplete", "schmancy-checkbox", "schmancy-select"], this._controlsThatSubmit = ["button", "schmancy-input", "schmancy-button", "schmancy-icon-button"], this.novalidate = !1, u(r(this, "click").pipe(h((t) => {
|
|
14
14
|
var e;
|
|
15
15
|
((e = t.target.type) == null ? void 0 : e.toLowerCase()) === "submit" && this.handleSubmitRequest(t);
|
|
16
16
|
})), r(this, "keydown").pipe(h((t) => {
|
|
@@ -36,8 +36,8 @@ let i = class extends d() {
|
|
|
36
36
|
const t = (o = this.shadowRoot) == null ? void 0 : o.querySelector("slot"), e = t == null ? void 0 : t.assignedElements({ flatten: !0 }), s = [];
|
|
37
37
|
return e == null || e.forEach((a) => {
|
|
38
38
|
a.disabled || s.push(a);
|
|
39
|
-
const
|
|
40
|
-
s.push(...
|
|
39
|
+
const c = Array.from(a.getElementsByTagName("*")).filter((i) => !i.disabled);
|
|
40
|
+
s.push(...c);
|
|
41
41
|
}), s;
|
|
42
42
|
}
|
|
43
43
|
getFormData() {
|
|
@@ -63,11 +63,11 @@ let i = class extends d() {
|
|
|
63
63
|
return y`<slot></slot>`;
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
|
-
|
|
66
|
+
n.tagName = "schmancy-form", n.shadowRootOptions = { ...b.shadowRootOptions, mode: "open", delegatesFocus: !1 }, n.styles = g`
|
|
67
67
|
:host {
|
|
68
68
|
height: 100%;
|
|
69
69
|
width: 100%;
|
|
70
70
|
display: block;
|
|
71
71
|
}
|
|
72
|
-
`, m([f({ type: Boolean, reflect: !0 })],
|
|
73
|
-
//# sourceMappingURL=form-
|
|
72
|
+
`, m([f({ type: Boolean, reflect: !0 })], n.prototype, "novalidate", 2), n = m([E("schmancy-form")], n);
|
|
73
|
+
//# sourceMappingURL=form-k_nFgiSi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-k_nFgiSi.js","sources":["../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element schmancy-form\n *\n * @slot - Default slot for the form.\n *\n * @fires submit - Emitted when the form is submitted.\n * @fires reset - Emitted when the form is reset.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'schmancy-form'\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t\t'schmancy-select',\n\t]\n\tprivate _controlsWithValue = [\n\t\t'input',\n\t\t'schmancy-input',\n\t\t'schmancy-mask-input',\n\t\t'textarea',\n\t\t'schmancy-rating',\n\t\t'schmancy-select',\n\t\t'schmancy-combo',\n\t\t'schmancy-date-time-input',\n\t\t'schmancy-autocomplete',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-select',\n\t]\n\tprivate _controlsThatSubmit = ['button', 'schmancy-input', 'schmancy-button', 'schmancy-icon-button']\n\n\t/** Specifies if form data validation should be skipped on submit.\n\t * @attr novalidate\n\t * @type {boolean}\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) public novalidate = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(this, 'click').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif ((e.target as HTMLButtonElement).type?.toLowerCase() === 'submit') this.handleSubmitRequest(e)\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.code === 'Enter' || e.key === 'Enter') {\n\t\t\t\t\t\tthis.handleSubmitRequest(e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.$disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\t/** Submits the form. */\n\tpublic submit(): boolean {\n\t\tconst formData = this.getFormData()\n\t\tif (!this.novalidate && !this.reportValidity()) {\n\t\t\treturn false\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('submit', { detail: formData }))\n\t\treturn true\n\t}\n\n\t/** Resets the form. */\n\tpublic reset() {\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\toption.selected = option.defaultSelected\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t(tagName === 'input' && (element.type === 'checkbox' || element.type == 'radio')) ||\n\t\t\t\t(tagName !== 'input' && this._controlsWithChecked.includes(tagName))\n\t\t\t) {\n\t\t\t\telement.checked = element.hasAttribute('checked')\n\t\t\t} else if (\n\t\t\t\ttagName === 'schmancy-input' ||\n\t\t\t\ttagName === 'schmancy-rating' ||\n\t\t\t\ttagName === 'schmancy-mask-input' ||\n\t\t\t\ttagName === 'schmancy-date-time-input'\n\t\t\t) {\n\t\t\t\telement.value = element.getAttribute('value')\n\t\t\t} else if (this._controlsWithValue.includes(tagName)) {\n\t\t\t\telement.value = element.defaultValue\n\t\t\t}\n\t\t})\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\tprivate getFormElements(): any[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: any[] = []\n\t\tassignedElements?.forEach((element: any) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter((element: any) => !element.disabled)\n\t\t\tformElements.push(...children)\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\tif (option.selected) {\n\t\t\t\t\t\tformData.append(element.name, option.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this._controlsWithChecked.includes(tagName) && element.checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tthis._controlsWithValue.includes(tagName) &&\n\t\t\t\telement.type !== 'checkbox' &&\n\t\t\t\telement.type !== 'radio' &&\n\t\t\t\telement.type !== 'submit'\n\t\t\t) {\n\t\t\t\tformData.append(element.name, element.value)\n\t\t\t}\n\t\t})\n\n\t\treturn formData\n\t}\n\n\t/** Checks for validity of the form. */\n\tpublic reportValidity(): boolean {\n\t\tconst formElements = this.getFormElements()\n\t\treturn !formElements.some(\n\t\t\telement => typeof element.reportValidity === 'function' && element.reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement: any = event.target as HTMLElement\n\t\tif (this._controlsThatSubmit.includes(targetElement.tagName.toLowerCase())) {\n\t\t\tthis.submit()\n\t\t} else if (targetElement.type?.toLowerCase() === 'reset') {\n\t\t\tthis.reset()\n\t\t}\n\n\t\treturn true\n\t}\n\n\tprotected override render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n"],"names":["SchmancyForm","TailwindElement","constructor","super","this","$disconnecting","Subject","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","tagName","i","options","length","option","selected","defaultSelected","includes","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","push","children","Array","from","getElementsByTagName","filter","FormData","append","name","some","event","targetElement","submit","reset","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement"],"mappings":"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"}
|
package/dist/form.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./form-
|
|
1
|
+
"use strict";require("./form-C4cWM0em.cjs");
|
|
2
2
|
//# sourceMappingURL=form.cjs.map
|
package/dist/form.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./form-
|
|
1
|
+
import "./form-k_nFgiSi.js";
|
|
2
2
|
//# sourceMappingURL=form.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./animated-text-k30n5ffs.cjs");const r=require("./area.component-CDyk4TQX.cjs");require("./autocomplete-Cwn1Bwj7.cjs"),require("./spinner-Azsjno5r.cjs");const o=require("./icon-button-BkNubwVr.cjs"),e=require("./teleport.component-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./animated-text-k30n5ffs.cjs");const r=require("./area.component-CDyk4TQX.cjs");require("./autocomplete-Cwn1Bwj7.cjs"),require("./spinner-Azsjno5r.cjs");const o=require("./icon-button-BkNubwVr.cjs"),e=require("./teleport.component-Cxfkwkfm.cjs"),S=require("./checkbox-g8T27Ih6.cjs");require("./chips-8G-fC-BB.cjs");const u=require("./payment-card-form-V5STwP-8.cjs");require("./date-range-DT5Gc-8v.cjs");const y=require("./delay-Dcxd6izx.cjs"),c=require("./ripple-C2BHbhcS.cjs");require("./divider-2FKklOvJ.cjs"),require("./form-C4cWM0em.cjs"),require("./icon-CLgg4kma.cjs"),require("./input-BqSrvFYo.cjs");const t=require("./flex-wH1HLvFA.cjs"),m=require("./list-CkruFXk2.cjs");require("./menu-TbqjiUg2.cjs");const a=require("./outlet-eGbH9Byt.cjs");require("./option-J1ewccBk.cjs");const b=require("./radio-group-DPqaJa00.cjs"),l=require("./rxjs-utils.cjs");require("rxjs"),require("./index-DyJ0oDpR.cjs");const d=require("./select-CENAt67G.cjs"),n=require("./sheet-CpxhwF3c.cjs"),h=require("./slider-0Uk2z9y_.cjs"),p=require("./surface-qITC3jCV.cjs");require("./table-CBJ26MIg.cjs"),require("./tabs-group-CXTZCyMb.cjs"),require("./textarea-Ct0tCiZE.cjs");const i=require("./theme.component-DM774Lyr.cjs"),g=require("./theme.interface-Xg5Zi46a.cjs");require("./theme-button-CZICh6mv.cjs");const f=require("./tree-DAEL96xl.cjs"),q=require("./types.cjs"),O=require("./typewriter-BBRroqBP.cjs"),w=require("./typography-_8EJsERF.cjs"),D=require("./intersection-CVvaDv96.cjs");exports.FINDING_MORTIES=r.FINDING_MORTIES,exports.HERE_RICKY=r.HERE_RICKY,exports.HISTORY_STRATEGY=r.HISTORY_STRATEGY,Object.defineProperty(exports,"SchmancyArea",{enumerable:!0,get:()=>r.SchmancyArea}),exports.area=r.area,exports.routerHistory=r.routerHistory,Object.defineProperty(exports,"SchmancyButton",{enumerable:!0,get:()=>o.SchmancyButton}),Object.defineProperty(exports,"SchmnacyIconButton",{enumerable:!0,get:()=>o.SchmnacyIconButton}),exports.$drawer=e.$drawer,exports.HereMorty=e.HereMorty,Object.defineProperty(exports,"SchmancyContentDrawer",{enumerable:!0,get:()=>e.SchmancyContentDrawer}),exports.SchmancyContentDrawerID=e.SchmancyContentDrawerID,Object.defineProperty(exports,"SchmancyContentDrawerMain",{enumerable:!0,get:()=>e.SchmancyContentDrawerMain}),exports.SchmancyContentDrawerMaxHeight=e.SchmancyContentDrawerMaxHeight,exports.SchmancyContentDrawerMinWidth=e.SchmancyContentDrawerMinWidth,Object.defineProperty(exports,"SchmancyContentDrawerSheet",{enumerable:!0,get:()=>e.SchmancyContentDrawerSheet}),exports.SchmancyContentDrawerSheetMode=e.SchmancyContentDrawerSheetMode,exports.SchmancyContentDrawerSheetState=e.SchmancyContentDrawerSheetState,Object.defineProperty(exports,"SchmancyDrawerAppbar",{enumerable:!0,get:()=>e.SchmancyDrawerAppbar}),exports.SchmancyDrawerNavbarMode=e.SchmancyDrawerNavbarMode,exports.SchmancyDrawerNavbarState=e.SchmancyDrawerNavbarState,Object.defineProperty(exports,"SchmancyNavigationDrawer",{enumerable:!0,get:()=>e.SchmancyNavigationDrawer}),Object.defineProperty(exports,"SchmancyNavigationDrawerContent",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerContent}),Object.defineProperty(exports,"SchmancyNavigationDrawerSidebar",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerSidebar}),Object.defineProperty(exports,"SchmancyTeleportation",{enumerable:!0,get:()=>e.SchmancyTeleportation}),exports.WhereAreYouRicky=e.WhereAreYouRicky,exports.schmancyContentDrawer=e.schmancyContentDrawer,exports.schmancyNavDrawer=e.schmancyNavDrawer,exports.teleport=e.teleport,Object.defineProperty(exports,"SchmancyCheckbox",{enumerable:!0,get:()=>S.SchmancyCheckbox}),Object.defineProperty(exports,"SchmancyPaymentCardForm",{enumerable:!0,get:()=>u.SchmancyPaymentCardForm}),Object.defineProperty(exports,"SchmancyDelay",{enumerable:!0,get:()=>y.SchmancyDelay}),exports.delayContext=y.delayContext,exports.color=c.color,exports.fullHeight=c.fullHeight,exports.ripple=c.ripple,Object.defineProperty(exports,"SchmancyFlex",{enumerable:!0,get:()=>t.SchmancyFlex}),Object.defineProperty(exports,"SchmancyFlexV2",{enumerable:!0,get:()=>t.SchmancyFlexV2}),Object.defineProperty(exports,"SchmancyGrid",{enumerable:!0,get:()=>t.SchmancyGrid}),Object.defineProperty(exports,"SchmancyScroll",{enumerable:!0,get:()=>t.SchmancyScroll}),Object.defineProperty(exports,"List",{enumerable:!0,get:()=>m.List}),Object.defineProperty(exports,"SchmancyListItem",{enumerable:!0,get:()=>m.SchmancyListItem}),exports.$notify=a.$notify,Object.defineProperty(exports,"SchmancyNotification",{enumerable:!0,get:()=>a.SchmancyNotification}),Object.defineProperty(exports,"SchmancyNotificationOutlet",{enumerable:!0,get:()=>a.SchmancyNotificationOutlet}),Object.defineProperty(exports,"RadioGroup",{enumerable:!0,get:()=>b.RadioGroup}),exports.mutationObserver=l.mutationObserver,Object.defineProperty(exports,"SchmancySelect",{enumerable:!0,get:()=>d.SchmancySelect}),exports.SchmancySheetPosition=n.SchmancySheetPosition,exports.SheetHereMorty=n.SheetHereMorty,exports.SheetWhereAreYouRicky=n.SheetWhereAreYouRicky,exports.sheet=n.sheet,Object.defineProperty(exports,"SchmancySlide",{enumerable:!0,get:()=>h.SchmancySlide}),Object.defineProperty(exports,"SchmancySlider",{enumerable:!0,get:()=>h.SchmancySlider}),Object.defineProperty(exports,"SchmancySurface",{enumerable:!0,get:()=>p.SchmancySurface}),Object.defineProperty(exports,"SchmancyThemeComponent",{enumerable:!0,get:()=>i.SchmancyThemeComponent}),exports.formateTheme=i.formateTheme,exports.tailwindStyles=i.tailwindStyles,exports.SchmancyTheme=g.SchmancyTheme,Object.defineProperty(exports,"SchmancyTree",{enumerable:!0,get:()=>f.SchmancyTree}),exports.SchmancyEvents=q.SchmancyEvents,Object.defineProperty(exports,"TypewriterElement",{enumerable:!0,get:()=>O.TypewriterElement}),Object.defineProperty(exports,"SchmancyTypography",{enumerable:!0,get:()=>w.SchmancyTypography}),exports.intersection$=D.intersection$;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { F as C, H as d, b as T, S as b, a as u, r as N } from "./area.component
|
|
|
3
3
|
import "./autocomplete-BdqEtlUZ.js";
|
|
4
4
|
import "./spinner-N0DFwOAl.js";
|
|
5
5
|
import { S as R, a as v } from "./icon-button-DTmOv8Ny.js";
|
|
6
|
-
import { $ as M, H as g, e as E, b as A, f as F, c as Y, d as $, g as k, S as G, a as O, i as W, k as L, l as _, m as B, j as P, n as j, o as K, W as V, s as q, h as z, t as J } from "./teleport.component-
|
|
6
|
+
import { $ as M, H as g, e as E, b as A, f as F, c as Y, d as $, g as k, S as G, a as O, i as W, k as L, l as _, m as B, j as P, n as j, o as K, W as V, s as q, h as z, t as J } from "./teleport.component-BdqDgtgF.js";
|
|
7
7
|
import { S as U } from "./checkbox-kWG8GEGF.js";
|
|
8
8
|
import "./chips-CcVWASnN.js";
|
|
9
9
|
import { S as Z } from "./payment-card-form-Ctv_rIi1.js";
|
|
@@ -11,7 +11,7 @@ import "./date-range-DmaG6n9K.js";
|
|
|
11
11
|
import { S as ra, d as ea } from "./delay-3BI6NTLb.js";
|
|
12
12
|
import { c as oa, f as ca, r as ma } from "./ripple-BumgqsDT.js";
|
|
13
13
|
import "./divider-BoSDlAmp.js";
|
|
14
|
-
import "./form-
|
|
14
|
+
import "./form-k_nFgiSi.js";
|
|
15
15
|
import "./icon-ClskDmBq.js";
|
|
16
16
|
import "./input-DMV5Kg7d.js";
|
|
17
17
|
import { S as sa, c as Sa, a as ha, b as ia } from "./flex-Rc813PWc.js";
|
|
@@ -23,8 +23,8 @@ import { R as da } from "./radio-group-Pq_gbHVb.js";
|
|
|
23
23
|
import { mutationObserver as ba } from "./rxjs-utils.js";
|
|
24
24
|
import "rxjs";
|
|
25
25
|
import "./index-CuY8m6ta.js";
|
|
26
|
-
import { S as Na } from "./select-
|
|
27
|
-
import { S as Ra, b as va, a as Ia, s as Ma } from "./sheet-
|
|
26
|
+
import { S as Na } from "./select-CmNozz2O.js";
|
|
27
|
+
import { S as Ra, b as va, a as Ia, s as Ma } from "./sheet-DEnU17L8.js";
|
|
28
28
|
import { S as Ea, a as Aa } from "./slider-Bwzc2P35.js";
|
|
29
29
|
import { S as Ya } from "./surface-Cryxe3jX.js";
|
|
30
30
|
import "./table-Ci3U3uYV.js";
|
package/dist/nav-drawer.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./teleport.component-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./teleport.component-Cxfkwkfm.cjs");exports.$drawer=e.$drawer,Object.defineProperty(exports,"SchmancyDrawerAppbar",{enumerable:!0,get:()=>e.SchmancyDrawerAppbar}),exports.SchmancyDrawerNavbarMode=e.SchmancyDrawerNavbarMode,exports.SchmancyDrawerNavbarState=e.SchmancyDrawerNavbarState,Object.defineProperty(exports,"SchmancyNavigationDrawer",{enumerable:!0,get:()=>e.SchmancyNavigationDrawer}),Object.defineProperty(exports,"SchmancyNavigationDrawerContent",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerContent}),Object.defineProperty(exports,"SchmancyNavigationDrawerSidebar",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerSidebar}),exports.schmancyNavDrawer=e.schmancyNavDrawer;
|
|
2
2
|
//# sourceMappingURL=nav-drawer.cjs.map
|
package/dist/nav-drawer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as c, i as e, k as n, l as m, m as s, j as h, n as i, h as t } from "./teleport.component-
|
|
1
|
+
import { $ as c, i as e, k as n, l as m, m as s, j as h, n as i, h as t } from "./teleport.component-BdqDgtgF.js";
|
|
2
2
|
export {
|
|
3
3
|
c as $drawer,
|
|
4
4
|
e as SchmancyDrawerAppbar,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";const n=require("@floating-ui/dom");require("rxjs");const p=require("lit/directives/class-map.js");require("lit/directives/style-map.js");const d=require("./litElement.mixin-AiJtwDLp.cjs");require("./tailwind.mixin-04vClyRW.cjs");const u=require("./ripple-C2BHbhcS.cjs"),y=require("./theme.interface-Xg5Zi46a.cjs"),h=require("lit"),o=require("lit/decorators.js");var m=Object.defineProperty,v=Object.getOwnPropertyDescriptor,l=(e,t,i,s)=>{for(var r,a=s>1?void 0:s?v(t,i):t,c=e.length-1;c>=0;c--)(r=e[c])&&(a=(s?r(t,i,a):r(a))||a);return s&&a&&m(t,i,a),a};exports.SchmancySelect=class extends d.$LitElement(h.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: block;
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
[role='listbox'] {
|
|
8
|
+
/* max-height: 25vh; */ /* Remove the fixed max-height */
|
|
9
|
+
overflow-y: auto;
|
|
10
|
+
outline: none;
|
|
11
|
+
}
|
|
12
|
+
`){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.selectedValues=[],this.multi=!1,this.label="",this.isOpen=!1,this.valueLabel="",this.isValid=!0,this.validationMessage=""}connectedCallback(){super.connectedCallback(),this.id||(this.id=`schmancy-select-${Math.random().toString(36).substr(2,9)}`),this.addEventListener("keydown",this.handleKeyDown)}disconnectedCallback(){var e;super.disconnectedCallback(),this.removeEventListener("keydown",this.handleKeyDown),(e=this.cleanupPositioner)==null||e.call(this)}firstUpdated(){this.syncSelection(),this.setupOptionsAccessibility()}syncSelection(){if(this.multi)this.selectedValues=this.options.filter(e=>e.selected).map(e=>e.value),this.valueLabel=this.selectedValues.length>0?this.options.filter(e=>this.selectedValues.includes(e.value)).map(e=>e.label).join(", "):this.placeholder;else{const e=this.options.find(t=>t.value===this.value);this.valueLabel=(e==null?void 0:e.label)||this.placeholder}}setupOptionsAccessibility(){this.options.forEach((e,t)=>{e.setAttribute("role","option"),e.id||(e.id=`${this.id}-option-${t}`),e.tabIndex=-1,e.setAttribute("aria-selected",String(this.multi?this.selectedValues.includes(e.value):e.value===this.value))})}async positionDropdown(){const e=this.renderRoot.querySelector(".trigger");if(!e||!this.ul)return;const t=window.innerHeight-e.getBoundingClientRect().bottom-10;this.ul.style.maxHeight=`${t}px`,this.cleanupPositioner=n.autoUpdate(e,this.ul,async()=>{const{x:i,y:s}=await n.computePosition(e,this.ul,{placement:"bottom-start",middleware:[n.offset(5),n.flip(),n.shift({padding:5})]});Object.assign(this.ul.style,{left:`${i}px`,top:`${s}px`,position:"absolute"})})}handleKeyDown(e){if(!this.isOpen)return void(["Enter"," ","ArrowDown"].includes(e.key)&&(e.preventDefault(),this.openDropdown(!1)));const t=this.options.findIndex(i=>i.matches(":focus"))??-1;switch(e.key){case"Escape":case"Tab":this.closeDropdown();break;case"ArrowDown":e.preventDefault(),this.focusOption(this.options,Math.min(t+1,this.options.length-1));break;case"ArrowUp":e.preventDefault(),this.focusOption(this.options,Math.max(t-1,0));break;case"Enter":case" ":e.preventDefault(),t>=0&&this.handleOptionSelect(this.options[t].value)}}focusOption(e,t){const i=e[t];if(i){i.focus();const s=this.renderRoot.querySelector(".trigger");s==null||s.setAttribute("aria-activedescendant",i.id)}}async openDropdown(e=!1){this.isOpen=!0,await this.updateComplete,this.positionDropdown(),this.setupOptionsAccessibility();const t=Array.from(this.ul.querySelectorAll('[role="option"]')),i=this.multi?0:t.findIndex(s=>s.getAttribute("value")===this.value);this.focusOption(t,Math.max(i,0)),e&&this.reportValidity()}closeDropdown(){var t;this.isOpen=!1,(t=this.cleanupPositioner)==null||t.call(this);const e=this.renderRoot.querySelector(".trigger");e==null||e.removeAttribute("aria-activedescendant"),e==null||e.focus()}handleOptionSelect(e){var t;if(this.multi){const i=this.options.find(s=>s.value===e);if(!i)return;i.selected=!i.selected,i.selected?this.selectedValues=[...this.selectedValues,e]:this.selectedValues=this.selectedValues.filter(s=>s!==e),this.valueLabel=this.selectedValues.length>0?this.options.filter(s=>this.selectedValues.includes(s.value)).map(s=>s.label).join(", "):this.placeholder,this.dispatchChange(this.selectedValues)}else this.options.forEach(i=>i.selected=i.value===e),this.value=e,this.valueLabel=((t=this.options.find(i=>i.value===e))==null?void 0:t.label)||this.placeholder,this.dispatchChange(e),this.closeDropdown();this.setupOptionsAccessibility()}dispatchChange(e){this.isValid=!0,this.validationMessage="",this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0,composed:!0}))}checkValidity(){return this.isValid=this.multi?this.options.some(e=>e.selected):!!this.value,this.validationMessage=this.isValid?"":"Please select an option.",this.isValid}reportValidity(){return!this.required||(this.checkValidity(),this.inputRef.required=!0,this.isValid?(this.inputRef.reportValidity(),!0):(this.openDropdown(),this.inputRef.reportValidity(),!1))}setCustomValidity(e){this.validationMessage=e}render(){return h.html`
|
|
13
|
+
<div class="relative">
|
|
14
|
+
<schmancy-input
|
|
15
|
+
.name=${this.name}
|
|
16
|
+
tabIndex="0"
|
|
17
|
+
class="trigger"
|
|
18
|
+
role="combobox"
|
|
19
|
+
aria-haspopup="listbox"
|
|
20
|
+
aria-expanded=${this.isOpen}
|
|
21
|
+
aria-controls="options"
|
|
22
|
+
aria-autocomplete="none"
|
|
23
|
+
aria-required=${this.required}
|
|
24
|
+
.label=${this.label}
|
|
25
|
+
.placeholder=${this.placeholder}
|
|
26
|
+
.value=${this.valueLabel}
|
|
27
|
+
.required=${this.required}
|
|
28
|
+
readonly
|
|
29
|
+
@click=${()=>this.isOpen?this.closeDropdown():this.openDropdown(!0)}
|
|
30
|
+
></schmancy-input>
|
|
31
|
+
|
|
32
|
+
<div
|
|
33
|
+
id="overlay"
|
|
34
|
+
class="fixed inset-0"
|
|
35
|
+
?hidden=${!this.isOpen}
|
|
36
|
+
@click=${this.closeDropdown}
|
|
37
|
+
tabindex="-1"
|
|
38
|
+
aria-hidden="true"
|
|
39
|
+
></div>
|
|
40
|
+
|
|
41
|
+
<ul
|
|
42
|
+
id="options"
|
|
43
|
+
role="listbox"
|
|
44
|
+
aria-multiselectable=${this.multi}
|
|
45
|
+
class=${p.classMap({"absolute z-[1000] mt-1 w-full rounded-md shadow-sm":!0,hidden:!this.isOpen})}
|
|
46
|
+
${u.color({bgColor:y.SchmancyTheme.sys.color.surface.container})}
|
|
47
|
+
@click=${e=>{var s;const t=e,i=(s=t.detail)==null?void 0:s.value;i&&this.handleOptionSelect(i)}}
|
|
48
|
+
>
|
|
49
|
+
<slot
|
|
50
|
+
@slotchange=${()=>{this.syncSelection(),this.setupOptionsAccessibility()}}
|
|
51
|
+
></slot>
|
|
52
|
+
</ul>
|
|
53
|
+
</div>
|
|
54
|
+
`}},l([o.property({type:String})],exports.SchmancySelect.prototype,"name",2),l([o.property({type:Boolean})],exports.SchmancySelect.prototype,"required",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"placeholder",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"value",2),l([o.property({type:Array})],exports.SchmancySelect.prototype,"selectedValues",2),l([o.property({type:Boolean})],exports.SchmancySelect.prototype,"multi",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"label",2),l([o.state()],exports.SchmancySelect.prototype,"isOpen",2),l([o.state()],exports.SchmancySelect.prototype,"valueLabel",2),l([o.state()],exports.SchmancySelect.prototype,"isValid",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"validationMessage",2),l([o.query("ul")],exports.SchmancySelect.prototype,"ul",2),l([o.query("schmancy-input")],exports.SchmancySelect.prototype,"inputRef",2),l([o.queryAssignedElements({flatten:!0})],exports.SchmancySelect.prototype,"options",2),exports.SchmancySelect=l([o.customElement("schmancy-select")],exports.SchmancySelect);
|
|
55
|
+
//# sourceMappingURL=select-CENAt67G.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-CENAt67G.cjs","sources":["../src/select/select.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\n\nexport type SchmancySelectChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-select')\nexport class SchmancySelect extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t[role='listbox'] {\n\t\t/* max-height: 25vh; */ /* Remove the fixed max-height */\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t}\n`) {\n\t// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value = '' // for single-select\n\t@property({ type: Array }) selectedValues: string[] = [] // for multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private valueLabel = ''\n\t@state() private isValid = true\n\t@property({ type: String }) validationMessage = ''\n\n\t@query('ul') private ul!: HTMLUListElement\n\n\t@query('schmancy-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tthis.selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.valueLabel =\n\t\t\t\tthis.selectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => this.selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\n\t\t\tthis.valueLabel = selectedOption?.label || this.placeholder\n\t\t}\n\t}\n\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute(\n\t\t\t\t'aria-selected',\n\t\t\t\tString(this.multi ? this.selectedValues.includes(option.value) : option.value === this.value),\n\t\t\t)\n\t\t})\n\t}\n\n\tprivate async positionDropdown() {\n\t\tconst reference = this.renderRoot.querySelector('.trigger') as HTMLElement\n\t\tif (!reference || !this.ul) return\n\n\t\t// Get the available height\n\t\tconst availableHeight = window.innerHeight - reference.getBoundingClientRect().bottom - 10 // 10px buffer\n\t\tthis.ul.style.maxHeight = `${availableHeight}px` // Set max height\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t\t})\n\n\t\t\tObject.assign(this.ul.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t\tposition: 'absolute',\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleKeyDown(e: KeyboardEvent) {\n\t\tif (!this.isOpen) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.openDropdown(false) // Modified: Call openDropdown directly\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(this.options, Math.min(current + 1, this.options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(this.options, Math.max(current - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (current >= 0) this.handleOptionSelect(this.options[current].value)\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tcombobox?.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\t// Add a report flag\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t\t//Check if this needs to be reported\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tcombobox?.removeAttribute('aria-activedescendant')\n\t\tcombobox?.focus()\n\t}\n\n\tprivate handleOptionSelect(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (!option) return\n\n\t\t\toption.selected = !option.selected\n\t\t\tif (option.selected) {\n\t\t\t\tthis.selectedValues = [...this.selectedValues, value]\n\t\t\t} else {\n\t\t\t\tthis.selectedValues = this.selectedValues.filter(v => v !== value)\n\t\t\t}\n\n\t\t\tthis.valueLabel =\n\t\t\t\tthis.selectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => this.selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\n\t\t\tthis.dispatchChange(this.selectedValues)\n\t\t} else {\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\n\t\t\tthis.value = value\n\t\t\tthis.valueLabel = this.options.find(o => o.value === value)?.label || this.placeholder\n\t\t\tthis.dispatchChange(value)\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.isValid = true // Reset validation on change\n\t\tthis.validationMessage = ''\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancySelectChangeEvent['detail']>('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity(): boolean {\n\t\t//Check if there is a value\n\t\tthis.isValid = this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t\tthis.validationMessage = this.isValid ? '' : 'Please select an option.'\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.required) {\n\t\t\tthis.checkValidity()\n\t\t\tthis.inputRef.required = true // Ensure the inner input knows it's required.\n\t\t\tif (!this.isValid) {\n\t\t\t\tthis.openDropdown()\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn true // Always return true if not required\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t}\n\n\trender(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<schmancy-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\tclass=\"trigger\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\taria-required=${this.required}\n\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t.value=${this.valueLabel}\n\t\t\t\t\t.required=${this.required}\n\t\t\t\t\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown(true))}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi}\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\t'absolute z-[1000] mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.syncSelection()\n\t\t\t\t\t\t\tthis.setupOptionsAccessibility()\n\t\t\t\t\t\t}}\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-select': SchmancySelect\n\t}\n}\n"],"names":["SchmancySelect","$LitElement","css","super","arguments","this","required","placeholder","value","selectedValues","multi","label","isOpen","valueLabel","isValid","validationMessage","connectedCallback","id","Math","random","toString","substr","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","syncSelection","setupOptionsAccessibility","options","filter","o","selected","map","length","includes","join","selectedOption","find","forEach","option","index","setAttribute","tabIndex","String","reference","renderRoot","querySelector","ul","availableHeight","window","innerHeight","getBoundingClientRect","bottom","style","maxHeight","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","min","max","handleOptionSelect","focus","combobox","report","updateComplete","positionDropdown","Array","from","querySelectorAll","selectedIndex","getAttribute","reportValidity","removeAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","some","Boolean","checkValidity","inputRef","message","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","prototype","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { autoUpdate as
|
|
1
|
+
import { autoUpdate as d, computePosition as u, offset as y, flip as m, shift as v } from "@floating-ui/dom";
|
|
2
2
|
import "rxjs";
|
|
3
3
|
import { classMap as b } from "lit/directives/class-map.js";
|
|
4
4
|
import "lit/directives/style-map.js";
|
|
5
|
-
import { $ as
|
|
5
|
+
import { $ as f } from "./litElement.mixin-BSd9c8Xf.js";
|
|
6
6
|
import "./tailwind.mixin-B1TvmOuJ.js";
|
|
7
|
-
import { c as
|
|
8
|
-
import { S as
|
|
9
|
-
import { css as
|
|
10
|
-
import { property as
|
|
11
|
-
var
|
|
12
|
-
for (var r,
|
|
13
|
-
return
|
|
7
|
+
import { c as g } from "./ripple-BumgqsDT.js";
|
|
8
|
+
import { S as w } from "./theme.interface-C5Kj6WjD.js";
|
|
9
|
+
import { css as V, html as O } from "lit";
|
|
10
|
+
import { property as a, state as p, query as c, queryAssignedElements as x, customElement as $ } from "lit/decorators.js";
|
|
11
|
+
var D = Object.defineProperty, S = Object.getOwnPropertyDescriptor, l = (e, t, i, s) => {
|
|
12
|
+
for (var r, n = s > 1 ? void 0 : s ? S(t, i) : t, h = e.length - 1; h >= 0; h--) (r = e[h]) && (n = (s ? r(t, i, n) : r(n)) || n);
|
|
13
|
+
return s && n && D(t, i, n), n;
|
|
14
14
|
};
|
|
15
|
-
let o = class extends
|
|
15
|
+
let o = class extends f(V`
|
|
16
16
|
:host {
|
|
17
17
|
display: block;
|
|
18
18
|
position: relative;
|
|
@@ -25,7 +25,7 @@ let o = class extends v(w`
|
|
|
25
25
|
}
|
|
26
26
|
`) {
|
|
27
27
|
constructor() {
|
|
28
|
-
super(...arguments), this.required = !1, this.placeholder = "", this.value = "", this.selectedValues = [], this.multi = !1, this.label = "", this.isOpen = !1, this.valueLabel = "";
|
|
28
|
+
super(...arguments), this.required = !1, this.placeholder = "", this.value = "", this.selectedValues = [], this.multi = !1, this.label = "", this.isOpen = !1, this.valueLabel = "", this.isValid = !0, this.validationMessage = "";
|
|
29
29
|
}
|
|
30
30
|
connectedCallback() {
|
|
31
31
|
super.connectedCallback(), this.id || (this.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`), this.addEventListener("keydown", this.handleKeyDown);
|
|
@@ -53,14 +53,14 @@ let o = class extends v(w`
|
|
|
53
53
|
const e = this.renderRoot.querySelector(".trigger");
|
|
54
54
|
if (!e || !this.ul) return;
|
|
55
55
|
const t = window.innerHeight - e.getBoundingClientRect().bottom - 10;
|
|
56
|
-
this.ul.style.maxHeight = `${t}px`, this.cleanupPositioner =
|
|
57
|
-
const { x:
|
|
58
|
-
Object.assign(this.ul.style, { left: `${
|
|
56
|
+
this.ul.style.maxHeight = `${t}px`, this.cleanupPositioner = d(e, this.ul, async () => {
|
|
57
|
+
const { x: i, y: s } = await u(e, this.ul, { placement: "bottom-start", middleware: [y(5), m(), v({ padding: 5 })] });
|
|
58
|
+
Object.assign(this.ul.style, { left: `${i}px`, top: `${s}px`, position: "absolute" });
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
handleKeyDown(e) {
|
|
62
|
-
if (!this.isOpen) return void (["Enter", " ", "ArrowDown"].includes(e.key) && (e.preventDefault(), this.openDropdown()));
|
|
63
|
-
const t = this.options.findIndex((
|
|
62
|
+
if (!this.isOpen) return void (["Enter", " ", "ArrowDown"].includes(e.key) && (e.preventDefault(), this.openDropdown(!1)));
|
|
63
|
+
const t = this.options.findIndex((i) => i.matches(":focus")) ?? -1;
|
|
64
64
|
switch (e.key) {
|
|
65
65
|
case "Escape":
|
|
66
66
|
case "Tab":
|
|
@@ -78,17 +78,17 @@ let o = class extends v(w`
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
focusOption(e, t) {
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
|
|
81
|
+
const i = e[t];
|
|
82
|
+
if (i) {
|
|
83
|
+
i.focus();
|
|
84
|
+
const s = this.renderRoot.querySelector(".trigger");
|
|
85
|
+
s == null || s.setAttribute("aria-activedescendant", i.id);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
async openDropdown() {
|
|
88
|
+
async openDropdown(e = !1) {
|
|
89
89
|
this.isOpen = !0, await this.updateComplete, this.positionDropdown(), this.setupOptionsAccessibility();
|
|
90
|
-
const
|
|
91
|
-
this.focusOption(
|
|
90
|
+
const t = Array.from(this.ul.querySelectorAll('[role="option"]')), i = this.multi ? 0 : t.findIndex((s) => s.getAttribute("value") === this.value);
|
|
91
|
+
this.focusOption(t, Math.max(i, 0)), e && this.reportValidity();
|
|
92
92
|
}
|
|
93
93
|
closeDropdown() {
|
|
94
94
|
var t;
|
|
@@ -99,14 +99,23 @@ let o = class extends v(w`
|
|
|
99
99
|
handleOptionSelect(e) {
|
|
100
100
|
var t;
|
|
101
101
|
if (this.multi) {
|
|
102
|
-
const
|
|
103
|
-
if (!
|
|
104
|
-
|
|
105
|
-
} else this.options.forEach((
|
|
102
|
+
const i = this.options.find((s) => s.value === e);
|
|
103
|
+
if (!i) return;
|
|
104
|
+
i.selected = !i.selected, i.selected ? this.selectedValues = [...this.selectedValues, e] : this.selectedValues = this.selectedValues.filter((s) => s !== e), this.valueLabel = this.selectedValues.length > 0 ? this.options.filter((s) => this.selectedValues.includes(s.value)).map((s) => s.label).join(", ") : this.placeholder, this.dispatchChange(this.selectedValues);
|
|
105
|
+
} else this.options.forEach((i) => i.selected = i.value === e), this.value = e, this.valueLabel = ((t = this.options.find((i) => i.value === e)) == null ? void 0 : t.label) || this.placeholder, this.dispatchChange(e), this.closeDropdown();
|
|
106
106
|
this.setupOptionsAccessibility();
|
|
107
107
|
}
|
|
108
108
|
dispatchChange(e) {
|
|
109
|
-
this.dispatchEvent(new CustomEvent("change", { detail: { value: e }, bubbles: !0, composed: !0 }));
|
|
109
|
+
this.isValid = !0, this.validationMessage = "", this.dispatchEvent(new CustomEvent("change", { detail: { value: e }, bubbles: !0, composed: !0 }));
|
|
110
|
+
}
|
|
111
|
+
checkValidity() {
|
|
112
|
+
return this.isValid = this.multi ? this.options.some((e) => e.selected) : !!this.value, this.validationMessage = this.isValid ? "" : "Please select an option.", this.isValid;
|
|
113
|
+
}
|
|
114
|
+
reportValidity() {
|
|
115
|
+
return !this.required || (this.checkValidity(), this.inputRef.required = !0, this.isValid ? (this.inputRef.reportValidity(), !0) : (this.openDropdown(), this.inputRef.reportValidity(), !1));
|
|
116
|
+
}
|
|
117
|
+
setCustomValidity(e) {
|
|
118
|
+
this.validationMessage = e;
|
|
110
119
|
}
|
|
111
120
|
render() {
|
|
112
121
|
return O`
|
|
@@ -126,7 +135,7 @@ let o = class extends v(w`
|
|
|
126
135
|
.value=${this.valueLabel}
|
|
127
136
|
.required=${this.required}
|
|
128
137
|
readonly
|
|
129
|
-
@click=${() => this.isOpen ? this.closeDropdown() : this.openDropdown()}
|
|
138
|
+
@click=${() => this.isOpen ? this.closeDropdown() : this.openDropdown(!0)}
|
|
130
139
|
></schmancy-input>
|
|
131
140
|
|
|
132
141
|
<div
|
|
@@ -143,11 +152,11 @@ let o = class extends v(w`
|
|
|
143
152
|
role="listbox"
|
|
144
153
|
aria-multiselectable=${this.multi}
|
|
145
154
|
class=${b({ "absolute z-[1000] mt-1 w-full rounded-md shadow-sm": !0, hidden: !this.isOpen })}
|
|
146
|
-
${
|
|
155
|
+
${g({ bgColor: w.sys.color.surface.container })}
|
|
147
156
|
@click=${(e) => {
|
|
148
|
-
var
|
|
149
|
-
const t = e,
|
|
150
|
-
|
|
157
|
+
var s;
|
|
158
|
+
const t = e, i = (s = t.detail) == null ? void 0 : s.value;
|
|
159
|
+
i && this.handleOptionSelect(i);
|
|
151
160
|
}}
|
|
152
161
|
>
|
|
153
162
|
<slot
|
|
@@ -160,8 +169,8 @@ let o = class extends v(w`
|
|
|
160
169
|
`;
|
|
161
170
|
}
|
|
162
171
|
};
|
|
163
|
-
l([
|
|
172
|
+
l([a({ type: String })], o.prototype, "name", 2), l([a({ type: Boolean })], o.prototype, "required", 2), l([a({ type: String })], o.prototype, "placeholder", 2), l([a({ type: String })], o.prototype, "value", 2), l([a({ type: Array })], o.prototype, "selectedValues", 2), l([a({ type: Boolean })], o.prototype, "multi", 2), l([a({ type: String })], o.prototype, "label", 2), l([p()], o.prototype, "isOpen", 2), l([p()], o.prototype, "valueLabel", 2), l([p()], o.prototype, "isValid", 2), l([a({ type: String })], o.prototype, "validationMessage", 2), l([c("ul")], o.prototype, "ul", 2), l([c("schmancy-input")], o.prototype, "inputRef", 2), l([x({ flatten: !0 })], o.prototype, "options", 2), o = l([$("schmancy-select")], o);
|
|
164
173
|
export {
|
|
165
174
|
o as S
|
|
166
175
|
};
|
|
167
|
-
//# sourceMappingURL=select-
|
|
176
|
+
//# sourceMappingURL=select-CmNozz2O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-CmNozz2O.js","sources":["../src/select/select.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\n\nexport type SchmancySelectChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-select')\nexport class SchmancySelect extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t[role='listbox'] {\n\t\t/* max-height: 25vh; */ /* Remove the fixed max-height */\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t}\n`) {\n\t// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value = '' // for single-select\n\t@property({ type: Array }) selectedValues: string[] = [] // for multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private valueLabel = ''\n\t@state() private isValid = true\n\t@property({ type: String }) validationMessage = ''\n\n\t@query('ul') private ul!: HTMLUListElement\n\n\t@query('schmancy-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tthis.selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.valueLabel =\n\t\t\t\tthis.selectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => this.selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\n\t\t\tthis.valueLabel = selectedOption?.label || this.placeholder\n\t\t}\n\t}\n\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute(\n\t\t\t\t'aria-selected',\n\t\t\t\tString(this.multi ? this.selectedValues.includes(option.value) : option.value === this.value),\n\t\t\t)\n\t\t})\n\t}\n\n\tprivate async positionDropdown() {\n\t\tconst reference = this.renderRoot.querySelector('.trigger') as HTMLElement\n\t\tif (!reference || !this.ul) return\n\n\t\t// Get the available height\n\t\tconst availableHeight = window.innerHeight - reference.getBoundingClientRect().bottom - 10 // 10px buffer\n\t\tthis.ul.style.maxHeight = `${availableHeight}px` // Set max height\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t\t})\n\n\t\t\tObject.assign(this.ul.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t\tposition: 'absolute',\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleKeyDown(e: KeyboardEvent) {\n\t\tif (!this.isOpen) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.openDropdown(false) // Modified: Call openDropdown directly\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(this.options, Math.min(current + 1, this.options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(this.options, Math.max(current - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (current >= 0) this.handleOptionSelect(this.options[current].value)\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tcombobox?.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\t// Add a report flag\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t\t//Check if this needs to be reported\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tcombobox?.removeAttribute('aria-activedescendant')\n\t\tcombobox?.focus()\n\t}\n\n\tprivate handleOptionSelect(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (!option) return\n\n\t\t\toption.selected = !option.selected\n\t\t\tif (option.selected) {\n\t\t\t\tthis.selectedValues = [...this.selectedValues, value]\n\t\t\t} else {\n\t\t\t\tthis.selectedValues = this.selectedValues.filter(v => v !== value)\n\t\t\t}\n\n\t\t\tthis.valueLabel =\n\t\t\t\tthis.selectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => this.selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\n\t\t\tthis.dispatchChange(this.selectedValues)\n\t\t} else {\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\n\t\t\tthis.value = value\n\t\t\tthis.valueLabel = this.options.find(o => o.value === value)?.label || this.placeholder\n\t\t\tthis.dispatchChange(value)\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.isValid = true // Reset validation on change\n\t\tthis.validationMessage = ''\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancySelectChangeEvent['detail']>('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity(): boolean {\n\t\t//Check if there is a value\n\t\tthis.isValid = this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t\tthis.validationMessage = this.isValid ? '' : 'Please select an option.'\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.required) {\n\t\t\tthis.checkValidity()\n\t\t\tthis.inputRef.required = true // Ensure the inner input knows it's required.\n\t\t\tif (!this.isValid) {\n\t\t\t\tthis.openDropdown()\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn true // Always return true if not required\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t}\n\n\trender(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<schmancy-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\tclass=\"trigger\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\taria-required=${this.required}\n\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t.value=${this.valueLabel}\n\t\t\t\t\t.required=${this.required}\n\t\t\t\t\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown(true))}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi}\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\t'absolute z-[1000] mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.syncSelection()\n\t\t\t\t\t\t\tthis.setupOptionsAccessibility()\n\t\t\t\t\t\t}}\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-select': SchmancySelect\n\t}\n}\n"],"names":["SchmancySelect","$LitElement","css","super","arguments","this","required","placeholder","value","selectedValues","multi","label","isOpen","valueLabel","isValid","validationMessage","connectedCallback","id","Math","random","toString","substr","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","firstUpdated","syncSelection","setupOptionsAccessibility","options","filter","o","selected","map","length","includes","join","selectedOption","find","forEach","option","index","setAttribute","tabIndex","String","positionDropdown","reference","renderRoot","querySelector","ul","availableHeight","window","innerHeight","getBoundingClientRect","bottom","style","maxHeight","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","min","max","handleOptionSelect","focus","combobox","report","updateComplete","Array","from","querySelectorAll","selectedIndex","getAttribute","reportValidity","removeAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","some","Boolean","checkValidity","inputRef","message","render","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","prototype","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
|
package/dist/select.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./select-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./select-CENAt67G.cjs");Object.defineProperty(exports,"SchmancySelect",{enumerable:!0,get:()=>e.SchmancySelect});
|
|
2
2
|
//# sourceMappingURL=select.cjs.map
|
package/dist/select.js
CHANGED