igniteui-webcomponents 1.0.0 → 2.0.0-beta.0

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 (267) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/README.md +17 -1
  3. package/components/avatar/avatar.d.ts +20 -2
  4. package/components/avatar/avatar.material.css.d.ts +0 -1
  5. package/components/avatar/avatar.material.css.js +1 -1
  6. package/components/avatar/avatar.material.css.js.map +1 -1
  7. package/components/badge/badge.d.ts +18 -4
  8. package/components/badge/badge.js.map +1 -1
  9. package/components/badge/badge.material.css.d.ts +0 -1
  10. package/components/badge/badge.material.css.js +1 -1
  11. package/components/badge/badge.material.css.js.map +1 -1
  12. package/components/button/button-base.d.ts +24 -1
  13. package/components/button/button-base.js +16 -0
  14. package/components/button/button-base.js.map +1 -1
  15. package/components/button/button.d.ts +23 -2
  16. package/components/button/button.material.css.d.ts +0 -1
  17. package/components/button/button.material.css.js +1 -1
  18. package/components/button/button.material.css.js.map +1 -1
  19. package/components/button/icon-button.d.ts +15 -2
  20. package/components/button/icon-button.js +15 -1
  21. package/components/button/icon-button.js.map +1 -1
  22. package/components/button/icon-button.material.css.d.ts +0 -1
  23. package/components/button/icon-button.material.css.js +1 -1
  24. package/components/button/icon-button.material.css.js.map +1 -1
  25. package/components/calendar/calendar.d.ts +42 -3
  26. package/components/calendar/calendar.js +34 -12
  27. package/components/calendar/calendar.js.map +1 -1
  28. package/components/calendar/calendar.material.css.d.ts +0 -1
  29. package/components/calendar/calendar.material.css.js +1 -1
  30. package/components/calendar/calendar.material.css.js.map +1 -1
  31. package/components/calendar/common/calendar-base.d.ts +17 -2
  32. package/components/calendar/common/calendar-base.js +28 -4
  33. package/components/calendar/common/calendar-base.js.map +1 -1
  34. package/components/calendar/common/calendar.model.d.ts +57 -1
  35. package/components/calendar/common/utils.d.ts +0 -1
  36. package/components/calendar/days-view/days-view.d.ts +25 -2
  37. package/components/calendar/days-view/days-view.js +38 -35
  38. package/components/calendar/days-view/days-view.js.map +1 -1
  39. package/components/calendar/days-view/days-view.material.css.d.ts +0 -1
  40. package/components/calendar/days-view/days-view.material.css.js +1 -1
  41. package/components/calendar/days-view/days-view.material.css.js.map +1 -1
  42. package/components/calendar/months-view/months-view.d.ts +17 -2
  43. package/components/calendar/months-view/months-view.js +4 -2
  44. package/components/calendar/months-view/months-view.js.map +1 -1
  45. package/components/calendar/months-view/months-view.material.css.d.ts +0 -1
  46. package/components/calendar/years-view/years-view.d.ts +16 -2
  47. package/components/calendar/years-view/years-view.js +4 -2
  48. package/components/calendar/years-view/years-view.js.map +1 -1
  49. package/components/calendar/years-view/years-view.material.css.d.ts +0 -1
  50. package/components/card/card.actions.d.ts +10 -2
  51. package/components/card/card.actions.material.css.d.ts +0 -1
  52. package/components/card/card.actions.material.css.js +1 -1
  53. package/components/card/card.actions.material.css.js.map +1 -1
  54. package/components/card/card.content.d.ts +8 -2
  55. package/components/card/card.content.material.css.d.ts +0 -1
  56. package/components/card/card.content.material.css.js +1 -1
  57. package/components/card/card.content.material.css.js.map +1 -1
  58. package/components/card/card.d.ts +10 -3
  59. package/components/card/card.header.d.ts +13 -2
  60. package/components/card/card.header.material.css.d.ts +0 -1
  61. package/components/card/card.header.material.css.js +1 -1
  62. package/components/card/card.header.material.css.js.map +1 -1
  63. package/components/card/card.js +2 -2
  64. package/components/card/card.js.map +1 -1
  65. package/components/card/card.material.css.d.ts +0 -1
  66. package/components/card/card.material.css.js +1 -1
  67. package/components/card/card.material.css.js.map +1 -1
  68. package/components/card/card.media.d.ts +8 -2
  69. package/components/card/card.media.material.css.d.ts +0 -1
  70. package/components/card/card.media.material.css.js +1 -1
  71. package/components/card/card.media.material.css.js.map +1 -1
  72. package/components/checkbox/checkbox-base.d.ts +16 -1
  73. package/components/checkbox/checkbox.d.ts +21 -3
  74. package/components/checkbox/checkbox.js +25 -27
  75. package/components/checkbox/checkbox.js.map +1 -1
  76. package/components/checkbox/checkbox.material.css.d.ts +0 -1
  77. package/components/checkbox/checkbox.material.css.js +1 -1
  78. package/components/checkbox/checkbox.material.css.js.map +1 -1
  79. package/components/checkbox/switch.d.ts +19 -2
  80. package/components/checkbox/switch.js +17 -18
  81. package/components/checkbox/switch.js.map +1 -1
  82. package/components/checkbox/switch.material.css.d.ts +0 -1
  83. package/components/checkbox/switch.material.css.js +1 -1
  84. package/components/checkbox/switch.material.css.js.map +1 -1
  85. package/components/common/decorators/alternateName.d.ts +6 -1
  86. package/components/common/decorators/blazorInclude.d.ts +4 -1
  87. package/components/common/decorators/blazorIndirectRender.d.ts +4 -0
  88. package/components/common/decorators/blazorIndirectRender.js +2 -0
  89. package/components/common/decorators/blazorIndirectRender.js.map +1 -0
  90. package/components/common/decorators/blazorSuppress.d.ts +4 -1
  91. package/components/common/decorators/blazorSuppressComponent.d.ts +4 -0
  92. package/components/common/decorators/blazorSuppressComponent.js +2 -0
  93. package/components/common/decorators/blazorSuppressComponent.js.map +1 -0
  94. package/components/common/decorators/blazorTwoWayBind.d.ts +6 -1
  95. package/components/common/decorators/index.d.ts +2 -1
  96. package/components/common/decorators/index.js +2 -0
  97. package/components/common/decorators/index.js.map +1 -1
  98. package/components/common/decorators/watch.d.ts +0 -1
  99. package/components/common/definitions/defineAllComponents.d.ts +0 -1
  100. package/components/common/definitions/defineAllComponents.js +4 -0
  101. package/components/common/definitions/defineAllComponents.js.map +1 -1
  102. package/components/common/definitions/defineComponents.d.ts +0 -1
  103. package/components/common/i18n/calendar.resources.d.ts +0 -1
  104. package/components/common/mixins/constructor.d.ts +0 -1
  105. package/components/common/mixins/event-emitter.d.ts +0 -1
  106. package/components/common/mixins/sizable.d.ts +4 -1
  107. package/components/common/util.d.ts +0 -1
  108. package/components/form/form.d.ts +21 -2
  109. package/components/form/form.js +4 -1
  110. package/components/form/form.js.map +1 -1
  111. package/components/icon/icon.d.ts +26 -2
  112. package/components/icon/icon.material.css.d.ts +0 -1
  113. package/components/icon/icon.material.css.js +1 -1
  114. package/components/icon/icon.material.css.js.map +1 -1
  115. package/components/icon/icon.registry.d.ts +0 -1
  116. package/components/input/input.d.ts +56 -2
  117. package/components/input/input.dark.material.css.d.ts +1 -0
  118. package/components/input/input.dark.material.css.js +3 -0
  119. package/components/input/input.dark.material.css.js.map +1 -0
  120. package/components/input/input.material.css.d.ts +0 -1
  121. package/components/input/input.material.css.js +1 -1
  122. package/components/input/input.material.css.js.map +1 -1
  123. package/components/list/list-header.d.ts +10 -2
  124. package/components/list/list-header.material.css.d.ts +0 -1
  125. package/components/list/list-header.material.css.js +1 -1
  126. package/components/list/list-header.material.css.js.map +1 -1
  127. package/components/list/list-item.d.ts +22 -2
  128. package/components/list/list-item.material.css.d.ts +0 -1
  129. package/components/list/list-item.material.css.js +1 -1
  130. package/components/list/list-item.material.css.js.map +1 -1
  131. package/components/list/list.d.ts +10 -2
  132. package/components/list/list.material.css.d.ts +0 -1
  133. package/components/list/list.material.css.js +1 -1
  134. package/components/list/list.material.css.js.map +1 -1
  135. package/components/nav-drawer/nav-drawer-header-item.d.ts +9 -2
  136. package/components/nav-drawer/nav-drawer-header-item.material.css.d.ts +0 -1
  137. package/components/nav-drawer/nav-drawer-header-item.material.css.js +1 -1
  138. package/components/nav-drawer/nav-drawer-header-item.material.css.js.map +1 -1
  139. package/components/nav-drawer/nav-drawer-item.d.ts +17 -2
  140. package/components/nav-drawer/nav-drawer-item.material.css.d.ts +0 -1
  141. package/components/nav-drawer/nav-drawer-item.material.css.js +1 -1
  142. package/components/nav-drawer/nav-drawer-item.material.css.js.map +1 -1
  143. package/components/nav-drawer/nav-drawer.d.ts +26 -2
  144. package/components/nav-drawer/nav-drawer.material.css.d.ts +0 -1
  145. package/components/nav-drawer/nav-drawer.material.css.js +1 -1
  146. package/components/nav-drawer/nav-drawer.material.css.js.map +1 -1
  147. package/components/navbar/navbar.d.ts +18 -2
  148. package/components/navbar/navbar.material.css.d.ts +0 -1
  149. package/components/navbar/navbar.material.css.js +1 -1
  150. package/components/navbar/navbar.material.css.js.map +1 -1
  151. package/components/radio/radio.d.ts +31 -2
  152. package/components/radio/radio.material.css.d.ts +0 -1
  153. package/components/radio/radio.material.css.js +1 -1
  154. package/components/radio/radio.material.css.js.map +1 -1
  155. package/components/radio-group/radio-group.d.ts +3 -2
  156. package/components/radio-group/radio-group.material.css.d.ts +0 -1
  157. package/components/radio-group/radio-group.material.css.js +1 -1
  158. package/components/radio-group/radio-group.material.css.js.map +1 -1
  159. package/components/ripple/ripple.d.ts +9 -2
  160. package/components/ripple/ripple.material.css.d.ts +0 -1
  161. package/components/ripple/ripple.material.css.js +1 -1
  162. package/components/ripple/ripple.material.css.js.map +1 -1
  163. package/components/slider/range-slider.d.ts +85 -0
  164. package/components/slider/range-slider.js +141 -0
  165. package/components/slider/range-slider.js.map +1 -0
  166. package/components/slider/slider-base.d.ts +117 -0
  167. package/components/slider/slider-base.js +448 -0
  168. package/components/slider/slider-base.js.map +1 -0
  169. package/components/slider/slider.d.ts +76 -0
  170. package/components/slider/slider.js +80 -0
  171. package/components/slider/slider.js.map +1 -0
  172. package/components/slider/slider.material.css.d.ts +1 -0
  173. package/components/slider/slider.material.css.js +3 -0
  174. package/components/slider/slider.material.css.js.map +1 -0
  175. package/custom-elements.json +648 -22
  176. package/index.d.ts +2 -1
  177. package/index.js +2 -0
  178. package/index.js.map +1 -1
  179. package/package.json +5 -4
  180. package/themes/dark/bootstrap.css +1 -0
  181. package/themes/dark/fluent.css +1 -0
  182. package/themes/dark/indigo.css +1 -0
  183. package/themes/dark/material.css +1 -0
  184. package/themes/light/bootstrap.css +1 -0
  185. package/themes/light/fluent.css +1 -0
  186. package/themes/light/indigo.css +1 -0
  187. package/themes/light/material.css +1 -0
  188. package/vscode-html-custom-data.json +263 -13
  189. package/components/avatar/avatar.d.ts.map +0 -1
  190. package/components/avatar/avatar.material.css.d.ts.map +0 -1
  191. package/components/badge/badge.d.ts.map +0 -1
  192. package/components/badge/badge.material.css.d.ts.map +0 -1
  193. package/components/button/button-base.d.ts.map +0 -1
  194. package/components/button/button.d.ts.map +0 -1
  195. package/components/button/button.material.css.d.ts.map +0 -1
  196. package/components/button/icon-button.d.ts.map +0 -1
  197. package/components/button/icon-button.material.css.d.ts.map +0 -1
  198. package/components/calendar/calendar.d.ts.map +0 -1
  199. package/components/calendar/calendar.material.css.d.ts.map +0 -1
  200. package/components/calendar/common/calendar-base.d.ts.map +0 -1
  201. package/components/calendar/common/calendar.model.d.ts.map +0 -1
  202. package/components/calendar/common/utils.d.ts.map +0 -1
  203. package/components/calendar/days-view/days-view.d.ts.map +0 -1
  204. package/components/calendar/days-view/days-view.material.css.d.ts.map +0 -1
  205. package/components/calendar/months-view/months-view.d.ts.map +0 -1
  206. package/components/calendar/months-view/months-view.material.css.d.ts.map +0 -1
  207. package/components/calendar/years-view/years-view.d.ts.map +0 -1
  208. package/components/calendar/years-view/years-view.material.css.d.ts.map +0 -1
  209. package/components/card/card.actions.d.ts.map +0 -1
  210. package/components/card/card.actions.material.css.d.ts.map +0 -1
  211. package/components/card/card.content.d.ts.map +0 -1
  212. package/components/card/card.content.material.css.d.ts.map +0 -1
  213. package/components/card/card.d.ts.map +0 -1
  214. package/components/card/card.header.d.ts.map +0 -1
  215. package/components/card/card.header.material.css.d.ts.map +0 -1
  216. package/components/card/card.material.css.d.ts.map +0 -1
  217. package/components/card/card.media.d.ts.map +0 -1
  218. package/components/card/card.media.material.css.d.ts.map +0 -1
  219. package/components/checkbox/checkbox-base.d.ts.map +0 -1
  220. package/components/checkbox/checkbox.d.ts.map +0 -1
  221. package/components/checkbox/checkbox.material.css.d.ts.map +0 -1
  222. package/components/checkbox/switch.d.ts.map +0 -1
  223. package/components/checkbox/switch.material.css.d.ts.map +0 -1
  224. package/components/common/decorators/alternateName.d.ts.map +0 -1
  225. package/components/common/decorators/blazorInclude.d.ts.map +0 -1
  226. package/components/common/decorators/blazorSuppress.d.ts.map +0 -1
  227. package/components/common/decorators/blazorTwoWayBind.d.ts.map +0 -1
  228. package/components/common/decorators/index.d.ts.map +0 -1
  229. package/components/common/decorators/watch.d.ts.map +0 -1
  230. package/components/common/definitions/defineAllComponents.d.ts.map +0 -1
  231. package/components/common/definitions/defineComponents.d.ts.map +0 -1
  232. package/components/common/i18n/calendar.resources.d.ts.map +0 -1
  233. package/components/common/mixins/constructor.d.ts.map +0 -1
  234. package/components/common/mixins/event-emitter.d.ts.map +0 -1
  235. package/components/common/mixins/sizable.d.ts.map +0 -1
  236. package/components/common/util.d.ts.map +0 -1
  237. package/components/form/form.d.ts.map +0 -1
  238. package/components/icon/icon.d.ts.map +0 -1
  239. package/components/icon/icon.material.css.d.ts.map +0 -1
  240. package/components/icon/icon.registry.d.ts.map +0 -1
  241. package/components/input/input.d.ts.map +0 -1
  242. package/components/input/input.material.css.d.ts.map +0 -1
  243. package/components/list/list-header.d.ts.map +0 -1
  244. package/components/list/list-header.material.css.d.ts.map +0 -1
  245. package/components/list/list-item.d.ts.map +0 -1
  246. package/components/list/list-item.material.css.d.ts.map +0 -1
  247. package/components/list/list.d.ts.map +0 -1
  248. package/components/list/list.material.css.d.ts.map +0 -1
  249. package/components/nav-drawer/nav-drawer-header-item.d.ts.map +0 -1
  250. package/components/nav-drawer/nav-drawer-header-item.material.css.d.ts.map +0 -1
  251. package/components/nav-drawer/nav-drawer-item.d.ts.map +0 -1
  252. package/components/nav-drawer/nav-drawer-item.material.css.d.ts.map +0 -1
  253. package/components/nav-drawer/nav-drawer.d.ts.map +0 -1
  254. package/components/nav-drawer/nav-drawer.material.css.d.ts.map +0 -1
  255. package/components/navbar/navbar.d.ts.map +0 -1
  256. package/components/navbar/navbar.material.css.d.ts.map +0 -1
  257. package/components/radio/radio.d.ts.map +0 -1
  258. package/components/radio/radio.material.css.d.ts.map +0 -1
  259. package/components/radio-group/radio-group.d.ts.map +0 -1
  260. package/components/radio-group/radio-group.material.css.d.ts.map +0 -1
  261. package/components/ripple/ripple.d.ts.map +0 -1
  262. package/components/ripple/ripple.material.css.d.ts.map +0 -1
  263. package/index.d.ts.map +0 -1
  264. package/themes/bootstrap.css +0 -1
  265. package/themes/fluent.css +0 -1
  266. package/themes/indigo.css +0 -1
  267. package/themes/material.css +0 -1
@@ -0,0 +1,448 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, LitElement } from 'lit';
8
+ import { property, query, state } from 'lit/decorators.js';
9
+ import { ifDefined } from 'lit/directives/if-defined.js';
10
+ import { styleMap } from 'lit/directives/style-map.js';
11
+ import { watch } from '../common/decorators';
12
+ import { styles } from './slider.material.css';
13
+ export class IgcSliderBaseComponent extends LitElement {
14
+ constructor() {
15
+ super();
16
+ this._min = 0;
17
+ this._max = 100;
18
+ this.pointerCaptured = false;
19
+ this.thumbLabelsVisible = false;
20
+ this.disabled = false;
21
+ this.discreteTrack = false;
22
+ this.hideTooltip = false;
23
+ this.step = 1;
24
+ this.primaryTicks = 0;
25
+ this.secondaryTicks = 0;
26
+ this.tickOrientation = 'end';
27
+ this.hidePrimaryLabels = false;
28
+ this.hideSecondaryLabels = false;
29
+ this.tickLabelRotation = 0;
30
+ this.pointerDown = (event) => {
31
+ const thumb = this.closestHandle(event);
32
+ thumb.focus();
33
+ this.startValue = this.activeValue;
34
+ this.updateSlider(event.clientX);
35
+ this.setPointerCapture(event.pointerId);
36
+ this.pointerCaptured = true;
37
+ this.showThumbLabels();
38
+ event.preventDefault();
39
+ };
40
+ this.pointerMove = (event) => {
41
+ if (this.pointerCaptured) {
42
+ this.updateSlider(event.clientX);
43
+ }
44
+ };
45
+ this.lostPointerCapture = () => {
46
+ this.pointerCaptured = false;
47
+ this.hideThumbLabels();
48
+ if (this.startValue !== this.activeValue) {
49
+ this.emitChangeEvent();
50
+ }
51
+ this.startValue = undefined;
52
+ };
53
+ this.handleKeydown = (event) => {
54
+ if (this.disabled) {
55
+ return;
56
+ }
57
+ const { key } = event;
58
+ let increment = 0;
59
+ const value = this.activeValue;
60
+ const step = this.step ? this.step : 1;
61
+ switch (key) {
62
+ case 'ArrowLeft':
63
+ increment += this.isLTR ? -step : step;
64
+ break;
65
+ case 'ArrowRight':
66
+ increment += this.isLTR ? step : -step;
67
+ break;
68
+ case 'ArrowUp':
69
+ increment = step;
70
+ break;
71
+ case 'ArrowDown':
72
+ increment = -step;
73
+ break;
74
+ case 'Home':
75
+ increment = this.actualMin - value;
76
+ break;
77
+ case 'End':
78
+ increment = this.actualMax - value;
79
+ break;
80
+ case 'PageUp':
81
+ increment = Math.max((this.actualMax - this.actualMin) / 10, step);
82
+ break;
83
+ case 'PageDown':
84
+ increment = -Math.max((this.actualMax - this.actualMin) / 10, step);
85
+ break;
86
+ default:
87
+ return;
88
+ }
89
+ if (increment) {
90
+ const updated = this.updateValue(increment);
91
+ this.showThumbLabels();
92
+ this.hideThumbLabels();
93
+ if (updated) {
94
+ this.emitChangeEvent();
95
+ }
96
+ }
97
+ };
98
+ this.handleThumbPointerEnter = () => {
99
+ this.showThumbLabels();
100
+ };
101
+ this.handleThumbPointerLeave = () => {
102
+ this.hideThumbLabels();
103
+ };
104
+ this.addEventListener('pointerdown', this.pointerDown);
105
+ this.addEventListener('pointermove', this.pointerMove);
106
+ this.addEventListener('lostpointercapture', this.lostPointerCapture);
107
+ this.addEventListener('keydown', this.handleKeydown);
108
+ }
109
+ set min(value) {
110
+ if (value < this.max) {
111
+ const oldVal = this._min;
112
+ this._min = value;
113
+ this.requestUpdate('min', oldVal);
114
+ if (typeof this.lowerBound === 'number' && this.lowerBound < value) {
115
+ this.lowerBound = value;
116
+ }
117
+ }
118
+ }
119
+ get min() {
120
+ return this._min;
121
+ }
122
+ set max(value) {
123
+ if (value > this.min) {
124
+ const oldVal = this._max;
125
+ this._max = value;
126
+ this.requestUpdate('max', oldVal);
127
+ if (typeof this.upperBound === 'number' && this.upperBound > value) {
128
+ this.upperBound = value;
129
+ }
130
+ }
131
+ }
132
+ get max() {
133
+ return this._max;
134
+ }
135
+ set lowerBound(value) {
136
+ const oldVal = this._lowerBound;
137
+ if (typeof value === 'number') {
138
+ this._lowerBound = this.valueInRange(value, this.min, this.actualMax);
139
+ }
140
+ else {
141
+ this._lowerBound = value;
142
+ }
143
+ this.requestUpdate('lowerBound', oldVal);
144
+ }
145
+ get lowerBound() {
146
+ return this._lowerBound;
147
+ }
148
+ set upperBound(value) {
149
+ const oldVal = this._upperBound;
150
+ if (typeof value === 'number') {
151
+ this._upperBound = this.valueInRange(value, this.actualMin, this.max);
152
+ }
153
+ else {
154
+ this._upperBound = value;
155
+ }
156
+ this.requestUpdate('upperBound', oldVal);
157
+ }
158
+ get upperBound() {
159
+ return this._upperBound;
160
+ }
161
+ constraintsChange() {
162
+ this.normalizeValue();
163
+ }
164
+ connectedCallback() {
165
+ super.connectedCallback();
166
+ this.normalizeValue();
167
+ }
168
+ get activeValue() {
169
+ return 0;
170
+ }
171
+ normalizeValue() { }
172
+ getTrackStyle() {
173
+ return {};
174
+ }
175
+ updateValue(_increment) {
176
+ return false;
177
+ }
178
+ renderThumbs() {
179
+ return html ``;
180
+ }
181
+ emitInputEvent() { }
182
+ emitChangeEvent() { }
183
+ get actualMin() {
184
+ return typeof this.lowerBound === 'number'
185
+ ? this.lowerBound
186
+ : this.min;
187
+ }
188
+ get actualMax() {
189
+ return typeof this.upperBound === 'number'
190
+ ? this.upperBound
191
+ : this.max;
192
+ }
193
+ get isLTR() {
194
+ const styles = window.getComputedStyle(this);
195
+ return styles.getPropertyValue('direction') === 'ltr';
196
+ }
197
+ validateValue(value) {
198
+ value = this.valueInRange(value, this.actualMin, this.actualMax);
199
+ value = this.normalizeByStep(value);
200
+ return value;
201
+ }
202
+ normalizeByStep(value) {
203
+ return this.step ? value - ((value - this.actualMin) % this.step) : value;
204
+ }
205
+ closestHandle(_event) {
206
+ return this.thumb;
207
+ }
208
+ totalTickCount() {
209
+ if (this.primaryTicks === 1) {
210
+ this.primaryTicks = 2;
211
+ }
212
+ return this.primaryTicks > 0
213
+ ? (this.primaryTicks - 1) * this.secondaryTicks + this.primaryTicks
214
+ : this.secondaryTicks > 0
215
+ ? this.secondaryTicks
216
+ : 0;
217
+ }
218
+ tickValue(idx) {
219
+ const tickCount = this.totalTickCount();
220
+ const labelStep = tickCount > 1
221
+ ? (this.max - this.min) / (tickCount - 1)
222
+ : this.max - this.min;
223
+ const labelVal = labelStep * idx;
224
+ return this.min + labelVal;
225
+ }
226
+ isPrimary(idx) {
227
+ return this.primaryTicks <= 0
228
+ ? false
229
+ : idx % (this.secondaryTicks + 1) === 0;
230
+ }
231
+ showThumbLabels() {
232
+ if (this.disabled || this.hideTooltip) {
233
+ return;
234
+ }
235
+ if (this.thumbHoverTimer) {
236
+ clearTimeout(this.thumbHoverTimer);
237
+ this.thumbHoverTimer = null;
238
+ }
239
+ this.thumbLabelsVisible = true;
240
+ }
241
+ hideThumbLabels() {
242
+ if (this.pointerCaptured || !this.thumbLabelsVisible) {
243
+ return;
244
+ }
245
+ this.thumbHoverTimer = setTimeout(() => {
246
+ this.thumbLabelsVisible = false;
247
+ }, 750);
248
+ }
249
+ valueInRange(value, min = 0, max = 100) {
250
+ return Math.max(Math.min(value, max), min);
251
+ }
252
+ valueToFraction(value) {
253
+ return (value - this.min) / (this.max - this.min);
254
+ }
255
+ calculateTrackUpdate(mouseX) {
256
+ if (!this.activeThumb) {
257
+ return 0;
258
+ }
259
+ const thumbBoundaries = this.activeThumb.getBoundingClientRect();
260
+ const thumbCenter = (thumbBoundaries.right - thumbBoundaries.left) / 2;
261
+ const thumbPositionX = thumbBoundaries.left + thumbCenter;
262
+ const scale = this.getBoundingClientRect().width / (this.max - this.min);
263
+ const change = this.isLTR
264
+ ? mouseX - thumbPositionX
265
+ : thumbPositionX - mouseX;
266
+ if (this.step) {
267
+ const stepDistance = scale * this.step;
268
+ const stepDistanceCenter = stepDistance / 2;
269
+ const scaleXPositive = Math.abs(change);
270
+ if (scaleXPositive < stepDistanceCenter) {
271
+ return 0;
272
+ }
273
+ return Math.round(change / stepDistance) * this.step;
274
+ }
275
+ else {
276
+ return change / scale;
277
+ }
278
+ }
279
+ updateSlider(mouseX) {
280
+ if (this.disabled) {
281
+ return;
282
+ }
283
+ const increment = this.calculateTrackUpdate(mouseX);
284
+ if (this.activeThumb && increment !== 0) {
285
+ this.updateValue(increment);
286
+ }
287
+ }
288
+ renderTicks() {
289
+ const groups = [];
290
+ for (let i = 0, totalCount = this.totalTickCount(); i < totalCount; i++) {
291
+ const isPrimary = this.isPrimary(i);
292
+ groups.push(html `
293
+ <div part="tick-group">
294
+ <div part="tick" data-primary=${isPrimary}>
295
+ ${(isPrimary ? this.hidePrimaryLabels : this.hideSecondaryLabels)
296
+ ? html ``
297
+ : html `
298
+ <div part="tick-label">
299
+ <span part="tick-label-inner">
300
+ ${this.labelFormatter
301
+ ? this.labelFormatter(this.tickValue(i))
302
+ : this.tickValue(i)}
303
+ </span>
304
+ </div>
305
+ `}
306
+ </div>
307
+ </div>
308
+ `);
309
+ }
310
+ return groups;
311
+ }
312
+ renderThumb(value, ariaLabel, thumbId) {
313
+ const percent = `${this.valueToFraction(value) * 100}%`;
314
+ return html `
315
+ ${this.hideTooltip
316
+ ? html ``
317
+ : html `
318
+ <div
319
+ part="thumb-label"
320
+ style=${styleMap({
321
+ opacity: this.thumbLabelsVisible ? '1' : '0',
322
+ insetInlineStart: percent,
323
+ })}
324
+ >
325
+ ${this.labelFormatter ? this.labelFormatter(value) : value}
326
+ </div>
327
+ `}
328
+ <div
329
+ part="thumb"
330
+ id=${ifDefined(thumbId)}
331
+ tabindex=${this.disabled ? -1 : 0}
332
+ style=${styleMap({ insetInlineStart: percent })}
333
+ role="slider"
334
+ aria-valuemin=${this.actualMin}
335
+ aria-valuemax=${this.actualMax}
336
+ aria-valuenow=${value}
337
+ aria-valuetext=${ifDefined(this.labelFormatter ? this.labelFormatter(value) : undefined)}
338
+ aria-label=${ifDefined(ariaLabel)}
339
+ aria-disabled=${this.disabled ? 'true' : 'false'}
340
+ @pointerenter=${this.handleThumbPointerEnter}
341
+ @pointerleave=${this.handleThumbPointerLeave}
342
+ @focus=${(ev) => (this.activeThumb = ev.target)}
343
+ @blur=${() => (this.activeThumb = undefined)}
344
+ ></div>
345
+ `;
346
+ }
347
+ renderSteps() {
348
+ if (!this.discreteTrack || !this.step) {
349
+ return html ``;
350
+ }
351
+ const trackRange = this.max - this.min;
352
+ const interval = ((100 / (trackRange / this.step)) * 10) / 10;
353
+ return html `
354
+ <div part="steps">
355
+ <svg width="100%" height="100%" style="display: flex">
356
+ <line
357
+ x1="0"
358
+ y1="1"
359
+ x2="100%"
360
+ y2="1"
361
+ stroke="currentColor"
362
+ stroke-dasharray="1.5px, calc(${interval * Math.sqrt(2)}% - 1.5px)"
363
+ stroke-linecap="round"
364
+ stroke-width="2px"
365
+ ></line>
366
+ </svg>
367
+ </div>
368
+ `;
369
+ }
370
+ render() {
371
+ return html `
372
+ <div part="base">
373
+ ${this.tickOrientation === 'mirror' || this.tickOrientation === 'start'
374
+ ? html `<div part="ticks">${this.renderTicks()}</div>`
375
+ : html ``}
376
+ <div part="track">
377
+ <div part="fill" style=${styleMap(this.getTrackStyle())}></div>
378
+ <div part="inactive"></div>
379
+ ${this.renderSteps()}
380
+ </div>
381
+ ${this.tickOrientation !== 'start'
382
+ ? html `<div part="ticks">${this.renderTicks()}</div>`
383
+ : html ``}
384
+ <div part="thumbs">${this.renderThumbs()}</div>
385
+ </div>
386
+ `;
387
+ }
388
+ }
389
+ IgcSliderBaseComponent.styles = [styles];
390
+ __decorate([
391
+ query(`[part='thumb']`)
392
+ ], IgcSliderBaseComponent.prototype, "thumb", void 0);
393
+ __decorate([
394
+ state()
395
+ ], IgcSliderBaseComponent.prototype, "thumbLabelsVisible", void 0);
396
+ __decorate([
397
+ property({ type: Number })
398
+ ], IgcSliderBaseComponent.prototype, "min", null);
399
+ __decorate([
400
+ property({ type: Number })
401
+ ], IgcSliderBaseComponent.prototype, "max", null);
402
+ __decorate([
403
+ property({ type: Number, attribute: 'lower-bound' })
404
+ ], IgcSliderBaseComponent.prototype, "lowerBound", null);
405
+ __decorate([
406
+ property({ type: Number, attribute: 'upper-bound' })
407
+ ], IgcSliderBaseComponent.prototype, "upperBound", null);
408
+ __decorate([
409
+ property({ type: Boolean, reflect: true })
410
+ ], IgcSliderBaseComponent.prototype, "disabled", void 0);
411
+ __decorate([
412
+ property({ type: Boolean, attribute: 'discrete-track' })
413
+ ], IgcSliderBaseComponent.prototype, "discreteTrack", void 0);
414
+ __decorate([
415
+ property({ type: Boolean, attribute: 'hide-tooltip' })
416
+ ], IgcSliderBaseComponent.prototype, "hideTooltip", void 0);
417
+ __decorate([
418
+ property({ type: Number })
419
+ ], IgcSliderBaseComponent.prototype, "step", void 0);
420
+ __decorate([
421
+ property({ type: Number, attribute: 'primary-ticks' })
422
+ ], IgcSliderBaseComponent.prototype, "primaryTicks", void 0);
423
+ __decorate([
424
+ property({ type: Number, attribute: 'secondary-ticks' })
425
+ ], IgcSliderBaseComponent.prototype, "secondaryTicks", void 0);
426
+ __decorate([
427
+ property({ attribute: 'tick-orientation' })
428
+ ], IgcSliderBaseComponent.prototype, "tickOrientation", void 0);
429
+ __decorate([
430
+ property({ type: Boolean, attribute: 'hide-primary-labels' })
431
+ ], IgcSliderBaseComponent.prototype, "hidePrimaryLabels", void 0);
432
+ __decorate([
433
+ property({ type: Boolean, attribute: 'hide-secondary-labels' })
434
+ ], IgcSliderBaseComponent.prototype, "hideSecondaryLabels", void 0);
435
+ __decorate([
436
+ property({ attribute: false })
437
+ ], IgcSliderBaseComponent.prototype, "labelFormatter", void 0);
438
+ __decorate([
439
+ property({ type: Number, reflect: true, attribute: 'tick-label-rotation' })
440
+ ], IgcSliderBaseComponent.prototype, "tickLabelRotation", void 0);
441
+ __decorate([
442
+ watch('min', { waitUntilFirstUpdate: true }),
443
+ watch('max', { waitUntilFirstUpdate: true }),
444
+ watch('lowerBound', { waitUntilFirstUpdate: true }),
445
+ watch('upperBound', { waitUntilFirstUpdate: true }),
446
+ watch('step', { waitUntilFirstUpdate: true })
447
+ ], IgcSliderBaseComponent.prototype, "constraintsChange", null);
448
+ //# sourceMappingURL=slider-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-base.js","sourceRoot":"","sources":["../../../src/components/slider/slider-base.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, TemplateResult } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { watch } from '../common/decorators';\nimport { styles } from './slider.material.css';\n\nexport class IgcSliderBaseComponent extends LitElement {\n /** @private */\n public static styles = [styles];\n\n @query(`[part='thumb']`)\n protected thumb!: HTMLElement;\n\n private _lowerBound?: number;\n private _upperBound?: number;\n private _min = 0;\n private _max = 100;\n private startValue?: number;\n private pointerCaptured = false;\n private thumbHoverTimer: any;\n protected activeThumb?: HTMLElement;\n\n @state()\n private thumbLabelsVisible = false;\n\n public set min(value: number) {\n if (value < this.max) {\n const oldVal = this._min;\n this._min = value;\n this.requestUpdate('min', oldVal);\n\n if (typeof this.lowerBound === 'number' && this.lowerBound < value) {\n this.lowerBound = value;\n }\n }\n }\n\n /**\n * The minimum value of the slider scale. Defaults to 0.\n */\n @property({ type: Number })\n public get min() {\n return this._min;\n }\n\n public set max(value: number) {\n if (value > this.min) {\n const oldVal = this._max;\n this._max = value;\n this.requestUpdate('max', oldVal);\n\n if (typeof this.upperBound === 'number' && this.upperBound > value) {\n this.upperBound = value;\n }\n }\n }\n\n /**\n * The maximum value of the slider scale. Defaults to 100.\n */\n @property({ type: Number })\n public get max() {\n return this._max;\n }\n\n public set lowerBound(value: number | undefined) {\n const oldVal = this._lowerBound;\n\n if (typeof value === 'number') {\n this._lowerBound = this.valueInRange(value, this.min, this.actualMax);\n } else {\n this._lowerBound = value;\n }\n this.requestUpdate('lowerBound', oldVal);\n }\n\n /**\n * The lower bound of the slider value. If not set, the `min` value is applied.\n */\n @property({ type: Number, attribute: 'lower-bound' })\n public get lowerBound(): number | undefined {\n return this._lowerBound;\n }\n\n public set upperBound(value: number | undefined) {\n const oldVal = this._upperBound;\n\n if (typeof value === 'number') {\n this._upperBound = this.valueInRange(value, this.actualMin, this.max);\n } else {\n this._upperBound = value;\n }\n this.requestUpdate('upperBound', oldVal);\n }\n\n /**\n * The upper bound of the slider value. If not set, the `max` value is applied.\n */\n @property({ type: Number, attribute: 'upper-bound' })\n public get upperBound(): number | undefined {\n return this._upperBound;\n }\n\n /**\n * Disables the UI interactions of the slider.\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Marks the slider track as discrete so it displays the steps.\n * If the `step` is 0, the slider will remain continuos even if `discreteTrack` is `true`.\n */\n @property({ type: Boolean, attribute: 'discrete-track' })\n public discreteTrack = false;\n\n /**\n * Hides the thumb tooltip.\n */\n @property({ type: Boolean, attribute: 'hide-tooltip' })\n public hideTooltip = false;\n\n /**\n * Specifies the granularity that the value must adhere to.\n * If set to 0 no stepping is implied and any value in the range is allowed.\n */\n @property({ type: Number })\n public step = 1;\n\n /**\n * The number of primary ticks. It defaults to 0 which means no primary ticks are displayed.\n */\n @property({ type: Number, attribute: 'primary-ticks' })\n public primaryTicks = 0;\n\n /**\n * The number of secondary ticks. It defaults to 0 which means no secondary ticks are displayed.\n */\n @property({ type: Number, attribute: 'secondary-ticks' })\n public secondaryTicks = 0;\n\n /**\n * Changes the orientation of the ticks.\n */\n @property({ attribute: 'tick-orientation' })\n public tickOrientation: 'mirror' | 'start' | 'end' = 'end';\n\n /**\n * Hides the primary tick labels.\n */\n @property({ type: Boolean, attribute: 'hide-primary-labels' })\n public hidePrimaryLabels = false;\n\n /**\n * Hides the secondary tick labels.\n */\n @property({ type: Boolean, attribute: 'hide-secondary-labels' })\n public hideSecondaryLabels = false;\n\n /**\n * Specifies a custom function to format the labels.\n */\n @property({ attribute: false })\n public labelFormatter: ((value: number) => string) | undefined;\n\n /**\n * The degrees for the rotation of the tick labels. Defaults to 0.\n */\n @property({ type: Number, reflect: true, attribute: 'tick-label-rotation' })\n public tickLabelRotation: 0 | 90 | -90 = 0;\n\n @watch('min', { waitUntilFirstUpdate: true })\n @watch('max', { waitUntilFirstUpdate: true })\n @watch('lowerBound', { waitUntilFirstUpdate: true })\n @watch('upperBound', { waitUntilFirstUpdate: true })\n @watch('step', { waitUntilFirstUpdate: true })\n protected constraintsChange() {\n this.normalizeValue();\n }\n\n constructor() {\n super();\n this.addEventListener('pointerdown', this.pointerDown);\n this.addEventListener('pointermove', this.pointerMove);\n this.addEventListener('lostpointercapture', this.lostPointerCapture);\n this.addEventListener('keydown', this.handleKeydown);\n }\n\n public connectedCallback() {\n super.connectedCallback();\n this.normalizeValue();\n }\n\n /* c8 ignore next 3 */\n protected get activeValue() {\n return 0;\n }\n\n /* c8 ignore next */\n protected normalizeValue(): void {}\n\n /* c8 ignore next 3 */\n protected getTrackStyle(): StyleInfo {\n return {};\n }\n\n /* c8 ignore next 3 */\n protected updateValue(_increment: number): boolean {\n return false;\n }\n\n /* c8 ignore next 3 */\n protected renderThumbs(): TemplateResult<1> {\n return html``;\n }\n\n /* c8 ignore next */\n protected emitInputEvent() {}\n\n /* c8 ignore next */\n protected emitChangeEvent() {}\n\n private get actualMin(): number {\n return typeof this.lowerBound === 'number'\n ? (this.lowerBound as number)\n : this.min;\n }\n\n private get actualMax(): number {\n return typeof this.upperBound === 'number'\n ? (this.upperBound as number)\n : this.max;\n }\n\n private get isLTR(): boolean {\n const styles = window.getComputedStyle(this);\n return styles.getPropertyValue('direction') === 'ltr';\n }\n\n protected validateValue(value: number) {\n value = this.valueInRange(value, this.actualMin, this.actualMax);\n value = this.normalizeByStep(value);\n\n return value;\n }\n\n private normalizeByStep(value: number) {\n return this.step ? value - ((value - this.actualMin) % this.step) : value;\n }\n\n protected closestHandle(_event: PointerEvent): HTMLElement {\n return this.thumb;\n }\n\n private totalTickCount() {\n if (this.primaryTicks === 1) {\n this.primaryTicks = 2;\n }\n\n return this.primaryTicks > 0\n ? (this.primaryTicks - 1) * this.secondaryTicks + this.primaryTicks\n : this.secondaryTicks > 0\n ? this.secondaryTicks\n : 0;\n }\n\n private tickValue(idx: number) {\n const tickCount = this.totalTickCount();\n const labelStep =\n tickCount > 1\n ? (this.max - this.min) / (tickCount - 1)\n : this.max - this.min;\n const labelVal = labelStep * idx;\n\n return this.min + labelVal;\n }\n\n private isPrimary(idx: number) {\n return this.primaryTicks <= 0\n ? false\n : idx % (this.secondaryTicks + 1) === 0;\n }\n\n private showThumbLabels() {\n if (this.disabled || this.hideTooltip) {\n return;\n }\n\n if (this.thumbHoverTimer) {\n clearTimeout(this.thumbHoverTimer);\n this.thumbHoverTimer = null;\n }\n\n this.thumbLabelsVisible = true;\n }\n\n private hideThumbLabels() {\n if (this.pointerCaptured || !this.thumbLabelsVisible) {\n return;\n }\n\n this.thumbHoverTimer = setTimeout(() => {\n this.thumbLabelsVisible = false;\n }, 750);\n }\n\n private valueInRange(value: number, min = 0, max = 100) {\n return Math.max(Math.min(value, max), min);\n }\n\n protected valueToFraction(value: number) {\n return (value - this.min) / (this.max - this.min);\n }\n\n private calculateTrackUpdate(mouseX: number): number {\n if (!this.activeThumb) {\n return 0;\n }\n\n const thumbBoundaries = this.activeThumb.getBoundingClientRect();\n const thumbCenter = (thumbBoundaries.right - thumbBoundaries.left) / 2;\n const thumbPositionX = thumbBoundaries.left + thumbCenter;\n\n const scale = this.getBoundingClientRect().width / (this.max - this.min);\n const change = this.isLTR\n ? mouseX - thumbPositionX\n : thumbPositionX - mouseX;\n\n if (this.step) {\n const stepDistance = scale * this.step;\n const stepDistanceCenter = stepDistance / 2;\n\n // If the thumb scale range (slider update) is less than a half step,\n // the position stays the same.\n const scaleXPositive = Math.abs(change);\n if (scaleXPositive < stepDistanceCenter) {\n return 0;\n }\n\n return Math.round(change / stepDistance) * this.step;\n } else {\n return change / scale;\n }\n }\n\n private updateSlider(mouseX: number) {\n if (this.disabled) {\n return;\n }\n\n const increment = this.calculateTrackUpdate(mouseX);\n if (this.activeThumb && increment !== 0) {\n this.updateValue(increment);\n }\n }\n\n private pointerDown = (event: PointerEvent) => {\n const thumb = this.closestHandle(event);\n thumb.focus();\n\n this.startValue = this.activeValue;\n this.updateSlider(event.clientX);\n\n this.setPointerCapture(event.pointerId);\n this.pointerCaptured = true;\n this.showThumbLabels();\n event.preventDefault();\n };\n\n private pointerMove = (event: PointerEvent) => {\n if (this.pointerCaptured) {\n this.updateSlider(event.clientX);\n }\n };\n\n private lostPointerCapture = () => {\n this.pointerCaptured = false;\n this.hideThumbLabels();\n\n if (this.startValue! !== this.activeValue) {\n this.emitChangeEvent();\n }\n this.startValue = undefined;\n };\n\n private handleKeydown = (event: KeyboardEvent) => {\n if (this.disabled) {\n return;\n }\n\n const { key } = event;\n\n let increment = 0;\n const value = this.activeValue;\n const step = this.step ? this.step : 1;\n\n switch (key) {\n case 'ArrowLeft':\n increment += this.isLTR ? -step : step;\n break;\n case 'ArrowRight':\n increment += this.isLTR ? step : -step;\n break;\n case 'ArrowUp':\n increment = step;\n break;\n case 'ArrowDown':\n increment = -step;\n break;\n case 'Home':\n increment = this.actualMin - value;\n break;\n case 'End':\n increment = this.actualMax - value;\n break;\n case 'PageUp':\n increment = Math.max((this.actualMax - this.actualMin) / 10, step);\n break;\n case 'PageDown':\n increment = -Math.max((this.actualMax - this.actualMin) / 10, step);\n break;\n default:\n return;\n }\n\n if (increment) {\n const updated = this.updateValue(increment);\n this.showThumbLabels();\n this.hideThumbLabels();\n\n if (updated) {\n this.emitChangeEvent();\n }\n }\n };\n\n private handleThumbPointerEnter = () => {\n this.showThumbLabels();\n };\n\n private handleThumbPointerLeave = () => {\n this.hideThumbLabels();\n };\n\n protected renderTicks() {\n const groups = [];\n for (let i = 0, totalCount = this.totalTickCount(); i < totalCount; i++) {\n const isPrimary = this.isPrimary(i);\n groups.push(html`\n <div part=\"tick-group\">\n <div part=\"tick\" data-primary=${isPrimary}>\n ${(isPrimary ? this.hidePrimaryLabels : this.hideSecondaryLabels)\n ? html``\n : html`\n <div part=\"tick-label\">\n <span part=\"tick-label-inner\">\n ${this.labelFormatter\n ? this.labelFormatter(this.tickValue(i))\n : this.tickValue(i)}\n </span>\n </div>\n `}\n </div>\n </div>\n `);\n }\n return groups;\n }\n\n protected renderThumb(value: number, ariaLabel?: string, thumbId?: string) {\n const percent = `${this.valueToFraction(value) * 100}%`;\n\n return html`\n ${this.hideTooltip\n ? html``\n : html`\n <div\n part=\"thumb-label\"\n style=${styleMap({\n opacity: this.thumbLabelsVisible ? '1' : '0',\n insetInlineStart: percent,\n })}\n >\n ${this.labelFormatter ? this.labelFormatter(value) : value}\n </div>\n `}\n <div\n part=\"thumb\"\n id=${ifDefined(thumbId)}\n tabindex=${this.disabled ? -1 : 0}\n style=${styleMap({ insetInlineStart: percent })}\n role=\"slider\"\n aria-valuemin=${this.actualMin}\n aria-valuemax=${this.actualMax}\n aria-valuenow=${value}\n aria-valuetext=${ifDefined(\n this.labelFormatter ? this.labelFormatter(value) : undefined\n )}\n aria-label=${ifDefined(ariaLabel)}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n @pointerenter=${this.handleThumbPointerEnter}\n @pointerleave=${this.handleThumbPointerLeave}\n @focus=${(ev: Event) => (this.activeThumb = ev.target as HTMLElement)}\n @blur=${() => (this.activeThumb = undefined)}\n ></div>\n `;\n }\n\n private renderSteps() {\n if (!this.discreteTrack || !this.step) {\n return html``;\n }\n\n const trackRange = this.max - this.min;\n const interval = ((100 / (trackRange / this.step)) * 10) / 10;\n\n return html`\n <div part=\"steps\">\n <svg width=\"100%\" height=\"100%\" style=\"display: flex\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"100%\"\n y2=\"1\"\n stroke=\"currentColor\"\n stroke-dasharray=\"1.5px, calc(${interval * Math.sqrt(2)}% - 1.5px)\"\n stroke-linecap=\"round\"\n stroke-width=\"2px\"\n ></line>\n </svg>\n </div>\n `;\n }\n\n protected render() {\n return html`\n <div part=\"base\">\n ${this.tickOrientation === 'mirror' || this.tickOrientation === 'start'\n ? html`<div part=\"ticks\">${this.renderTicks()}</div>`\n : html``}\n <div part=\"track\">\n <div part=\"fill\" style=${styleMap(this.getTrackStyle())}></div>\n <div part=\"inactive\"></div>\n ${this.renderSteps()}\n </div>\n ${this.tickOrientation !== 'start'\n ? html`<div part=\"ticks\">${this.renderTicks()}</div>`\n : html``}\n <div part=\"thumbs\">${this.renderThumbs()}</div>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,76 @@
1
+ import { Constructor } from '../common/mixins/constructor';
2
+ import { IgcSliderBaseComponent } from './slider-base';
3
+ export interface IgcSliderEventMap {
4
+ /**
5
+ * Emitted when a value is changed via thumb drag or keyboard interaction.
6
+ */
7
+ igcInput: CustomEvent<number>;
8
+ /**
9
+ * Emitted when a value change is committed on a thumb drag end or keyboard interaction.
10
+ */
11
+ igcChange: CustomEvent<number>;
12
+ }
13
+ declare const IgcSliderComponent_base: Constructor<import("../common/mixins/event-emitter").EventEmitterInterface<IgcSliderEventMap>> & Constructor<IgcSliderBaseComponent>;
14
+ /**
15
+ * A slider component used to select numeric value within a range.
16
+ *
17
+ * @element igc-slider
18
+ *
19
+ * @fires igcInput - Emitted when a value is changed via thumb drag or keyboard interaction.
20
+ * @fires igcChange - Emitted when a value change is committed on a thumb drag end or keyboard interaction.
21
+ *
22
+ * @csspart base - The base wrapper of the slider.
23
+ * @csspart ticks - The ticks container.
24
+ * @csspart tick-group - The tick group container.
25
+ * @csspart tick - The tick element.
26
+ * @csspart tick-label - The tick label element.
27
+ * @csspart tick-label-inner - The inner element of the tick label.
28
+ * @csspart thumbs - The thumbs container.
29
+ * @csspart thumb - The thumb element.
30
+ * @csspart thumb-label - The label of the thumb tooltip.
31
+ * @csspart track - The track container.
32
+ * @csspart steps - The track steps element.
33
+ * @csspart inactive - The inactive element of the track.
34
+ * @csspart fill - The filled part of the track.
35
+ */
36
+ export default class IgcSliderComponent extends IgcSliderComponent_base {
37
+ /** @private */
38
+ static tagName: string;
39
+ private _value;
40
+ private _ariaLabel;
41
+ set value(val: number);
42
+ /**
43
+ * The current value of the slider.
44
+ */
45
+ get value(): number;
46
+ set ariaLabel(value: string);
47
+ /**
48
+ * The aria label of the slider thumb.
49
+ */
50
+ get ariaLabel(): string;
51
+ protected get activeValue(): number;
52
+ protected normalizeValue(): void;
53
+ protected getTrackStyle(): {
54
+ width: string;
55
+ };
56
+ protected updateValue(increment: number): boolean;
57
+ protected emitInputEvent(): void;
58
+ protected emitChangeEvent(): void;
59
+ /**
60
+ * Increments the value of the slider by `stepIncrement * step`, where `stepIncrement` defaults to 1.
61
+ * @param stepIncrement Optional step increment. If no parameter is passed, it defaults to 1.
62
+ */
63
+ stepUp(stepIncrement?: number): void;
64
+ /**
65
+ * Decrements the value of the slider by `stepDecrement * step`, where `stepDecrement` defaults to 1.
66
+ * @param stepDecrement Optional step decrement. If no parameter is passed, it defaults to 1.
67
+ */
68
+ stepDown(stepDecrement?: number): void;
69
+ protected renderThumbs(): import("lit-html").TemplateResult<1>;
70
+ }
71
+ declare global {
72
+ interface HTMLElementTagNameMap {
73
+ 'igc-slider': IgcSliderComponent;
74
+ }
75
+ }
76
+ export {};
@@ -0,0 +1,80 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { EventEmitterMixin } from '../common/mixins/event-emitter';
10
+ import { IgcSliderBaseComponent } from './slider-base';
11
+ export default class IgcSliderComponent extends EventEmitterMixin(IgcSliderBaseComponent) {
12
+ constructor() {
13
+ super(...arguments);
14
+ this._value = 0;
15
+ }
16
+ set value(val) {
17
+ const oldVal = this._value;
18
+ this._value = this.validateValue(val);
19
+ this.requestUpdate('value', oldVal);
20
+ }
21
+ get value() {
22
+ return this._value;
23
+ }
24
+ set ariaLabel(value) {
25
+ const oldVal = this._ariaLabel;
26
+ this._ariaLabel = value;
27
+ if (this.hasAttribute('aria-label')) {
28
+ this.removeAttribute('aria-label');
29
+ }
30
+ this.requestUpdate('ariaLabel', oldVal);
31
+ }
32
+ get ariaLabel() {
33
+ return this._ariaLabel;
34
+ }
35
+ get activeValue() {
36
+ return this.value;
37
+ }
38
+ normalizeValue() {
39
+ this._value = this.validateValue(this._value);
40
+ }
41
+ getTrackStyle() {
42
+ const position = this.valueToFraction(this.value);
43
+ const filledTrackStyle = {
44
+ width: `${position * 100}%`,
45
+ };
46
+ return filledTrackStyle;
47
+ }
48
+ updateValue(increment) {
49
+ const oldValue = this.value;
50
+ this.value = this.value + increment;
51
+ if (oldValue === this.value) {
52
+ return false;
53
+ }
54
+ this.emitInputEvent();
55
+ return true;
56
+ }
57
+ emitInputEvent() {
58
+ this.emitEvent('igcInput', { detail: this.value });
59
+ }
60
+ emitChangeEvent() {
61
+ this.emitEvent('igcChange', { detail: this.value });
62
+ }
63
+ stepUp(stepIncrement = 1) {
64
+ this.value = this.value + stepIncrement * this.step;
65
+ }
66
+ stepDown(stepDecrement = 1) {
67
+ this.value = this.value - stepDecrement * this.step;
68
+ }
69
+ renderThumbs() {
70
+ return html `${this.renderThumb(this.value, this.ariaLabel)}`;
71
+ }
72
+ }
73
+ IgcSliderComponent.tagName = 'igc-slider';
74
+ __decorate([
75
+ property({ type: Number })
76
+ ], IgcSliderComponent.prototype, "value", null);
77
+ __decorate([
78
+ property({ attribute: 'aria-label' })
79
+ ], IgcSliderComponent.prototype, "ariaLabel", null);
80
+ //# sourceMappingURL=slider.js.map