@logosphere-ui/core 0.0.0-alpha.23 → 0.0.0-alpha.24

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.
@@ -0,0 +1,59 @@
1
+ "use strict";const n=require("lit"),r=require("lit/decorators.js"),y=require("lit/directives/live.js");require("./formfield-BFOIEicR.cjs");require("./ui-icon-DWh1MhBa.cjs");const c=".input__field{width:100%;background:transparent;border:none;outline:none;font-size:var(--font-size-sm);font-family:var(--font-family-base);color:var(--color-body-text);box-sizing:border-box;line-height:1.5}.input__field::placeholder{color:var(--color-tertiary)}.input__field:disabled{cursor:not-allowed}.input__field--default{height:16px}.input__field--large{height:24px}.input__clear-btn{border:none;background:transparent;color:var(--color-gray-400);cursor:pointer;padding:0;display:inline-flex;align-items:center;outline:none;flex-shrink:0;transition:color var(--transition-speed-fast) var(--transition-timing)}.input__clear-btn:hover{color:var(--color-gray-600)}";var g=Object.defineProperty,m=Object.getOwnPropertyDescriptor,o=(p,e,t,s)=>{for(var i=s>1?void 0:s?m(e,t):e,l=p.length-1,a;l>=0;l--)(a=p[l])&&(i=(s?a(e,t,i):a(i))||i);return s&&i&&g(e,t,i),i};const d={0:/\d/,a:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/};function h(p){return p.split("").filter(e=>/[a-zA-Z0-9]/.test(e)).join("")}function f(p,e){let t=0,s="";for(let i=0;i<e.length&&!(t>=p.length);i++){const l=e[i],a=d[l];if(a){for(;t<p.length&&!a.test(p[t]);)t++;t<p.length&&(s+=p[t++])}else s+=l}return s}function v(p,e,t){let s=0;for(let i=0;i<p.length;i++)if(d[e[i]]&&(s++,s===t))return i+1;return p.length}exports.LogosphereInput=class extends n.LitElement{constructor(){super(...arguments),this.value="",this.type="text",this.placeholder="",this.name="",this.autocomplete="",this.pattern="",this.size="default",this.variant="default",this.label="",this.helper="",this.error="",this.required=!1,this.disabled=!1,this.readonly=!1,this.mask="",this._internalError="",this._showPassword=!1,this.handleInput=e=>{const t=e.target;if(this.mask){const s=t.selectionStart??t.value.length,i=h(t.value.slice(0,s)).length,l=h(t.value),a=f(l,this.mask);t.value=a,this.value=a;const u=v(a,this.mask,i);requestAnimationFrame(()=>t.setSelectionRange(u,u))}else this.value=t.value;this._internalError&&(this._internalError="",this._inputElement.setCustomValidity("")),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:this.value,rawValue:this.mask?h(this.value):this.value,originalEvent:e}}))},this.handleChange=e=>{const t=e.target;this.value=t.value,t.checkValidity()||(this._internalError=t.validationMessage),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}}))},this.handleKeyDown=e=>{this.dispatchEvent(new CustomEvent("keydown",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleKeyUp=e=>{this.dispatchEvent(new CustomEvent("keyup",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleClear=()=>{this.value="",this._inputElement&&(this._inputElement.value=""),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:"",originalEvent:null}}))},this.handlePasswordToggle=()=>{this.disabled||(this._showPassword=!this._showPassword,this._inputElement?.focus())}}get inputElement(){return this._inputElement}focus(){this._inputElement?.focus()}blur(){this._inputElement?.blur()}select(){this._inputElement?.select()}setSelectionRange(e,t,s){this._inputElement?.setSelectionRange(e,t,s)}checkValidity(){return this._inputElement?.checkValidity()??!0}reportValidity(){return this._inputElement?.reportValidity()??!0}setCustomValidity(e){this._inputElement?.setCustomValidity(e),this._internalError=e,this.requestUpdate()}willUpdate(e){e.has("type")&&this.type!=="password"&&this._showPassword&&(this._showPassword=!1)}get _effectivePlaceholder(){return this.placeholder?this.placeholder:this.mask?this.mask.replace(/[0a*]/g,"_"):""}render(){const e=this.error||this._internalError,t=!!this.value&&!this.disabled&&!this.readonly,s=this.type==="password",i=s&&this._showPassword?"text":this.type,l=`input__field input__field--${this.size}`;return n.html`
2
+ <logosphere-formfield
3
+ .label=${this.label}
4
+ .helper=${this.helper}
5
+ .error=${e}
6
+ .required=${this.required}
7
+ .disabled=${this.disabled}
8
+ .readonly=${this.readonly}
9
+ .placeholder=${this._effectivePlaceholder}
10
+ .size=${this.size}
11
+ .variant=${this.variant}
12
+ >
13
+ <slot name="prefix" slot="prefix"></slot>
14
+ <input
15
+ class="${l}"
16
+ type=${i}
17
+ .value=${y.live(this.value)}
18
+ placeholder=${this._effectivePlaceholder||n.nothing}
19
+ name=${this.name||n.nothing}
20
+ autocomplete=${this.autocomplete||n.nothing}
21
+ ?required=${this.required}
22
+ ?disabled=${this.disabled}
23
+ ?readonly=${this.readonly}
24
+ minlength=${this.minlength??n.nothing}
25
+ maxlength=${this.maxlength??n.nothing}
26
+ pattern=${this.pattern||n.nothing}
27
+ min=${this.min??n.nothing}
28
+ max=${this.max??n.nothing}
29
+ step=${this.step??n.nothing}
30
+ @input=${this.handleInput}
31
+ @change=${this.handleChange}
32
+ @keydown=${this.handleKeyDown}
33
+ @keyup=${this.handleKeyUp}
34
+ />
35
+ ${t?n.html`
36
+ <button
37
+ type="button"
38
+ slot="clear"
39
+ class="input__clear-btn"
40
+ @click=${this.handleClear}
41
+ tabindex="-1"
42
+ >
43
+ <ui-icon name="uil-times" size="14"></ui-icon>
44
+ </button>
45
+ `:n.nothing}
46
+ ${s?n.html`
47
+ <button
48
+ type="button"
49
+ slot="suffix"
50
+ class="input__clear-btn"
51
+ aria-label=${this._showPassword?"Şifreyi gizle":"Şifreyi göster"}
52
+ @click=${this.handlePasswordToggle}
53
+ >
54
+ <ui-icon name=${this._showPassword?"uil-eye-slash":"uil-eye"} size="16"></ui-icon>
55
+ </button>
56
+ `:n.nothing}
57
+ <slot name="suffix" slot="suffix"></slot>
58
+ </logosphere-formfield>
59
+ `}};exports.LogosphereInput.styles=[n.css`${n.unsafeCSS(c)}`];o([r.query("input")],exports.LogosphereInput.prototype,"_inputElement",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"value",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"type",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"placeholder",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"name",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"autocomplete",2);o([r.property({type:Number})],exports.LogosphereInput.prototype,"minlength",2);o([r.property({type:Number})],exports.LogosphereInput.prototype,"maxlength",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"pattern",2);o([r.property({type:Number})],exports.LogosphereInput.prototype,"min",2);o([r.property({type:Number})],exports.LogosphereInput.prototype,"max",2);o([r.property({type:Number})],exports.LogosphereInput.prototype,"step",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"size",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"variant",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"label",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"helper",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"error",2);o([r.property({type:Boolean})],exports.LogosphereInput.prototype,"required",2);o([r.property({type:Boolean})],exports.LogosphereInput.prototype,"disabled",2);o([r.property({type:Boolean})],exports.LogosphereInput.prototype,"readonly",2);o([r.property({type:String})],exports.LogosphereInput.prototype,"mask",2);o([r.state()],exports.LogosphereInput.prototype,"_internalError",2);o([r.state()],exports.LogosphereInput.prototype,"_showPassword",2);exports.LogosphereInput=o([r.customElement("logosphere-input")],exports.LogosphereInput);
@@ -0,0 +1,257 @@
1
+ import { unsafeCSS as m, css as f, LitElement as g, nothing as a, html as u } from "lit";
2
+ import { query as v, property as n, state as c, customElement as b } from "lit/decorators.js";
3
+ import { live as _ } from "lit/directives/live.js";
4
+ import "./formfield-CNh4mBSs.js";
5
+ import "./ui-icon-Bys4HYSQ.js";
6
+ const E = ".input__field{width:100%;background:transparent;border:none;outline:none;font-size:var(--font-size-sm);font-family:var(--font-family-base);color:var(--color-body-text);box-sizing:border-box;line-height:1.5}.input__field::placeholder{color:var(--color-tertiary)}.input__field:disabled{cursor:not-allowed}.input__field--default{height:16px}.input__field--large{height:24px}.input__clear-btn{border:none;background:transparent;color:var(--color-gray-400);cursor:pointer;padding:0;display:inline-flex;align-items:center;outline:none;flex-shrink:0;transition:color var(--transition-speed-fast) var(--transition-timing)}.input__clear-btn:hover{color:var(--color-gray-600)}";
7
+ var w = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, s = (t, e, o, l) => {
8
+ for (var r = l > 1 ? void 0 : l ? $(e, o) : e, p = t.length - 1, h; p >= 0; p--)
9
+ (h = t[p]) && (r = (l ? h(e, o, r) : h(r)) || r);
10
+ return l && r && w(e, o, r), r;
11
+ };
12
+ const y = {
13
+ 0: /\d/,
14
+ a: /[a-zA-Z]/,
15
+ "*": /[a-zA-Z0-9]/
16
+ };
17
+ function d(t) {
18
+ return t.split("").filter((e) => /[a-zA-Z0-9]/.test(e)).join("");
19
+ }
20
+ function k(t, e) {
21
+ let o = 0, l = "";
22
+ for (let r = 0; r < e.length && !(o >= t.length); r++) {
23
+ const p = e[r], h = y[p];
24
+ if (h) {
25
+ for (; o < t.length && !h.test(t[o]); ) o++;
26
+ o < t.length && (l += t[o++]);
27
+ } else
28
+ l += p;
29
+ }
30
+ return l;
31
+ }
32
+ function x(t, e, o) {
33
+ let l = 0;
34
+ for (let r = 0; r < t.length; r++)
35
+ if (y[e[r]] && (l++, l === o))
36
+ return r + 1;
37
+ return t.length;
38
+ }
39
+ let i = class extends g {
40
+ constructor() {
41
+ super(...arguments), this.value = "", this.type = "text", this.placeholder = "", this.name = "", this.autocomplete = "", this.pattern = "", this.size = "default", this.variant = "default", this.label = "", this.helper = "", this.error = "", this.required = !1, this.disabled = !1, this.readonly = !1, this.mask = "", this._internalError = "", this._showPassword = !1, this.handleInput = (t) => {
42
+ const e = t.target;
43
+ if (this.mask) {
44
+ const o = e.selectionStart ?? e.value.length, l = d(e.value.slice(0, o)).length, r = d(e.value), p = k(r, this.mask);
45
+ e.value = p, this.value = p;
46
+ const h = x(p, this.mask, l);
47
+ requestAnimationFrame(() => e.setSelectionRange(h, h));
48
+ } else
49
+ this.value = e.value;
50
+ this._internalError && (this._internalError = "", this._inputElement.setCustomValidity("")), this.dispatchEvent(new CustomEvent("input", {
51
+ bubbles: !0,
52
+ composed: !0,
53
+ detail: {
54
+ value: this.value,
55
+ rawValue: this.mask ? d(this.value) : this.value,
56
+ originalEvent: t
57
+ }
58
+ }));
59
+ }, this.handleChange = (t) => {
60
+ const e = t.target;
61
+ this.value = e.value, e.checkValidity() || (this._internalError = e.validationMessage), this.dispatchEvent(new CustomEvent("change", {
62
+ bubbles: !0,
63
+ composed: !0,
64
+ detail: { value: this.value, originalEvent: t }
65
+ }));
66
+ }, this.handleKeyDown = (t) => {
67
+ this.dispatchEvent(new CustomEvent("keydown", {
68
+ bubbles: !0,
69
+ composed: !0,
70
+ detail: { key: t.key, originalEvent: t }
71
+ }));
72
+ }, this.handleKeyUp = (t) => {
73
+ this.dispatchEvent(new CustomEvent("keyup", {
74
+ bubbles: !0,
75
+ composed: !0,
76
+ detail: { key: t.key, originalEvent: t }
77
+ }));
78
+ }, this.handleClear = () => {
79
+ this.value = "", this._inputElement && (this._inputElement.value = ""), this.dispatchEvent(new CustomEvent("clear", { bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("input", {
80
+ bubbles: !0,
81
+ composed: !0,
82
+ detail: { value: "", originalEvent: null }
83
+ }));
84
+ }, this.handlePasswordToggle = () => {
85
+ this.disabled || (this._showPassword = !this._showPassword, this._inputElement?.focus());
86
+ };
87
+ }
88
+ get inputElement() {
89
+ return this._inputElement;
90
+ }
91
+ focus() {
92
+ this._inputElement?.focus();
93
+ }
94
+ blur() {
95
+ this._inputElement?.blur();
96
+ }
97
+ select() {
98
+ this._inputElement?.select();
99
+ }
100
+ setSelectionRange(t, e, o) {
101
+ this._inputElement?.setSelectionRange(t, e, o);
102
+ }
103
+ checkValidity() {
104
+ return this._inputElement?.checkValidity() ?? !0;
105
+ }
106
+ reportValidity() {
107
+ return this._inputElement?.reportValidity() ?? !0;
108
+ }
109
+ setCustomValidity(t) {
110
+ this._inputElement?.setCustomValidity(t), this._internalError = t, this.requestUpdate();
111
+ }
112
+ willUpdate(t) {
113
+ t.has("type") && this.type !== "password" && this._showPassword && (this._showPassword = !1);
114
+ }
115
+ /** Mask varsa ve placeholder verilmemişse mask pattern'ını placeholder olarak göster */
116
+ get _effectivePlaceholder() {
117
+ return this.placeholder ? this.placeholder : this.mask ? this.mask.replace(/[0a*]/g, "_") : "";
118
+ }
119
+ render() {
120
+ const t = this.error || this._internalError, e = !!this.value && !this.disabled && !this.readonly, o = this.type === "password", l = o && this._showPassword ? "text" : this.type, r = `input__field input__field--${this.size}`;
121
+ return u`
122
+ <logosphere-formfield
123
+ .label=${this.label}
124
+ .helper=${this.helper}
125
+ .error=${t}
126
+ .required=${this.required}
127
+ .disabled=${this.disabled}
128
+ .readonly=${this.readonly}
129
+ .placeholder=${this._effectivePlaceholder}
130
+ .size=${this.size}
131
+ .variant=${this.variant}
132
+ >
133
+ <slot name="prefix" slot="prefix"></slot>
134
+ <input
135
+ class="${r}"
136
+ type=${l}
137
+ .value=${_(this.value)}
138
+ placeholder=${this._effectivePlaceholder || a}
139
+ name=${this.name || a}
140
+ autocomplete=${this.autocomplete || a}
141
+ ?required=${this.required}
142
+ ?disabled=${this.disabled}
143
+ ?readonly=${this.readonly}
144
+ minlength=${this.minlength ?? a}
145
+ maxlength=${this.maxlength ?? a}
146
+ pattern=${this.pattern || a}
147
+ min=${this.min ?? a}
148
+ max=${this.max ?? a}
149
+ step=${this.step ?? a}
150
+ @input=${this.handleInput}
151
+ @change=${this.handleChange}
152
+ @keydown=${this.handleKeyDown}
153
+ @keyup=${this.handleKeyUp}
154
+ />
155
+ ${e ? u`
156
+ <button
157
+ type="button"
158
+ slot="clear"
159
+ class="input__clear-btn"
160
+ @click=${this.handleClear}
161
+ tabindex="-1"
162
+ >
163
+ <ui-icon name="uil-times" size="14"></ui-icon>
164
+ </button>
165
+ ` : a}
166
+ ${o ? u`
167
+ <button
168
+ type="button"
169
+ slot="suffix"
170
+ class="input__clear-btn"
171
+ aria-label=${this._showPassword ? "Şifreyi gizle" : "Şifreyi göster"}
172
+ @click=${this.handlePasswordToggle}
173
+ >
174
+ <ui-icon name=${this._showPassword ? "uil-eye-slash" : "uil-eye"} size="16"></ui-icon>
175
+ </button>
176
+ ` : a}
177
+ <slot name="suffix" slot="suffix"></slot>
178
+ </logosphere-formfield>
179
+ `;
180
+ }
181
+ };
182
+ i.styles = [f`${m(E)}`];
183
+ s([
184
+ v("input")
185
+ ], i.prototype, "_inputElement", 2);
186
+ s([
187
+ n({ type: String })
188
+ ], i.prototype, "value", 2);
189
+ s([
190
+ n({ type: String })
191
+ ], i.prototype, "type", 2);
192
+ s([
193
+ n({ type: String })
194
+ ], i.prototype, "placeholder", 2);
195
+ s([
196
+ n({ type: String })
197
+ ], i.prototype, "name", 2);
198
+ s([
199
+ n({ type: String })
200
+ ], i.prototype, "autocomplete", 2);
201
+ s([
202
+ n({ type: Number })
203
+ ], i.prototype, "minlength", 2);
204
+ s([
205
+ n({ type: Number })
206
+ ], i.prototype, "maxlength", 2);
207
+ s([
208
+ n({ type: String })
209
+ ], i.prototype, "pattern", 2);
210
+ s([
211
+ n({ type: Number })
212
+ ], i.prototype, "min", 2);
213
+ s([
214
+ n({ type: Number })
215
+ ], i.prototype, "max", 2);
216
+ s([
217
+ n({ type: Number })
218
+ ], i.prototype, "step", 2);
219
+ s([
220
+ n({ type: String })
221
+ ], i.prototype, "size", 2);
222
+ s([
223
+ n({ type: String })
224
+ ], i.prototype, "variant", 2);
225
+ s([
226
+ n({ type: String })
227
+ ], i.prototype, "label", 2);
228
+ s([
229
+ n({ type: String })
230
+ ], i.prototype, "helper", 2);
231
+ s([
232
+ n({ type: String })
233
+ ], i.prototype, "error", 2);
234
+ s([
235
+ n({ type: Boolean })
236
+ ], i.prototype, "required", 2);
237
+ s([
238
+ n({ type: Boolean })
239
+ ], i.prototype, "disabled", 2);
240
+ s([
241
+ n({ type: Boolean })
242
+ ], i.prototype, "readonly", 2);
243
+ s([
244
+ n({ type: String })
245
+ ], i.prototype, "mask", 2);
246
+ s([
247
+ c()
248
+ ], i.prototype, "_internalError", 2);
249
+ s([
250
+ c()
251
+ ], i.prototype, "_showPassword", 2);
252
+ i = s([
253
+ b("logosphere-input")
254
+ ], i);
255
+ export {
256
+ i as L
257
+ };
package/dist/input.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./input-JpAWN-M1.cjs");Object.defineProperty(exports,"LogosphereInput",{enumerable:!0,get:()=>e.LogosphereInput});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./input-C6OHJuya.cjs");Object.defineProperty(exports,"LogosphereInput",{enumerable:!0,get:()=>e.LogosphereInput});
package/dist/input.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as p } from "./input-jmbvgWEq.js";
1
+ import { L as p } from "./input-DcSyXsp9.js";
2
2
  export {
3
3
  p as LogosphereInput
4
4
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./leftmenu-DBcncBN8.cjs");Object.defineProperty(exports,"LeftMenu",{enumerable:!0,get:()=>e.LeftMenu});Object.defineProperty(exports,"LeftMenuItemElement",{enumerable:!0,get:()=>e.LeftMenuItemElement});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./leftmenu-BSb9rGg4.cjs");Object.defineProperty(exports,"LeftMenu",{enumerable:!0,get:()=>e.LeftMenu});Object.defineProperty(exports,"LeftMenuItemElement",{enumerable:!0,get:()=>e.LeftMenuItemElement});
package/dist/left-menu.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as a, a as f } from "./leftmenu-C-q1h_2U.js";
1
+ import { L as a, a as f } from "./leftmenu-vMqGQhcS.js";
2
2
  export {
3
3
  a as LeftMenu,
4
4
  f as LeftMenuItemElement
@@ -1,4 +1,4 @@
1
- "use strict";const a=require("lit"),l=require("lit/decorators.js");require("./input-JpAWN-M1.cjs");require("./ui-icon-DWh1MhBa.cjs");require("./tree-menu-B1iwfHyd.cjs");var u=Object.defineProperty,_=Object.getOwnPropertyDescriptor,p=(c,e,t,n)=>{for(var o=n>1?void 0:n?_(e,t):e,i=c.length-1,s;i>=0;i--)(s=c[i])&&(o=(n?s(e,t,o):s(o))||o);return n&&o&&u(e,t,o),o};exports.LeftMenuItemElement=class extends a.LitElement{constructor(){super(...arguments),this.itemId="",this.label="",this.disabled=!1,this.active=!1}render(){return a.html`<slot></slot>`}};p([l.property({type:String})],exports.LeftMenuItemElement.prototype,"itemId",2);p([l.property({type:String})],exports.LeftMenuItemElement.prototype,"label",2);p([l.property({type:Boolean})],exports.LeftMenuItemElement.prototype,"disabled",2);p([l.property({type:Boolean})],exports.LeftMenuItemElement.prototype,"active",2);p([l.property({attribute:!1})],exports.LeftMenuItemElement.prototype,"onClick",2);exports.LeftMenuItemElement=p([l.customElement("leftmenu-item")],exports.LeftMenuItemElement);const f=':host{display:block;position:relative;height:100%;font-family:var(--font-family-base)}.lm{position:relative;height:100%;transition:width var(--transition-speed-base) var(--transition-timing)}.lm__panel{width:var(--lm-closed-width);min-width:var(--lm-closed-width);height:100%;background:var(--color-body-bg);border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden;overflow-x:hidden;box-sizing:border-box;transition:width var(--transition-speed-base) var(--transition-timing),min-width var(--transition-speed-base) var(--transition-timing),box-shadow var(--transition-speed-base) var(--transition-timing)}.lm--open .lm__panel{width:var(--lm-open-width);min-width:var(--lm-open-width)}.lm--overlay.lm--open .lm__panel{position:absolute;left:0;top:0;box-shadow:var(--shadow-md);z-index:var(--z-index-dropdown)}.lm__brand{padding:var(--spacing-3);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.lm--closed .lm__brand{width:64px;height:64px;padding:0}.lm__search{padding:var(--spacing-4) var(--spacing-3)}.lm__nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--spacing-3);scrollbar-width:thin}.lm__nav logosphere-tree-menu{width:100%}.lm__custom{border-top:1px solid var(--color-border);margin-top:var(--spacing-4);padding:var(--spacing-2)}.lm--closed .lm__custom{padding:var(--spacing-2) 0}.lm__custom--hidden{display:none}.lm--closed .lm__nav{padding-left:0;padding-right:0;scrollbar-gutter:auto;scrollbar-color:var(--color-border) transparent}.lm--closed .lm__nav::-webkit-scrollbar{width:4px;height:4px}.lm--closed .lm__nav::-webkit-scrollbar-track{background:transparent}.lm--closed .lm__nav::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:999px}.lm--closed .lm__nav:hover::-webkit-scrollbar-thumb{background-color:var(--color-tertiary)}.lm__footer{margin-top:auto;border-top:1px solid var(--color-border);padding:var(--spacing-2);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.lm--closed .lm__footer{flex-direction:column;justify-content:center}.lm__ctrl{width:32px;height:32px;border:1px solid var(--color-border);background:var(--color-body-bg);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-body-text)}.lm__ctrl:hover{background:var(--color-tertiary-bg)}.lm__pin-icon--inactive{color:var(--color-tertiary)}.lm__pin-icon--active{color:var(--color-body-text)}.lm__toggle-icon{transform:rotate(180deg);transition:transform var(--transition-speed-base) var(--transition-timing)}.lm__toggle-icon--open{transform:rotate(0)}::slotted(leftmenu-item){display:none!important}::slotted([slot="logo-open"]),::slotted([slot="logo-closed"]){display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}::slotted([slot="custom-open"]),::slotted([slot="custom-closed"]){display:block;width:100%}';var g=Object.defineProperty,b=Object.getOwnPropertyDescriptor,d=(c,e,t,n)=>{for(var o=n>1?void 0:n?b(e,t):e,i=c.length-1,s;i>=0;i--)(s=c[i])&&(o=(n?s(e,t,o):s(o))||o);return n&&o&&g(e,t,o),o};exports.LeftMenu=class extends a.LitElement{constructor(){super(...arguments),this.open=!1,this.pinned=!1,this.closedWidth=64,this.openWidth=248,this.storageKey="logosphere-leftmenu-state",this._nodes=[],this._expandedIds=new Set,this._search="",this._searchExpandedIds=new Set,this._hasCustomOpen=!1,this._hasCustomClosed=!1,this._isHydratingState=!1,this._onSlotChange=e=>{const n=e.target.assignedElements({flatten:!0}).filter(o=>o.tagName==="LEFTMENU-ITEM");this._nodes=n.map((o,i)=>this._mapItemElement(o,`root-${i}`))},this._onCustomOpenSlotChange=e=>{const t=e.target;this._hasCustomOpen=t.assignedElements({flatten:!0}).length>0},this._onCustomClosedSlotChange=e=>{const t=e.target;this._hasCustomClosed=t.assignedElements({flatten:!0}).length>0},this._handleSearchInput=e=>{const n=e.detail?.value;typeof n=="string"&&this._setSearch(n)},this._toggleOpen=()=>{this.open=!this.open},this._togglePin=()=>{this.pinned=!this.pinned,this.dispatchEvent(new CustomEvent("pin-change",{detail:{pinned:this.pinned},bubbles:!0,composed:!0}))},this._handleTreeToggle=e=>{e.stopPropagation();const{item:t,expanded:n}=e.detail;n?this._expandedIds.add(t.id):this._expandedIds.delete(t.id),this._expandedIds=new Set(this._expandedIds)},this._handleTreeNodeClick=e=>{this.open||!e.detail.hasChildren||(this.open=!0,this._expandedIds.add(e.detail.item.id),this._expandedIds=new Set(this._expandedIds))},this._handleTreeItemClick=e=>{e.stopPropagation();const t=e.detail.item.data;this.dispatchEvent(new CustomEvent("item-click",{detail:{item:t??e.detail.item},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this._loadPersistedState()}updated(e){this._isHydratingState||(e.has("open")||e.has("pinned"))&&this._persistState()}_loadPersistedState(){if(!(typeof window>"u"))try{const e=window.localStorage.getItem(this.storageKey);if(!e)return;const t=JSON.parse(e);this._isHydratingState=!0,typeof t.open=="boolean"&&(this.open=t.open),typeof t.pinned=="boolean"&&(this.pinned=t.pinned),this._isHydratingState=!1}catch{this._isHydratingState=!1}}_persistState(){if(!(typeof window>"u"))try{window.localStorage.setItem(this.storageKey,JSON.stringify({open:this.open,pinned:this.pinned}))}catch{}}_mapItemElement(e,t){const n=e.itemId||e.id||t,o=Array.from(e.children).find(r=>r.getAttribute("slot")==="icon"),i=o?.querySelector("ui-icon"),s=Array.from(e.children).filter(r=>r.tagName==="LEFTMENU-ITEM"&&r.getAttribute("slot")==="children"),h=Array.from(e.childNodes).filter(r=>r.nodeType===Node.TEXT_NODE).map(r=>r.textContent??"").join(" ").replace(/\s+/g," ").trim();return{id:n,label:(e.label||h||n).trim(),disabled:e.disabled,active:e.active,iconName:i?.getAttribute("name")??null,iconHtml:o?o.innerHTML:null,onClick:e.onClick?()=>e.onClick?.(e):void 0,children:s.map((r,m)=>this._mapItemElement(r,`${n}-${m}`))}}_setSearch(e){if(this._search=e,!e){this._searchExpandedIds=new Set;return}const t=new Set,n=o=>{let i=!1;return o.forEach(s=>{const h=s.label.toLocaleLowerCase().includes(e.toLocaleLowerCase()),r=n(s.children);r&&t.add(s.id),h&&s.children.length&&t.add(s.id),i=i||h||r}),i};n(this._nodes),this._searchExpandedIds=t}_filterNodes(e,t){if(!t)return e;const n=t.toLocaleLowerCase(),o=i=>{const s=i.children.map(o).filter(Boolean);return!i.label.toLocaleLowerCase().includes(n)&&s.length===0?null:{...i,children:s}};return e.map(o).filter(Boolean)}_toTreeItems(e){return e.map(t=>({id:t.id,label:t.label,disabled:t.disabled,active:t.active,iconName:t.iconName??void 0,iconHtml:t.iconHtml,onClick:t.onClick?()=>{t.onClick?.(t)}:void 0,data:t,children:this._toTreeItems(t.children)}))}_effectiveExpandedIds(){const e=new Set(this._expandedIds);return this._search&&this._searchExpandedIds.forEach(t=>e.add(t)),Array.from(e)}render(){const e=this._filterNodes(this._nodes,this._search),t=this._toTreeItems(e),n=this.pinned?this.open?this.openWidth:this.closedWidth:this.closedWidth;return a.html`
1
+ "use strict";const a=require("lit"),l=require("lit/decorators.js");require("./input-C6OHJuya.cjs");require("./ui-icon-DWh1MhBa.cjs");require("./tree-menu-B1iwfHyd.cjs");var u=Object.defineProperty,_=Object.getOwnPropertyDescriptor,p=(c,e,t,n)=>{for(var o=n>1?void 0:n?_(e,t):e,i=c.length-1,s;i>=0;i--)(s=c[i])&&(o=(n?s(e,t,o):s(o))||o);return n&&o&&u(e,t,o),o};exports.LeftMenuItemElement=class extends a.LitElement{constructor(){super(...arguments),this.itemId="",this.label="",this.disabled=!1,this.active=!1}render(){return a.html`<slot></slot>`}};p([l.property({type:String})],exports.LeftMenuItemElement.prototype,"itemId",2);p([l.property({type:String})],exports.LeftMenuItemElement.prototype,"label",2);p([l.property({type:Boolean})],exports.LeftMenuItemElement.prototype,"disabled",2);p([l.property({type:Boolean})],exports.LeftMenuItemElement.prototype,"active",2);p([l.property({attribute:!1})],exports.LeftMenuItemElement.prototype,"onClick",2);exports.LeftMenuItemElement=p([l.customElement("leftmenu-item")],exports.LeftMenuItemElement);const f=':host{display:block;position:relative;height:100%;font-family:var(--font-family-base)}.lm{position:relative;height:100%;transition:width var(--transition-speed-base) var(--transition-timing)}.lm__panel{width:var(--lm-closed-width);min-width:var(--lm-closed-width);height:100%;background:var(--color-body-bg);border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden;overflow-x:hidden;box-sizing:border-box;transition:width var(--transition-speed-base) var(--transition-timing),min-width var(--transition-speed-base) var(--transition-timing),box-shadow var(--transition-speed-base) var(--transition-timing)}.lm--open .lm__panel{width:var(--lm-open-width);min-width:var(--lm-open-width)}.lm--overlay.lm--open .lm__panel{position:absolute;left:0;top:0;box-shadow:var(--shadow-md);z-index:var(--z-index-dropdown)}.lm__brand{padding:var(--spacing-3);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.lm--closed .lm__brand{width:64px;height:64px;padding:0}.lm__search{padding:var(--spacing-4) var(--spacing-3)}.lm__nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--spacing-3);scrollbar-width:thin}.lm__nav logosphere-tree-menu{width:100%}.lm__custom{border-top:1px solid var(--color-border);margin-top:var(--spacing-4);padding:var(--spacing-2)}.lm--closed .lm__custom{padding:var(--spacing-2) 0}.lm__custom--hidden{display:none}.lm--closed .lm__nav{padding-left:0;padding-right:0;scrollbar-gutter:auto;scrollbar-color:var(--color-border) transparent}.lm--closed .lm__nav::-webkit-scrollbar{width:4px;height:4px}.lm--closed .lm__nav::-webkit-scrollbar-track{background:transparent}.lm--closed .lm__nav::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:999px}.lm--closed .lm__nav:hover::-webkit-scrollbar-thumb{background-color:var(--color-tertiary)}.lm__footer{margin-top:auto;border-top:1px solid var(--color-border);padding:var(--spacing-2);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.lm--closed .lm__footer{flex-direction:column;justify-content:center}.lm__ctrl{width:32px;height:32px;border:1px solid var(--color-border);background:var(--color-body-bg);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-body-text)}.lm__ctrl:hover{background:var(--color-tertiary-bg)}.lm__pin-icon--inactive{color:var(--color-tertiary)}.lm__pin-icon--active{color:var(--color-body-text)}.lm__toggle-icon{transform:rotate(180deg);transition:transform var(--transition-speed-base) var(--transition-timing)}.lm__toggle-icon--open{transform:rotate(0)}::slotted(leftmenu-item){display:none!important}::slotted([slot="logo-open"]),::slotted([slot="logo-closed"]){display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}::slotted([slot="custom-open"]),::slotted([slot="custom-closed"]){display:block;width:100%}';var g=Object.defineProperty,b=Object.getOwnPropertyDescriptor,d=(c,e,t,n)=>{for(var o=n>1?void 0:n?b(e,t):e,i=c.length-1,s;i>=0;i--)(s=c[i])&&(o=(n?s(e,t,o):s(o))||o);return n&&o&&g(e,t,o),o};exports.LeftMenu=class extends a.LitElement{constructor(){super(...arguments),this.open=!1,this.pinned=!1,this.closedWidth=64,this.openWidth=248,this.storageKey="logosphere-leftmenu-state",this._nodes=[],this._expandedIds=new Set,this._search="",this._searchExpandedIds=new Set,this._hasCustomOpen=!1,this._hasCustomClosed=!1,this._isHydratingState=!1,this._onSlotChange=e=>{const n=e.target.assignedElements({flatten:!0}).filter(o=>o.tagName==="LEFTMENU-ITEM");this._nodes=n.map((o,i)=>this._mapItemElement(o,`root-${i}`))},this._onCustomOpenSlotChange=e=>{const t=e.target;this._hasCustomOpen=t.assignedElements({flatten:!0}).length>0},this._onCustomClosedSlotChange=e=>{const t=e.target;this._hasCustomClosed=t.assignedElements({flatten:!0}).length>0},this._handleSearchInput=e=>{const n=e.detail?.value;typeof n=="string"&&this._setSearch(n)},this._toggleOpen=()=>{this.open=!this.open},this._togglePin=()=>{this.pinned=!this.pinned,this.dispatchEvent(new CustomEvent("pin-change",{detail:{pinned:this.pinned},bubbles:!0,composed:!0}))},this._handleTreeToggle=e=>{e.stopPropagation();const{item:t,expanded:n}=e.detail;n?this._expandedIds.add(t.id):this._expandedIds.delete(t.id),this._expandedIds=new Set(this._expandedIds)},this._handleTreeNodeClick=e=>{this.open||!e.detail.hasChildren||(this.open=!0,this._expandedIds.add(e.detail.item.id),this._expandedIds=new Set(this._expandedIds))},this._handleTreeItemClick=e=>{e.stopPropagation();const t=e.detail.item.data;this.dispatchEvent(new CustomEvent("item-click",{detail:{item:t??e.detail.item},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this._loadPersistedState()}updated(e){this._isHydratingState||(e.has("open")||e.has("pinned"))&&this._persistState()}_loadPersistedState(){if(!(typeof window>"u"))try{const e=window.localStorage.getItem(this.storageKey);if(!e)return;const t=JSON.parse(e);this._isHydratingState=!0,typeof t.open=="boolean"&&(this.open=t.open),typeof t.pinned=="boolean"&&(this.pinned=t.pinned),this._isHydratingState=!1}catch{this._isHydratingState=!1}}_persistState(){if(!(typeof window>"u"))try{window.localStorage.setItem(this.storageKey,JSON.stringify({open:this.open,pinned:this.pinned}))}catch{}}_mapItemElement(e,t){const n=e.itemId||e.id||t,o=Array.from(e.children).find(r=>r.getAttribute("slot")==="icon"),i=o?.querySelector("ui-icon"),s=Array.from(e.children).filter(r=>r.tagName==="LEFTMENU-ITEM"&&r.getAttribute("slot")==="children"),h=Array.from(e.childNodes).filter(r=>r.nodeType===Node.TEXT_NODE).map(r=>r.textContent??"").join(" ").replace(/\s+/g," ").trim();return{id:n,label:(e.label||h||n).trim(),disabled:e.disabled,active:e.active,iconName:i?.getAttribute("name")??null,iconHtml:o?o.innerHTML:null,onClick:e.onClick?()=>e.onClick?.(e):void 0,children:s.map((r,m)=>this._mapItemElement(r,`${n}-${m}`))}}_setSearch(e){if(this._search=e,!e){this._searchExpandedIds=new Set;return}const t=new Set,n=o=>{let i=!1;return o.forEach(s=>{const h=s.label.toLocaleLowerCase().includes(e.toLocaleLowerCase()),r=n(s.children);r&&t.add(s.id),h&&s.children.length&&t.add(s.id),i=i||h||r}),i};n(this._nodes),this._searchExpandedIds=t}_filterNodes(e,t){if(!t)return e;const n=t.toLocaleLowerCase(),o=i=>{const s=i.children.map(o).filter(Boolean);return!i.label.toLocaleLowerCase().includes(n)&&s.length===0?null:{...i,children:s}};return e.map(o).filter(Boolean)}_toTreeItems(e){return e.map(t=>({id:t.id,label:t.label,disabled:t.disabled,active:t.active,iconName:t.iconName??void 0,iconHtml:t.iconHtml,onClick:t.onClick?()=>{t.onClick?.(t)}:void 0,data:t,children:this._toTreeItems(t.children)}))}_effectiveExpandedIds(){const e=new Set(this._expandedIds);return this._search&&this._searchExpandedIds.forEach(t=>e.add(t)),Array.from(e)}render(){const e=this._filterNodes(this._nodes,this._search),t=this._toTreeItems(e),n=this.pinned?this.open?this.openWidth:this.closedWidth:this.closedWidth;return a.html`
2
2
  <aside
3
3
  class="lm ${this.open?"lm--open":"lm--closed"} ${this.pinned?"lm--pinned":"lm--overlay"}"
4
4
  style=${`--lm-open-width:${this.openWidth}px; --lm-closed-width:${this.closedWidth}px; width:${n}px;`}
@@ -1,6 +1,6 @@
1
1
  import { LitElement as u, html as p, unsafeCSS as b, css as v, nothing as y } from "lit";
2
2
  import { property as c, customElement as g, state as m } from "lit/decorators.js";
3
- import "./input-jmbvgWEq.js";
3
+ import "./input-DcSyXsp9.js";
4
4
  import "./ui-icon-Bys4HYSQ.js";
5
5
  import "./tree-menu-BbX8GK_z.js";
6
6
  var w = Object.defineProperty, x = Object.getOwnPropertyDescriptor, _ = (e, t, i, s) => {
@@ -1,4 +1,4 @@
1
- "use strict";const o=require("lit"),t=require("lit/decorators.js"),p=".modal__backdrop{position:fixed;inset:0;z-index:var(--z-index-modal-backdrop);display:flex;align-items:center;justify-content:center;background-color:#00000080;padding:var(--spacing-4);font-family:var(--font-family-base)}.modal__dialog{width:100%;max-width:720px;border-radius:var(--radius-lg);border:1px solid var(--color-border);overflow:hidden;box-shadow:var(--shadow-xl);background-color:var(--color-body-bg);display:grid;grid-template-rows:auto 1fr auto}.modal__header{padding:var(--spacing-4) var(--spacing-4) var(--spacing-2);border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--spacing-2)}.modal__header-content{flex:1;min-width:0}.modal__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-body-text);margin:0}.modal__body{padding:var(--spacing-4)}.modal__footer{padding:var(--spacing-4);display:flex;flex-wrap:wrap;gap:var(--spacing-3);justify-content:flex-end;border-top:1px solid var(--color-border)}";var c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,s=(n,e,r,l)=>{for(var a=l>1?void 0:l?h(e,r):e,i=n.length-1,d;i>=0;i--)(d=n[i])&&(a=(l?d(e,r,a):d(a))||a);return l&&a&&c(e,r,a),a};exports.Modal=class extends o.LitElement{constructor(){super(...arguments),this.open=!1,this.title="",this.closeOnEsc=!0,this.closeOnBackdrop=!0,this.showBack=!1,this.showClose=!1,this.hasFooterContent=!1,this.onKeyDown=e=>{this.open&&this.closeOnEsc&&e.key==="Escape"&&this.setOpen(!1)},this.onBackdropClick=e=>{if(!this.closeOnBackdrop)return;const r=this.shadowRoot?.querySelector(".__modal-content");r&&!r.contains(e.target)&&this.setOpen(!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("keydown",this.onKeyDown)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this.onKeyDown)}openModal(){this.setOpen(!0)}closeModal(){this.setOpen(!1)}setOpen(e){this.open!==e&&(this.open=e,this.dispatchEvent(new CustomEvent(e?"modal-open":"modal-close",{bubbles:!0})))}checkFooterContent(){this.hasFooterContent=this.querySelector('[slot="footer"]')!==null}updated(e){super.updated(e),this.checkFooterContent()}render(){return this.open?o.html`
1
+ "use strict";const o=require("lit"),t=require("lit/decorators.js"),p=".modal__backdrop{position:fixed;inset:0;z-index:var(--z-index-modal-backdrop);display:flex;align-items:center;justify-content:center;background-color:#00000080;padding:var(--spacing-4);font-family:var(--font-family-base)}.modal__dialog{width:100%;max-width:720px;border-radius:var(--radius-lg);border:1px solid var(--color-border);overflow:hidden;box-shadow:var(--shadow-xl);background-color:var(--color-body-bg);display:grid;grid-template-rows:auto 1fr auto}.modal__header{padding:var(--spacing-4) var(--spacing-4) var(--spacing-2);border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--spacing-2)}.modal__header-content{flex:1;min-width:0}.modal__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-body-text);margin:0}.modal__body{padding:var(--spacing-4)}.modal__footer{padding:var(--spacing-4);display:flex;flex-wrap:wrap;gap:var(--spacing-3);justify-content:flex-end;border-top:1px solid var(--color-border)}";var c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,s=(n,e,r,l)=>{for(var a=l>1?void 0:l?h(e,r):e,i=n.length-1,d;i>=0;i--)(d=n[i])&&(a=(l?d(e,r,a):d(a))||a);return l&&a&&c(e,r,a),a};exports.Modal=class extends o.LitElement{constructor(){super(...arguments),this.open=!1,this.title="",this.closeOnEsc=!0,this.closeOnBackdrop=!0,this.showBack=!1,this.showClose=!1,this.hasFooterContent=!1,this.onKeyDown=e=>{this.open&&this.closeOnEsc&&e.key==="Escape"&&this.setOpen(!1)},this.onBackdropClick=e=>{if(!this.closeOnBackdrop)return;const r=this.shadowRoot?.querySelector(".__modal-content");r&&!e.composedPath().includes(r)&&this.setOpen(!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("keydown",this.onKeyDown)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this.onKeyDown)}openModal(){this.setOpen(!0)}closeModal(){this.setOpen(!1)}setOpen(e){this.open!==e&&(this.open=e,this.dispatchEvent(new CustomEvent(e?"modal-open":"modal-close",{bubbles:!0})))}checkFooterContent(){this.hasFooterContent=this.querySelector('[slot="footer"]')!==null}updated(e){super.updated(e),this.checkFooterContent()}render(){return this.open?o.html`
2
2
  <div
3
3
  class="modal__backdrop"
4
4
  role="presentation"
@@ -13,7 +13,7 @@ let o = class extends m {
13
13
  }, this.onBackdropClick = (e) => {
14
14
  if (!this.closeOnBackdrop) return;
15
15
  const s = this.shadowRoot?.querySelector(".__modal-content");
16
- s && !s.contains(e.target) && this.setOpen(!1);
16
+ s && !e.composedPath().includes(s) && this.setOpen(!1);
17
17
  };
18
18
  }
19
19
  connectedCallback() {
package/dist/modal.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./modal-DU1sszVn.cjs");Object.defineProperty(exports,"Modal",{enumerable:!0,get:()=>e.Modal});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./modal-3-TNUICH.cjs");Object.defineProperty(exports,"Modal",{enumerable:!0,get:()=>e.Modal});
package/dist/modal.js CHANGED
@@ -1,4 +1,4 @@
1
- import { M as r } from "./modal-B8aQyCBg.js";
1
+ import { M as r } from "./modal-BhhhXCEK.js";
2
2
  export {
3
3
  r as Modal
4
4
  };
@@ -26,6 +26,8 @@ export declare class LogosphereInput extends LitElement {
26
26
  required: boolean;
27
27
  disabled: boolean;
28
28
  readonly: boolean;
29
+ /** Input mask. Token'lar: 0=rakam, a=harf, *=rakam|harf. Örn: "(000) 000-0000" */
30
+ mask: string;
29
31
  private _internalError;
30
32
  private _showPassword;
31
33
  get inputElement(): HTMLInputElement;
@@ -43,6 +45,8 @@ export declare class LogosphereInput extends LitElement {
43
45
  private handleClear;
44
46
  private handlePasswordToggle;
45
47
  protected willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
48
+ /** Mask varsa ve placeholder verilmemişse mask pattern'ını placeholder olarak göster */
49
+ private get _effectivePlaceholder();
46
50
  render(): import("lit-html").TemplateResult<1>;
47
51
  }
48
52
  declare global {
@@ -60,6 +60,8 @@ export declare class Combobox extends LitElement {
60
60
  private _getPopperReferenceElement;
61
61
  private _updatePopper;
62
62
  private _destroyPopper;
63
+ private _showPopover;
64
+ private _hidePopover;
63
65
  render(): import("lit-html").TemplateResult<1>;
64
66
  }
65
67
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logosphere-ui/core",
3
- "version": "0.0.0-alpha.23",
3
+ "version": "0.0.0-alpha.24",
4
4
  "description": "A modern, framework-agnostic UI component library built with Lit and Web Components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,59 +0,0 @@
1
- "use strict";const o=require("lit"),t=require("lit/decorators.js"),h=require("lit/directives/live.js");require("./formfield-BFOIEicR.cjs");require("./ui-icon-DWh1MhBa.cjs");const u=".input__field{width:100%;background:transparent;border:none;outline:none;font-size:var(--font-size-sm);font-family:var(--font-family-base);color:var(--color-body-text);box-sizing:border-box;line-height:1.5}.input__field::placeholder{color:var(--color-tertiary)}.input__field:disabled{cursor:not-allowed}.input__field--default{height:16px}.input__field--large{height:24px}.input__clear-btn{border:none;background:transparent;color:var(--color-gray-400);cursor:pointer;padding:0;display:inline-flex;align-items:center;outline:none;flex-shrink:0;transition:color var(--transition-speed-fast) var(--transition-timing)}.input__clear-btn:hover{color:var(--color-gray-600)}";var d=Object.defineProperty,y=Object.getOwnPropertyDescriptor,r=(l,e,i,s)=>{for(var n=s>1?void 0:s?y(e,i):e,p=l.length-1,a;p>=0;p--)(a=l[p])&&(n=(s?a(e,i,n):a(n))||n);return s&&n&&d(e,i,n),n};exports.LogosphereInput=class extends o.LitElement{constructor(){super(...arguments),this.value="",this.type="text",this.placeholder="",this.name="",this.autocomplete="",this.pattern="",this.size="default",this.variant="default",this.label="",this.helper="",this.error="",this.required=!1,this.disabled=!1,this.readonly=!1,this._internalError="",this._showPassword=!1,this.handleInput=e=>{const i=e.target;this.value=i.value,this._internalError&&(this._internalError="",this._inputElement.setCustomValidity("")),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}}))},this.handleChange=e=>{const i=e.target;this.value=i.value,i.checkValidity()||(this._internalError=i.validationMessage),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}}))},this.handleKeyDown=e=>{this.dispatchEvent(new CustomEvent("keydown",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleKeyUp=e=>{this.dispatchEvent(new CustomEvent("keyup",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleClear=()=>{this.value="",this._inputElement&&(this._inputElement.value=""),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:"",originalEvent:null}}))},this.handlePasswordToggle=()=>{this.disabled||(this._showPassword=!this._showPassword,this._inputElement?.focus())}}get inputElement(){return this._inputElement}focus(){this._inputElement?.focus()}blur(){this._inputElement?.blur()}select(){this._inputElement?.select()}setSelectionRange(e,i,s){this._inputElement?.setSelectionRange(e,i,s)}checkValidity(){return this._inputElement?.checkValidity()??!0}reportValidity(){return this._inputElement?.reportValidity()??!0}setCustomValidity(e){this._inputElement?.setCustomValidity(e),this._internalError=e,this.requestUpdate()}willUpdate(e){e.has("type")&&this.type!=="password"&&this._showPassword&&(this._showPassword=!1)}render(){const e=this.error||this._internalError,i=!!this.value&&!this.disabled&&!this.readonly,s=this.type==="password",n=s&&this._showPassword?"text":this.type,p=`input__field input__field--${this.size}`;return o.html`
2
- <logosphere-formfield
3
- .label=${this.label}
4
- .helper=${this.helper}
5
- .error=${e}
6
- .required=${this.required}
7
- .disabled=${this.disabled}
8
- .readonly=${this.readonly}
9
- .placeholder=${this.placeholder}
10
- .size=${this.size}
11
- .variant=${this.variant}
12
- >
13
- <slot name="prefix" slot="prefix"></slot>
14
- <input
15
- class="${p}"
16
- type=${n}
17
- .value=${h.live(this.value)}
18
- placeholder=${this.placeholder||o.nothing}
19
- name=${this.name||o.nothing}
20
- autocomplete=${this.autocomplete||o.nothing}
21
- ?required=${this.required}
22
- ?disabled=${this.disabled}
23
- ?readonly=${this.readonly}
24
- minlength=${this.minlength??o.nothing}
25
- maxlength=${this.maxlength??o.nothing}
26
- pattern=${this.pattern||o.nothing}
27
- min=${this.min??o.nothing}
28
- max=${this.max??o.nothing}
29
- step=${this.step??o.nothing}
30
- @input=${this.handleInput}
31
- @change=${this.handleChange}
32
- @keydown=${this.handleKeyDown}
33
- @keyup=${this.handleKeyUp}
34
- />
35
- ${i?o.html`
36
- <button
37
- type="button"
38
- slot="clear"
39
- class="input__clear-btn"
40
- @click=${this.handleClear}
41
- tabindex="-1"
42
- >
43
- <ui-icon name="uil-times" size="14"></ui-icon>
44
- </button>
45
- `:o.nothing}
46
- ${s?o.html`
47
- <button
48
- type="button"
49
- slot="suffix"
50
- class="input__clear-btn"
51
- aria-label=${this._showPassword?"Şifreyi gizle":"Şifreyi göster"}
52
- @click=${this.handlePasswordToggle}
53
- >
54
- <ui-icon name=${this._showPassword?"uil-eye-slash":"uil-eye"} size="16"></ui-icon>
55
- </button>
56
- `:o.nothing}
57
- <slot name="suffix" slot="suffix"></slot>
58
- </logosphere-formfield>
59
- `}};exports.LogosphereInput.styles=[o.css`${o.unsafeCSS(u)}`];r([t.query("input")],exports.LogosphereInput.prototype,"_inputElement",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"value",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"type",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"placeholder",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"name",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"autocomplete",2);r([t.property({type:Number})],exports.LogosphereInput.prototype,"minlength",2);r([t.property({type:Number})],exports.LogosphereInput.prototype,"maxlength",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"pattern",2);r([t.property({type:Number})],exports.LogosphereInput.prototype,"min",2);r([t.property({type:Number})],exports.LogosphereInput.prototype,"max",2);r([t.property({type:Number})],exports.LogosphereInput.prototype,"step",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"size",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"variant",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"label",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"helper",2);r([t.property({type:String})],exports.LogosphereInput.prototype,"error",2);r([t.property({type:Boolean})],exports.LogosphereInput.prototype,"required",2);r([t.property({type:Boolean})],exports.LogosphereInput.prototype,"disabled",2);r([t.property({type:Boolean})],exports.LogosphereInput.prototype,"readonly",2);r([t.state()],exports.LogosphereInput.prototype,"_internalError",2);r([t.state()],exports.LogosphereInput.prototype,"_showPassword",2);exports.LogosphereInput=r([t.customElement("logosphere-input")],exports.LogosphereInput);