kempo-ui 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/bin/get_icon.js +0 -0
  2. package/bin/highlight_code.js +0 -0
  3. package/bin/icon.js +0 -0
  4. package/bin/list_icons.js +0 -0
  5. package/dist/components/Slider.js +188 -0
  6. package/dist/components/Split.js +31 -13
  7. package/docs/components/accordion.html +4 -0
  8. package/docs/components/aside.html +4 -0
  9. package/docs/components/card.html +4 -0
  10. package/docs/components/code-editor.html +4 -0
  11. package/docs/components/color-picker.html +4 -0
  12. package/docs/components/combobox.html +4 -0
  13. package/docs/components/content-slider.html +4 -0
  14. package/docs/components/context.html +4 -0
  15. package/docs/components/dialog.html +4 -0
  16. package/docs/components/dropdown.html +4 -0
  17. package/docs/components/filter-list.html +4 -0
  18. package/docs/components/focus-capture.html +4 -0
  19. package/docs/components/html-editor.html +4 -0
  20. package/docs/components/hybrid-component.html +4 -0
  21. package/docs/components/icon.html +4 -0
  22. package/docs/components/import.html +4 -0
  23. package/docs/components/light-component.html +4 -0
  24. package/docs/components/nav-spacer.html +4 -0
  25. package/docs/components/nav.html +4 -0
  26. package/docs/components/photo-viewer.html +4 -0
  27. package/docs/components/progress.html +4 -0
  28. package/docs/components/resize.html +4 -0
  29. package/docs/components/shadow-component.html +4 -0
  30. package/docs/components/show-more.html +4 -0
  31. package/docs/components/slider.html +781 -0
  32. package/docs/components/sortable.html +4 -0
  33. package/docs/components/spinner.html +4 -0
  34. package/docs/components/split.html +32 -3
  35. package/docs/components/table.html +4 -0
  36. package/docs/components/tableControls.html +4 -0
  37. package/docs/components/tableCustomFields.html +4 -0
  38. package/docs/components/tableFetchRecords.html +4 -0
  39. package/docs/components/tableFieldSortHide.html +4 -0
  40. package/docs/components/tablePagination.html +4 -0
  41. package/docs/components/tablePlaceholder.html +4 -0
  42. package/docs/components/tableRecordEditing.html +4 -0
  43. package/docs/components/tableRecordFiltering.html +4 -0
  44. package/docs/components/tableRecordHiding.html +4 -0
  45. package/docs/components/tableRecordSearching.html +4 -0
  46. package/docs/components/tableRecordSelection.html +4 -0
  47. package/docs/components/tableRowControls.html +4 -0
  48. package/docs/components/tableServerSync.html +4 -0
  49. package/docs/components/tableSorting.html +4 -0
  50. package/docs/components/tabs.html +4 -0
  51. package/docs/components/tags.html +4 -0
  52. package/docs/components/theme-select.html +4 -0
  53. package/docs/components/theme-switcher.html +4 -0
  54. package/docs/components/timestamp.html +4 -0
  55. package/docs/components/toast.html +4 -0
  56. package/docs/components/toggle.html +4 -0
  57. package/docs/components/tree.html +4 -0
  58. package/docs/index.html +10 -0
  59. package/docs/src/components/Slider.js +188 -0
  60. package/docs/src/components/Split.js +31 -13
  61. package/docs/utils/context.html +4 -0
  62. package/docs/utils/cookie.html +4 -0
  63. package/docs/utils/debounce.html +4 -0
  64. package/docs/utils/drag.html +4 -0
  65. package/docs/utils/elevation.html +4 -0
  66. package/docs/utils/formatTimestamp.html +4 -0
  67. package/docs/utils/object.html +4 -0
  68. package/docs/utils/propConverters.html +4 -0
  69. package/docs/utils/string.html +4 -0
  70. package/docs/utils/theme.html +4 -0
  71. package/docs/utils/toTitleCase.html +4 -0
  72. package/docs/utils/type.html +4 -0
  73. package/docs/utils/wait.html +4 -0
  74. package/docs-src/components/slider.page.html +331 -0
  75. package/docs-src/components/split.page.html +28 -3
  76. package/docs-src/index.page.html +6 -0
  77. package/docs-src/nav.fragment.html +4 -0
  78. package/llms.txt +1 -0
  79. package/package.json +1 -1
  80. package/src/components/Slider.js +480 -0
  81. package/src/components/Split.js +163 -132
  82. package/tests/components/Slider.browser-test.js +823 -0
@@ -0,0 +1,188 @@
1
+ import{html as t,css as e}from"../lit-all.min.js";import i from"./ShadowComponent.js";export default class s extends i{static formAssociated=!0;static properties={value:{type:String,reflect:!0},name:{type:String,reflect:!0},min:{type:Number,reflect:!0},max:{type:Number,reflect:!0},steps:{type:String,reflect:!0},format:{type:String,reflect:!0},tooltip:{type:Boolean,reflect:!0},vertical:{type:Boolean,reflect:!0},disabled:{type:Boolean,reflect:!0}};#t=null;constructor(){super(),this.internals=this.attachInternals(),this.value="0",this.name="",this.min=0,this.max=100,this.steps=null,this.format=null,this.tooltip=!1,this.vertical=!1,this.disabled=!1,this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this.handleKeyDown)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this.handleKeyDown)}get isRange(){return String(this.value).includes(",")}get formattedValue(){return this.format?this.isRange?`${this.formatValue(this.lower)},${this.formatValue(this.upper)}`:this.formatValue(this.lower):this.value}updated(t){super.updated(t),this.internals.setFormValue(this.formattedValue),t.has("value")&&void 0!==t.get("value")&&this.dispatchEvent(new CustomEvent("change",{detail:{value:this.formattedValue},bubbles:!0}))}get stepValues(){return this.steps?this.steps.split(",").map(t=>Number(t.trim())).filter(t=>!isNaN(t)).sort((t,e)=>t-e):null}get lower(){const t=String(this.value).split(",");return Number(t[0])||0}get upper(){const t=String(this.value).split(",");return t.length>1?Number(t[1]):this.max}get percentage(){return(this.lower-this.min)/(this.max-this.min)*100}get upperPercentage(){return(this.upper-this.min)/(this.max-this.min)*100}formatValue=t=>{if(!this.format)return String(t);const e=this.format,i=e.match(/0([^0]?)0+/);if(!i)return e.replace("0",String(Math.round(t)));const s=i[0].indexOf(i[1])>0?i[1]:"",r=s?i[0].split(s)[1].length:0,a=t.toFixed(r);return e.replace(i[0],a)};snapToNearest=t=>{const e=this.stepValues;if(!e||0===e.length)return Math.min(this.max,Math.max(this.min,t));let i=e[0],s=Math.abs(t-i);for(let r=1;r<e.length;r++){const a=Math.abs(t-e[r]);a<s&&(i=e[r],s=a)}return i};ratioFromEvent=t=>{const e=this.shadowRoot.querySelector("#track").getBoundingClientRect();return this.vertical?Math.min(1,Math.max(0,1-(t.clientY-e.top)/e.height)):Math.min(1,Math.max(0,(t.clientX-e.left)/e.width))};valueFromEvent=t=>{const e=this.min+this.ratioFromEvent(t)*(this.max-this.min);return this.snapToNearest(e)};setValue=t=>{if(this.disabled)return;const e=Math.min(this.max,Math.max(this.min,t)),i=this.snapToNearest(e);if(this.isRange){if(i>this.upper)return;i!==this.lower&&(this.value=`${i},${this.upper}`)}else i!==this.lower&&(this.value=String(i))};setUpper=t=>{if(this.disabled||!this.isRange)return;const e=Math.min(this.max,Math.max(this.min,t)),i=this.snapToNearest(e);i<this.lower||i!==this.upper&&(this.value=`${this.lower},${i}`)};closestThumb=t=>{if(!this.isRange)return"lower";return Math.abs(t-this.lower)<=Math.abs(t-this.upper)?"lower":"upper"};stepIncrement=(t,e)=>{const i=this.stepValues;if(i&&i.length>0){const s=i.indexOf(t);if(e>0){if(s>=0&&s<i.length-1)return i[s+1];if(-1===s)return i.find(e=>e>t)??i[i.length-1]}else{if(s>0)return i[s-1];if(-1===s)return[...i].reverse().find(e=>e<t)??i[0]}return t}return t+e};handleTrackClick=t=>{if(this.disabled)return;const e=this.valueFromEvent(t);this.isRange&&"upper"===this.closestThumb(e)?this.setUpper(e):this.setValue(e)};handleThumbDown=(t,e)=>{if(this.disabled)return;e.preventDefault(),e.stopPropagation(),this.#t=t,this.requestUpdate();const i=t=>{const e=t.touches?t.touches[0]:t,i=this.valueFromEvent(e);"upper"===this.#t?this.setUpper(i):this.setValue(i)},s=()=>{this.#t=null,this.requestUpdate(),window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",s),window.removeEventListener("touchmove",i),window.removeEventListener("touchend",s)};window.addEventListener("mousemove",i),window.addEventListener("mouseup",s),window.addEventListener("touchmove",i),window.addEventListener("touchend",s)};handleKeyDown=t=>{if(this.disabled)return;const e=this.stepValues,i="ArrowRight"===t.key||"ArrowUp"===t.key,s="ArrowLeft"===t.key||"ArrowDown"===t.key;if(i||s){t.preventDefault();const e=i?1:-1;this.isRange&&"upper"===this.#t?this.setUpper(this.stepIncrement(this.upper,e)):this.setValue(this.stepIncrement(this.lower,e))}else"Home"===t.key?(t.preventDefault(),this.setValue(e?e[0]:this.min)):"End"===t.key&&(t.preventDefault(),this.isRange?this.setUpper(e?e[e.length-1]:this.max):this.setValue(e?e[e.length-1]:this.max))};renderHorizontal=()=>{const e=this.percentage,i=this.stepValues;if(this.isRange){const s=this.upperPercentage;return t`
2
+ <div id="track" @click=${this.handleTrackClick}>
3
+ <div id="fill" style="left:${e}%;width:${s-e}%"></div>
4
+ ${i?i.map(e=>{const i=(e-this.min)/(this.max-this.min)*100;return t`<div class="step-dot" style="left:${i}%"></div>`}):""}
5
+ <div
6
+ class="thumb${"lower"===this.#t?" active":""}"
7
+ style="left:${e}%"
8
+ @mousedown=${t=>this.handleThumbDown("lower",t)}
9
+ @touchstart=${t=>this.handleThumbDown("lower",t)}
10
+ >${this.tooltip&&"lower"===this.#t?t`<div class="tooltip">${this.formatValue(this.lower)}</div>`:""}</div>
11
+ <div
12
+ class="thumb${"upper"===this.#t?" active":""}"
13
+ style="left:${s}%"
14
+ @mousedown=${t=>this.handleThumbDown("upper",t)}
15
+ @touchstart=${t=>this.handleThumbDown("upper",t)}
16
+ >${this.tooltip&&"upper"===this.#t?t`<div class="tooltip">${this.formatValue(this.upper)}</div>`:""}</div>
17
+ </div>
18
+ `}return t`
19
+ <div id="track" @click=${this.handleTrackClick}>
20
+ <div id="fill" style="width:${e}%"></div>
21
+ ${i?i.map(e=>{const i=(e-this.min)/(this.max-this.min)*100;return t`<div class="step-dot" style="left:${i}%"></div>`}):""}
22
+ <div
23
+ class="thumb${"lower"===this.#t?" active":""}"
24
+ style="left:${e}%"
25
+ @mousedown=${t=>this.handleThumbDown("lower",t)}
26
+ @touchstart=${t=>this.handleThumbDown("lower",t)}
27
+ >${this.tooltip&&"lower"===this.#t?t`<div class="tooltip">${this.formatValue(this.lower)}</div>`:""}</div>
28
+ </div>
29
+ `};renderVertical=()=>{const e=this.percentage,i=this.stepValues;if(this.isRange){const s=this.upperPercentage;return t`
30
+ <div id="track" @click=${this.handleTrackClick}>
31
+ <div id="fill" style="bottom:${e}%;height:${s-e}%"></div>
32
+ ${i?i.map(e=>{const i=(e-this.min)/(this.max-this.min)*100;return t`<div class="step-dot" style="bottom:${i}%"></div>`}):""}
33
+ <div
34
+ class="thumb${"lower"===this.#t?" active":""}"
35
+ style="bottom:${e}%"
36
+ @mousedown=${t=>this.handleThumbDown("lower",t)}
37
+ @touchstart=${t=>this.handleThumbDown("lower",t)}
38
+ >${this.tooltip&&"lower"===this.#t?t`<div class="tooltip">${this.formatValue(this.lower)}</div>`:""}</div>
39
+ <div
40
+ class="thumb${"upper"===this.#t?" active":""}"
41
+ style="bottom:${s}%"
42
+ @mousedown=${t=>this.handleThumbDown("upper",t)}
43
+ @touchstart=${t=>this.handleThumbDown("upper",t)}
44
+ >${this.tooltip&&"upper"===this.#t?t`<div class="tooltip">${this.formatValue(this.upper)}</div>`:""}</div>
45
+ </div>
46
+ `}return t`
47
+ <div id="track" @click=${this.handleTrackClick}>
48
+ <div id="fill" style="height:${e}%"></div>
49
+ ${i?i.map(e=>{const i=(e-this.min)/(this.max-this.min)*100;return t`<div class="step-dot" style="bottom:${i}%"></div>`}):""}
50
+ <div
51
+ class="thumb${"lower"===this.#t?" active":""}"
52
+ style="bottom:${e}%"
53
+ @mousedown=${t=>this.handleThumbDown("lower",t)}
54
+ @touchstart=${t=>this.handleThumbDown("lower",t)}
55
+ >${this.tooltip&&"lower"===this.#t?t`<div class="tooltip">${this.formatValue(this.lower)}</div>`:""}</div>
56
+ </div>
57
+ `};render(){return t`
58
+ ${this.vertical?this.renderVertical():this.renderHorizontal()}
59
+ <div id="label"><slot></slot></div>
60
+ `}static styles=e`
61
+ :host {
62
+ --track_height: 6px;
63
+ --track_background: var(--c_border);
64
+ --track_radius: 99999px;
65
+ --fill_background: var(--c_primary);
66
+ --thumb_size: 20px;
67
+ --thumb_background: var(--c_primary);
68
+ --thumb_border: 2px solid white;
69
+ --thumb_shadow: var(--focus_shadow);
70
+ --step_dot_size: 8px;
71
+ --step_dot_background: var(--c_bg__alt);
72
+ --step_dot_border: 1px solid var(--c_border);
73
+ --vertical_height: 10rem;
74
+
75
+ display: flex;
76
+ align-items: center;
77
+ gap: 0.5rem;
78
+ cursor: pointer;
79
+ user-select: none;
80
+ }
81
+ :host([disabled]) {
82
+ opacity: 0.5;
83
+ pointer-events: none;
84
+ }
85
+ :host([vertical]) {
86
+ flex-direction: column;
87
+ width: auto;
88
+ display: inline-flex;
89
+ }
90
+ #track {
91
+ flex: 1;
92
+ height: var(--track_height);
93
+ background: var(--track_background);
94
+ border-radius: var(--track_radius);
95
+ position: relative;
96
+ }
97
+ :host([vertical]) #track {
98
+ height: auto;
99
+ width: var(--track_height);
100
+ min-height: var(--vertical_height);
101
+ }
102
+ #fill {
103
+ background: var(--fill_background);
104
+ border-radius: var(--track_radius);
105
+ pointer-events: none;
106
+ }
107
+ :host(:not([vertical])) #fill {
108
+ height: 100%;
109
+ position: absolute;
110
+ top: 0;
111
+ left: 0;
112
+ }
113
+ :host([vertical]) #fill {
114
+ width: 100%;
115
+ position: absolute;
116
+ bottom: 0;
117
+ left: 0;
118
+ }
119
+ .thumb {
120
+ width: var(--thumb_size);
121
+ height: var(--thumb_size);
122
+ background: var(--thumb_background);
123
+ border: var(--thumb_border);
124
+ border-radius: 50%;
125
+ position: absolute;
126
+ box-shadow: 0 0 0 transparent;
127
+ cursor: grab;
128
+ transition: box-shadow 0.15s;
129
+ z-index: 1;
130
+ }
131
+ :host(:not([vertical])) .thumb {
132
+ top: 50%;
133
+ transform: translate(-50%, -50%);
134
+ }
135
+ :host([vertical]) .thumb {
136
+ left: 50%;
137
+ transform: translate(-50%, 50%);
138
+ }
139
+ .thumb:active,
140
+ .thumb.active {
141
+ cursor: grabbing;
142
+ box-shadow: var(--focus_shadow);
143
+ }
144
+ .tooltip {
145
+ position: absolute;
146
+ background: var(--c_text);
147
+ color: var(--c_bg);
148
+ padding: 0.15rem 0.4rem;
149
+ border-radius: 0.25rem;
150
+ font-size: 0.75rem;
151
+ white-space: nowrap;
152
+ pointer-events: none;
153
+ line-height: 1.2;
154
+ }
155
+ :host(:not([vertical])) .tooltip {
156
+ bottom: calc(100% + 6px);
157
+ left: 50%;
158
+ transform: translateX(-50%);
159
+ }
160
+ :host([vertical]) .tooltip {
161
+ right: calc(100% + 6px);
162
+ top: 50%;
163
+ transform: translateY(-50%);
164
+ }
165
+ .step-dot {
166
+ width: var(--step_dot_size);
167
+ height: var(--step_dot_size);
168
+ background: var(--step_dot_background);
169
+ border: var(--step_dot_border);
170
+ border-radius: 50%;
171
+ position: absolute;
172
+ pointer-events: none;
173
+ }
174
+ :host(:not([vertical])) .step-dot {
175
+ top: 50%;
176
+ transform: translate(-50%, -50%);
177
+ }
178
+ :host([vertical]) .step-dot {
179
+ left: 50%;
180
+ transform: translate(-50%, 50%);
181
+ }
182
+ #label {
183
+ font-size: 0.875rem;
184
+ }
185
+ #label:empty {
186
+ display: none;
187
+ }
188
+ `}customElements.define("k-slider",s);
@@ -1,7 +1,19 @@
1
- import{html as e,css as t}from"../lit-all.min.js";import i from"./ShadowComponent.js";import s from"../utils/drag.js";export default class r extends i{static properties={resizing:{type:Boolean,reflect:!0},stacked:{type:Boolean,reflect:!0},stackWidth:{type:Number,attribute:"stack-width"},direction:{type:String,reflect:!0},persistentId:{type:String,reflect:!0,attribute:"persistent-id"}};constructor(){super(),this.resizing=!1,this.stacked=!1,this.stackWidth=0,this.direction="horizontal",this.persistentId=null,this.dragStartSize=0,this.dragCleanup=()=>{},this.resizeObserver=null}firstUpdated(){if(super.firstUpdated(),this.setupDragHandler(),this.setupResizeObserver(),this.persistentId&&window?.localStorage){const e=window.localStorage.getItem(`split-persistent-id-${this.persistentId}`);e&&this.setSize(e)}}disconnectedCallback(){super.disconnectedCallback(),this.dragCleanup(),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}handleDragStart=()=>{this.resizing=!0,this.dragStartSize=Math.round(this.shadowRoot.getElementById("pane-1").getBoundingClientRect()["vertical"===this.direction?"height":"width"]),this.dispatchEvent(new CustomEvent("resizestart",{detail:{startSize:this.dragStartSize},bubbles:!0}))};handleDrag=({x:e,y:t})=>{const i="vertical"===this.direction?t:e,s=`${this.dragStartSize+i}px`;this.setSize(s),this.dispatchEvent(new CustomEvent("resize",{detail:{size:s},bubbles:!0}))};handleDragEnd=({x:e,y:t})=>{this.resizing=!1;const i="vertical"===this.direction?t:e,s=`${this.dragStartSize+i}px`;this.setSize(s),this.persistentId&&window?.localStorage&&window.localStorage.setItem(`split-persistent-id-${this.persistentId}`,s),this.dispatchEvent(new CustomEvent("resizeend",{detail:{size:s},bubbles:!0}))};setSize(e){this.style.setProperty("--pane_1_size",e)}setupDragHandler(){const e=this.shadowRoot.getElementById("divider-handle");e&&(this.dragCleanup=s({element:e,callback:this.handleDrag,startCallback:this.handleDragStart,endCallback:this.handleDragEnd}))}setupResizeObserver(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const e=t.contentRect.width;this.stacked=e<=this.stackWidth}}),this.resizeObserver.observe(this)}static styles=t`
1
+ import{html as e,css as t}from"../lit-all.min.js";import i from"./ShadowComponent.js";import s from"../utils/drag.js";import{boolExists as r}from"../utils/propConverters.js";export default class d extends i{static properties={resizing:{type:Boolean,reflect:!0},stacked:{type:Boolean,reflect:!0},stackWidth:{type:Number,attribute:"stack-width"},direction:{type:String,reflect:!0},persistentId:{type:String,reflect:!0,attribute:"persistent-id"},grip:{type:Boolean,reflect:!0,converter:r}};constructor(){super(),this.resizing=!1,this.stacked=!1,this.stackWidth=0,this.direction="horizontal",this.persistentId=null,this.grip=!1,this.dragStartSize=0,this.dragCleanup=()=>{},this.resizeObserver=null}firstUpdated(){if(super.firstUpdated(),this.grip){const e=document.createElement("div");e.style.cssText="position:absolute;visibility:hidden;width:var(--handle_width)",this.shadowRoot.appendChild(e);const t=e.offsetWidth;this.shadowRoot.removeChild(e);const i=t%2==0?t-1:t;this.style.setProperty("--handle_grip_width",`${i}px`)}if(this.setupDragHandler(),this.setupResizeObserver(),this.persistentId&&window?.localStorage){const e=window.localStorage.getItem(`split-persistent-id-${this.persistentId}`);e&&this.setSize(e)}}disconnectedCallback(){super.disconnectedCallback(),this.dragCleanup(),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}handleDragStart=()=>{this.resizing=!0,this.dragStartSize=Math.round(this.shadowRoot.getElementById("pane-1").getBoundingClientRect()["vertical"===this.direction?"height":"width"]),this.dispatchEvent(new CustomEvent("resizestart",{detail:{startSize:this.dragStartSize},bubbles:!0}))};handleDrag=({x:e,y:t})=>{const i="vertical"===this.direction?t:e,s=`${this.dragStartSize+i}px`;this.setSize(s),this.dispatchEvent(new CustomEvent("resize",{detail:{size:s},bubbles:!0}))};handleDragEnd=({x:e,y:t})=>{this.resizing=!1;const i="vertical"===this.direction?t:e,s=`${this.dragStartSize+i}px`;this.setSize(s),this.persistentId&&window?.localStorage&&window.localStorage.setItem(`split-persistent-id-${this.persistentId}`,s),this.dispatchEvent(new CustomEvent("resizeend",{detail:{size:s},bubbles:!0}))};setSize(e){this.style.setProperty("--pane_1_size",e)}setupDragHandler(){const e=this.shadowRoot.getElementById("divider-handle");e&&(this.dragCleanup=s({element:e,callback:this.handleDrag,startCallback:this.handleDragStart,endCallback:this.handleDragEnd}))}setupResizeObserver(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const e=t.contentRect.width;this.stacked=e<=this.stackWidth}}),this.resizeObserver.observe(this)}render(){return e`
2
+ <div id="pane-1" class="pane">
3
+ <slot></slot>
4
+ </div>
5
+ <div id="divider-handle">
6
+ <div id="divider-border">
7
+ ${this.grip?e`<div id="divider-grip"></div>`:""}
8
+ </div>
9
+ </div>
10
+ <div id="pane-2" class="pane">
11
+ <slot name="right"></slot>
12
+ </div>
13
+ `}static styles=t`
2
14
  :host {
3
15
  --pane_1_size: calc((100% - var(--handle_width)) / 2);
4
- --handle_width: 0.5rem;
16
+ --handle_width: 7px;
5
17
  --min_pane_size: 6rem;
6
18
 
7
19
  height: 100%;
@@ -27,6 +39,7 @@ import{html as e,css as t}from"../lit-all.min.js";import i from"./ShadowComponen
27
39
  }
28
40
 
29
41
  #divider-handle {
42
+ position: relative;
30
43
  display: flex;
31
44
  flex-shrink: 0;
32
45
  justify-content: center;
@@ -47,10 +60,21 @@ import{html as e,css as t}from"../lit-all.min.js";import i from"./ShadowComponen
47
60
  }
48
61
 
49
62
  #divider-border {
63
+ position: relative;
50
64
  width: 1px;
51
65
  height: 100%;
52
66
  border-left: 1px solid var(--c_border);
53
67
  }
68
+ #divider-grip {
69
+ position: absolute;
70
+ top: 50%;
71
+ left: 50%;
72
+ transform: translate(-50%, -50%);
73
+ width: var(--handle_grip_width, var(--handle_width));
74
+ height: 2rem;
75
+ border-radius: 0.25rem;
76
+ background-color: var(--c_border);
77
+ }
54
78
 
55
79
  #pane-2 {
56
80
  flex: 1 1;
@@ -105,14 +129,8 @@ import{html as e,css as t}from"../lit-all.min.js";import i from"./ShadowComponen
105
129
  border-left: none;
106
130
  border-top: 1px solid var(--c_border);
107
131
  }
108
- `;render(){return e`
109
- <div id="pane-1" class="pane">
110
- <slot></slot>
111
- </div>
112
- <div id="divider-handle">
113
- <div id="divider-border"></div>
114
- </div>
115
- <div id="pane-2" class="pane">
116
- <slot name="right"></slot>
117
- </div>
118
- `}}customElements.define("k-split",r);
132
+ :host([direction="vertical"]) #divider-grip {
133
+ width: 2rem;
134
+ height: 0.5rem;
135
+ }
136
+ `}customElements.define("k-split",d);
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>
@@ -111,6 +111,9 @@
111
111
  <k-filter-item filter-keywords="show more showmore components"><a
112
112
  href="../components/show-more.html"
113
113
  >Show More<br><small>Component</small></a></k-filter-item>
114
+ <k-filter-item filter-keywords="slider range input step components"><a
115
+ href="../components/slider.html"
116
+ >Slider<br><small>Component</small></a></k-filter-item>
114
117
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
115
118
  href="../components/sortable.html"
116
119
  >Sortable<br><small>Component</small></a></k-filter-item>
@@ -285,6 +288,7 @@
285
288
  <a href="../components/progress.html">Progress</a>
286
289
  <a href="../components/resize.html">Resize</a>
287
290
  <a href="../components/show-more.html">Show More</a>
291
+ <a href="../components/slider.html">Slider</a>
288
292
  <a href="../components/sortable.html">Sortable</a>
289
293
  <a href="../components/spinner.html">Spinner</a>
290
294
  <a href="../components/split.html">Split</a>