@carbon/web-components 2.32.1 → 2.33.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.
- package/custom-elements.json +257 -6
- package/dist/{16-41ffb037.js → 16-017a2c27.js} +2 -2
- package/dist/{16-a4bb462e.js → 16-17aff615.js} +2 -2
- package/dist/{16-250e2a70.js → 16-4b3acb23.js} +2 -2
- package/dist/16-4b8b7f2e.js +79 -0
- package/dist/{16-acbb0130.js → 16-51aecc68.js} +2 -2
- package/dist/{16-0353e7e3.js → 16-580bd432.js} +2 -2
- package/dist/{16-dbe65920.js → 16-6e3e4eb0.js} +2 -2
- package/dist/16-7a283177.js +79 -0
- package/dist/{16-2363f096.js → 16-921e0a19.js} +2 -2
- package/dist/16-b6a9d0f4.js +79 -0
- package/dist/{16-9631190c.js → 16-e3856d30.js} +2 -2
- package/dist/{16-f4def175.js → 16-eefa1533.js} +2 -2
- package/dist/20-dd19ea71.js +79 -0
- package/dist/20-f62e5e6c.js +79 -0
- package/dist/accordion.min.js +16 -16
- package/dist/ai-label.min.js +5 -5
- package/dist/ai-skeleton.min.js +2 -2
- package/dist/badge-indicator.min.js +2 -2
- package/dist/breadcrumb.min.js +10 -10
- package/dist/button-441e5c2f.js +144 -0
- package/dist/button-set-94219189.js +79 -0
- package/dist/{button-skeleton-eb7300c7.js → button-skeleton-13d34921.js} +13 -13
- package/dist/button.min.js +2 -2
- package/dist/carbon-element-716e46b0.js +1 -1
- package/dist/chat-button.min.js +3 -3
- package/dist/checkbox-7a9a01a0.js +118 -0
- package/dist/{checkbox-skeleton-2bfc2d17.js → checkbox-skeleton-209de048.js} +16 -16
- package/dist/checkbox.min.js +2 -2
- package/dist/{class-map-287e73b5.js → class-map-710415c2.js} +2 -2
- package/dist/code-snippet.min.js +17 -17
- package/dist/collection-helpers-eb62fd34.js +1 -1
- package/dist/combo-box.min.js +9 -9
- package/dist/combo-button.min.js +5 -5
- package/dist/consume-cadfd67f.js +114 -0
- package/dist/content-switcher-item-5b8a2330.js +105 -0
- package/dist/content-switcher.min.js +2 -2
- package/dist/copy-button-f99d6bd0.js +94 -0
- package/dist/copy-button.min.js +2 -2
- package/dist/data-table.min.js +51 -51
- package/dist/date-picker.min.js +14 -14
- package/dist/{definition-tooltip-3f9c32e8.js → definition-tooltip-be4e4d61.js} +4 -4
- package/dist/defs-c5cfba1b.js +1 -1
- package/dist/directive-e2d48b9c.js +1 -1
- package/dist/dropdown-item-8a543d34.js +147 -0
- package/dist/dropdown.min.js +3 -3
- package/dist/feature-flags.min.js +79 -0
- package/dist/file-uploader.min.js +20 -20
- package/dist/floating-controller-92da0306.js +1 -1
- package/dist/floating-menu-31ead115.js +79 -0
- package/dist/floating-menu.min.js +2 -2
- package/dist/{focus-c9ba63ff.js → focus-e21d0f18.js} +2 -2
- package/dist/form-3c2e14c6.js +1 -1
- package/dist/form-group.min.js +7 -7
- package/dist/form.min.js +2 -2
- package/dist/grid.min.js +111 -0
- package/dist/heading.min.js +3 -3
- package/dist/host-listener-97e78474.js +1 -1
- package/dist/icon-button-5c890f11.js +93 -0
- package/dist/icon-button.min.js +2 -2
- package/dist/icon-indicator.min.js +2 -2
- package/dist/{if-defined-7fb4dd64.js → if-defined-013b742a.js} +3 -3
- package/dist/{if-non-empty-d0ff50a3.js → if-non-empty-feaf1d4c.js} +2 -2
- package/dist/inline-loading.min.js +7 -7
- package/dist/layer-3c687a36.js +79 -0
- package/dist/layer.min.js +2 -2
- package/dist/link-ca3c98ab.js +103 -0
- package/dist/link.min.js +2 -2
- package/dist/list.min.js +5 -5
- package/dist/lit-element-7f93799b.js +101 -0
- package/dist/loading-a3706dd6.js +79 -0
- package/dist/{loading-icon-f3d7d50c.js → loading-icon-65c24fae.js} +10 -10
- package/dist/loading.min.js +2 -2
- package/dist/menu-button.min.js +4 -4
- package/dist/menu-item-radio-group-32a066a7.js +131 -0
- package/dist/menu.min.js +2 -2
- package/dist/modal-label-d172677b.js +110 -0
- package/dist/modal.min.js +2 -2
- package/dist/multi-select.min.js +24 -24
- package/dist/notification.min.js +26 -26
- package/dist/number-input.min.js +34 -32
- package/dist/on-8707857f.js +1 -1
- package/dist/overflow-menu.min.js +8 -8
- package/dist/page-header.min.js +2 -2
- package/dist/pagination.min.js +19 -19
- package/dist/popover-content-6f347b82.js +94 -0
- package/dist/popover.min.js +2 -2
- package/dist/progress-bar.min.js +9 -9
- package/dist/progress-indicator.min.js +12 -12
- package/dist/{property-dd1c81a7.js → property-c70a07a2.js} +3 -3
- package/dist/query-602de8af.js +1 -1
- package/dist/query-assigned-elements-1bd68a6e.js +1 -1
- package/dist/radio-button-skeleton-e8c71f9b.js +118 -0
- package/dist/radio-button.min.js +2 -2
- package/dist/radio-group-manager-853a7e76.js +1 -1
- package/dist/search-9476f73d.js +108 -0
- package/dist/search.min.js +5 -5
- package/dist/{select-23298f17.js → select-50fa145d.js} +33 -33
- package/dist/select.min.js +5 -5
- package/dist/settings-37ba2900.js +79 -0
- package/dist/shape-indicator.min.js +3 -3
- package/dist/shared-enums-ccc90ee0.js +1 -1
- package/dist/side-panel.min.js +22 -22
- package/dist/skeleton-icon-5559709e.js +79 -0
- package/dist/skeleton-icon.min.js +2 -2
- package/dist/skeleton-placeholder-54360372.js +79 -0
- package/dist/skeleton-placeholder.min.js +2 -2
- package/dist/skeleton-text-37a275b8.js +79 -0
- package/dist/skeleton-text.min.js +2 -2
- package/dist/skip-to-content.min.js +4 -4
- package/dist/slider.min.js +139 -55
- package/dist/slug.min.js +5 -5
- package/dist/spread-5378d580.js +79 -0
- package/dist/stack.min.js +2 -2
- package/dist/{state-8793f01e.js → state-9418736a.js} +2 -2
- package/dist/structured-list.min.js +12 -12
- package/dist/tabs.min.js +25 -25
- package/dist/tag.min.js +33 -33
- package/dist/tearsheet.min.js +14 -14
- package/dist/text-input-cad89f77.js +140 -0
- package/dist/text-input.min.js +5 -5
- package/dist/textarea.min.js +26 -22
- package/dist/tile.min.js +24 -24
- package/dist/time-picker.min.js +21 -21
- package/dist/toggle-tip.min.js +2 -2
- package/dist/toggle.min.js +14 -14
- package/dist/toggletip-2538b5ef.js +124 -0
- package/dist/tooltip-content-32932ef2.js +81 -0
- package/dist/tooltip.min.js +2 -2
- package/dist/tree-view.min.js +30 -30
- package/dist/ui-shell.min.js +34 -34
- package/dist/validity-de6fe348.js +1 -1
- package/es/components/accordion/accordion-item.js +1 -1
- package/es/components/data-table/data-table.scss.js +1 -1
- package/es/components/feature-flags/index.d.ts +42 -0
- package/es/components/feature-flags/index.js +118 -0
- package/es/components/feature-flags/index.js.map +1 -0
- package/es/components/grid/column-hang.d.ts +19 -0
- package/es/components/grid/column-hang.js +43 -0
- package/es/components/grid/column-hang.js.map +1 -0
- package/es/components/grid/column-hang.scss.js +13 -0
- package/es/components/grid/column-hang.scss.js.map +1 -0
- package/es/components/grid/column.d.ts +35 -0
- package/es/components/grid/column.js +50 -0
- package/es/components/grid/column.js.map +1 -0
- package/es/components/grid/defs.d.ts +35 -0
- package/es/components/grid/defs.js +46 -0
- package/es/components/grid/defs.js.map +1 -0
- package/es/components/grid/grid-context.d.ts +9 -0
- package/es/components/grid/grid-context.js +13 -0
- package/es/components/grid/grid-context.js.map +1 -0
- package/es/components/grid/grid.d.ts +41 -0
- package/es/components/grid/grid.js +103 -0
- package/es/components/grid/grid.js.map +1 -0
- package/es/components/grid/grid.scss.js +13 -0
- package/es/components/grid/grid.scss.js.map +1 -0
- package/es/components/grid/index.d.ts +11 -0
- package/es/components/grid/index.js +11 -0
- package/es/components/grid/index.js.map +1 -0
- package/es/components/number-input/number-input.d.ts +24 -0
- package/es/components/number-input/number-input.js +65 -8
- package/es/components/number-input/number-input.js.map +1 -1
- package/es/components/number-input/number-input.scss.js +1 -1
- package/es/components/progress-bar/progress-bar.scss.js +1 -1
- package/es/components/slider/slider-input.d.ts +5 -1
- package/es/components/slider/slider-input.js +78 -30
- package/es/components/slider/slider-input.js.map +1 -1
- package/es/components/slider/slider-skeleton.d.ts +4 -0
- package/es/components/slider/slider-skeleton.js +65 -2
- package/es/components/slider/slider-skeleton.js.map +1 -1
- package/es/components/slider/slider.d.ts +33 -0
- package/es/components/slider/slider.js +453 -99
- package/es/components/slider/slider.js.map +1 -1
- package/es/components/slider/slider.scss.js +1 -1
- package/es/components/textarea/textarea.d.ts +25 -2
- package/es/components/textarea/textarea.js +100 -5
- package/es/components/textarea/textarea.js.map +1 -1
- package/es/components/textarea/textarea.scss.js +1 -1
- package/es/components/toggle/toggle.js +6 -1
- package/es/components/toggle/toggle.js.map +1 -1
- package/es/feature-flags/es/index.js +444 -0
- package/es/feature-flags/es/index.js.map +1 -0
- package/es-custom/components/accordion/accordion-item.js +1 -1
- package/es-custom/components/data-table/data-table.scss.js +1 -1
- package/es-custom/components/feature-flags/index.d.ts +42 -0
- package/es-custom/components/feature-flags/index.js +118 -0
- package/es-custom/components/feature-flags/index.js.map +1 -0
- package/es-custom/components/grid/column-hang.d.ts +19 -0
- package/es-custom/components/grid/column-hang.js +43 -0
- package/es-custom/components/grid/column-hang.js.map +1 -0
- package/es-custom/components/grid/column-hang.scss.js +13 -0
- package/es-custom/components/grid/column-hang.scss.js.map +1 -0
- package/es-custom/components/grid/column.d.ts +35 -0
- package/es-custom/components/grid/column.js +50 -0
- package/es-custom/components/grid/column.js.map +1 -0
- package/es-custom/components/grid/defs.d.ts +35 -0
- package/es-custom/components/grid/defs.js +46 -0
- package/es-custom/components/grid/defs.js.map +1 -0
- package/es-custom/components/grid/grid-context.d.ts +9 -0
- package/es-custom/components/grid/grid-context.js +13 -0
- package/es-custom/components/grid/grid-context.js.map +1 -0
- package/es-custom/components/grid/grid.d.ts +41 -0
- package/es-custom/components/grid/grid.js +103 -0
- package/es-custom/components/grid/grid.js.map +1 -0
- package/es-custom/components/grid/grid.scss.js +13 -0
- package/es-custom/components/grid/grid.scss.js.map +1 -0
- package/es-custom/components/grid/index.d.ts +11 -0
- package/es-custom/components/grid/index.js +11 -0
- package/es-custom/components/grid/index.js.map +1 -0
- package/es-custom/components/number-input/number-input.d.ts +24 -0
- package/es-custom/components/number-input/number-input.js +65 -8
- package/es-custom/components/number-input/number-input.js.map +1 -1
- package/es-custom/components/number-input/number-input.scss.js +1 -1
- package/es-custom/components/progress-bar/progress-bar.scss.js +1 -1
- package/es-custom/components/slider/slider-input.d.ts +5 -1
- package/es-custom/components/slider/slider-input.js +78 -30
- package/es-custom/components/slider/slider-input.js.map +1 -1
- package/es-custom/components/slider/slider-skeleton.d.ts +4 -0
- package/es-custom/components/slider/slider-skeleton.js +65 -2
- package/es-custom/components/slider/slider-skeleton.js.map +1 -1
- package/es-custom/components/slider/slider.d.ts +33 -0
- package/es-custom/components/slider/slider.js +453 -99
- package/es-custom/components/slider/slider.js.map +1 -1
- package/es-custom/components/slider/slider.scss.js +1 -1
- package/es-custom/components/textarea/textarea.d.ts +25 -2
- package/es-custom/components/textarea/textarea.js +100 -5
- package/es-custom/components/textarea/textarea.js.map +1 -1
- package/es-custom/components/textarea/textarea.scss.js +1 -1
- package/es-custom/components/toggle/toggle.js +6 -1
- package/es-custom/components/toggle/toggle.js.map +1 -1
- package/es-custom/feature-flags/es/index.js +444 -0
- package/es-custom/feature-flags/es/index.js.map +1 -0
- package/lib/components/feature-flags/index.d.ts +42 -0
- package/lib/components/grid/column-hang.d.ts +19 -0
- package/lib/components/grid/column.d.ts +35 -0
- package/lib/components/grid/defs.d.ts +35 -0
- package/lib/components/grid/defs.js +48 -0
- package/lib/components/grid/defs.js.map +1 -0
- package/lib/components/grid/grid-context.d.ts +9 -0
- package/lib/components/grid/grid.d.ts +41 -0
- package/lib/components/grid/index.d.ts +11 -0
- package/lib/components/number-input/number-input.d.ts +24 -0
- package/lib/components/slider/slider-input.d.ts +5 -1
- package/lib/components/slider/slider-skeleton.d.ts +4 -0
- package/lib/components/slider/slider.d.ts +33 -0
- package/lib/components/textarea/textarea.d.ts +25 -2
- package/package.json +4 -4
- package/scss/components/grid/column-hang.scss +15 -0
- package/scss/components/grid/grid-story.scss +96 -0
- package/scss/components/grid/grid.scss +59 -0
- package/scss/components/grid/mixin.scss +70 -0
- package/scss/components/number-input/number-input.scss +4 -0
- package/scss/components/slider/slider.scss +26 -0
- package/scss/components/textarea/textarea.scss +15 -2
- package/dist/16-a6ff8f82.js +0 -79
- package/dist/16-a9f5da53.js +0 -79
- package/dist/16-c0c2f9cc.js +0 -79
- package/dist/20-6f209450.js +0 -79
- package/dist/20-cf8682e7.js +0 -79
- package/dist/button-8a9ddb9f.js +0 -144
- package/dist/button-set-e143c49e.js +0 -79
- package/dist/checkbox-f024ef99.js +0 -118
- package/dist/content-switcher-item-c66114b8.js +0 -105
- package/dist/copy-button-a481f85e.js +0 -94
- package/dist/dropdown-item-61ac6300.js +0 -147
- package/dist/floating-menu-f19577a8.js +0 -79
- package/dist/icon-button-58819f57.js +0 -93
- package/dist/layer-602c2202.js +0 -79
- package/dist/link-76646b17.js +0 -103
- package/dist/loading-ae8e2f1b.js +0 -79
- package/dist/menu-item-radio-group-45e474cb.js +0 -168
- package/dist/modal-label-f93860bf.js +0 -110
- package/dist/popover-content-b41e9612.js +0 -94
- package/dist/radio-button-skeleton-0c69d51b.js +0 -118
- package/dist/search-0191f926.js +0 -108
- package/dist/settings-c3654bc7.js +0 -101
- package/dist/skeleton-icon-e81be97a.js +0 -79
- package/dist/skeleton-placeholder-13b648d8.js +0 -79
- package/dist/skeleton-text-ec2217a3.js +0 -79
- package/dist/spread-bbf12ceb.js +0 -79
- package/dist/text-input-404238e9.js +0 -140
- package/dist/toggletip-691cdd4c.js +0 -124
- package/dist/tooltip-content-8fc23961.js +0 -81
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { __decorate } from 'tslib';
|
|
9
9
|
import { html, LitElement } from 'lit';
|
|
10
|
-
import {
|
|
10
|
+
import { property, query } from 'lit/decorators.js';
|
|
11
11
|
import { classMap } from 'lit/directives/class-map.js';
|
|
12
12
|
import throttle from 'lodash-es/throttle';
|
|
13
13
|
import { prefix } from '../../globals/settings.js';
|
|
@@ -37,6 +37,10 @@ const THUMB_DIRECTION = {
|
|
|
37
37
|
Down: 1,
|
|
38
38
|
ArrowDown: 1,
|
|
39
39
|
};
|
|
40
|
+
/**
|
|
41
|
+
* Minimum time between processed "drag" events.
|
|
42
|
+
*/
|
|
43
|
+
const EVENT_THROTTLE = 16; // ms
|
|
40
44
|
/**
|
|
41
45
|
* Slider.
|
|
42
46
|
*
|
|
@@ -51,6 +55,10 @@ const THUMB_DIRECTION = {
|
|
|
51
55
|
let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(LitElement))) {
|
|
52
56
|
constructor() {
|
|
53
57
|
super(...arguments);
|
|
58
|
+
this._cachedRateUpper = 1;
|
|
59
|
+
this._cachedRate = 0;
|
|
60
|
+
this.dragCooldownTimeout = null;
|
|
61
|
+
this.dragCoolDown = false;
|
|
54
62
|
/**
|
|
55
63
|
* The internal value of `max` property.
|
|
56
64
|
*/
|
|
@@ -75,14 +83,26 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
75
83
|
* `true` if dragging of thumb is in progress.
|
|
76
84
|
*/
|
|
77
85
|
this._dragging = false;
|
|
86
|
+
/**
|
|
87
|
+
* `true` if dragging of thumb upper is in progress.
|
|
88
|
+
*/
|
|
89
|
+
this._draggingUpper = false;
|
|
90
|
+
/**
|
|
91
|
+
* Throttles calls to `this._onDrag` by limiting events to being processed at
|
|
92
|
+
* most once every `EVENT_THROTTLE` milliseconds.
|
|
93
|
+
*/
|
|
94
|
+
this.onDrag = throttle(this._startDrag, EVENT_THROTTLE, {
|
|
95
|
+
leading: true,
|
|
96
|
+
trailing: false,
|
|
97
|
+
});
|
|
78
98
|
/**
|
|
79
99
|
* Handles `pointermove` to update the thumb position and the value as necessary.
|
|
80
100
|
*
|
|
81
101
|
* @param event The event.
|
|
82
102
|
*/
|
|
83
103
|
this._handlePointermove = (event) => {
|
|
84
|
-
const { disabled, _dragging: dragging } = this;
|
|
85
|
-
if (!disabled && dragging) {
|
|
104
|
+
const { disabled, _dragging: dragging, _draggingUpper: draggingUpper, } = this;
|
|
105
|
+
if (!disabled && (dragging || draggingUpper)) {
|
|
86
106
|
this._throttledHandlePointermoveImpl(event);
|
|
87
107
|
}
|
|
88
108
|
};
|
|
@@ -90,6 +110,12 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
90
110
|
* Handles `pointerup` and `pointerleave` event to finishing dragging.
|
|
91
111
|
*/
|
|
92
112
|
this._endDrag = () => {
|
|
113
|
+
if (this._dragging || this._draggingUpper) {
|
|
114
|
+
this.dragCoolDown = true;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.dragCoolDown = false;
|
|
118
|
+
}
|
|
93
119
|
if (this._dragging) {
|
|
94
120
|
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
95
121
|
bubbles: true,
|
|
@@ -101,21 +127,59 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
101
127
|
this._dragging = false;
|
|
102
128
|
this._thumbNode.style.touchAction = '';
|
|
103
129
|
}
|
|
130
|
+
else if (this._draggingUpper) {
|
|
131
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
132
|
+
bubbles: true,
|
|
133
|
+
composed: true,
|
|
134
|
+
detail: {
|
|
135
|
+
value: this.unstable_valueUpper,
|
|
136
|
+
},
|
|
137
|
+
}));
|
|
138
|
+
this._draggingUpper = false;
|
|
139
|
+
this._thumbNodeUpper.style.touchAction = '';
|
|
140
|
+
}
|
|
141
|
+
if (this._dragging || this._draggingUpper) {
|
|
142
|
+
this.dragCooldownTimeout = window.setTimeout(() => {
|
|
143
|
+
this.dragCoolDown = false;
|
|
144
|
+
}, 100);
|
|
145
|
+
}
|
|
104
146
|
};
|
|
105
147
|
/**
|
|
106
148
|
* Handles `${prefix}-slider-input-changed` event to update the value.
|
|
107
149
|
*/
|
|
108
|
-
this._handleChangeInput = (
|
|
150
|
+
this._handleChangeInput = (event) => {
|
|
151
|
+
var _a;
|
|
152
|
+
const input = event.target;
|
|
153
|
+
const inputElement = (_a = input.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
|
|
154
|
+
this.isValid =
|
|
155
|
+
input.tagName === 'CDS-SLIDER-INPUT'
|
|
156
|
+
? this._getInputValidity(input)
|
|
157
|
+
: this.isValid;
|
|
158
|
+
this.warn = this._getInputWarnigState(inputElement);
|
|
159
|
+
const eventContainer = event.target.id;
|
|
160
|
+
const { detail } = event;
|
|
109
161
|
const { intermediate, value } = detail;
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
value
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
162
|
+
this.warnText = intermediate
|
|
163
|
+
? `The inputted value ${intermediate} was corrected to the nearest allowed digit`
|
|
164
|
+
: '';
|
|
165
|
+
if (intermediate !== value) {
|
|
166
|
+
if (eventContainer === 'upper') {
|
|
167
|
+
this.unstable_valueUpper = value;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this.value = value;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const valueMain = eventContainer === 'upper' ? this.unstable_valueUpper : this.value;
|
|
174
|
+
valueMain !== '' &&
|
|
175
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
176
|
+
bubbles: true,
|
|
177
|
+
composed: true,
|
|
178
|
+
detail: {
|
|
179
|
+
value: valueMain,
|
|
180
|
+
intermediate,
|
|
181
|
+
},
|
|
182
|
+
}));
|
|
119
183
|
};
|
|
120
184
|
/**
|
|
121
185
|
* `true` if the check box should be disabled.
|
|
@@ -171,6 +235,10 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
171
235
|
* Provide the text that is displayed when the control is in warning state
|
|
172
236
|
*/
|
|
173
237
|
this.warnText = '';
|
|
238
|
+
/**
|
|
239
|
+
* Checks whether the input field is hidden or not
|
|
240
|
+
*/
|
|
241
|
+
this.hideTextInput = false;
|
|
174
242
|
}
|
|
175
243
|
/**
|
|
176
244
|
* The rate of the thumb position in the track.
|
|
@@ -179,8 +247,15 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
179
247
|
get _rate() {
|
|
180
248
|
const { max, min, value } = this;
|
|
181
249
|
// Copes with out-of-range value coming programmatically or from `<cds-custom-slider-input>`
|
|
182
|
-
|
|
183
|
-
(Number(max) - Number(min))
|
|
250
|
+
if (value) {
|
|
251
|
+
const rate = (Math.min(Number(max), Math.max(Number(min), value)) - Number(min)) /
|
|
252
|
+
(Number(max) - Number(min));
|
|
253
|
+
this._cachedRate = rate;
|
|
254
|
+
return rate;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
return this._cachedRate;
|
|
258
|
+
}
|
|
184
259
|
}
|
|
185
260
|
set _rate(rate) {
|
|
186
261
|
const { max, min, step } = this;
|
|
@@ -190,6 +265,32 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
190
265
|
Number(step)) *
|
|
191
266
|
Number(step);
|
|
192
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* The rate of the upper thumb position in the track.
|
|
270
|
+
* When we try to set a new value for upper input, we adjust the value considering `step` property.
|
|
271
|
+
*/
|
|
272
|
+
get _rateUpper() {
|
|
273
|
+
const { max, min, unstable_valueUpper } = this;
|
|
274
|
+
// Copes with out-of-range value coming programmatically or from `<cds-custom-slider-input>`
|
|
275
|
+
if (unstable_valueUpper) {
|
|
276
|
+
const rateUpper = (Math.min(Number(max), Math.max(Number(min), unstable_valueUpper)) -
|
|
277
|
+
Number(min)) /
|
|
278
|
+
(Number(max) - Number(min));
|
|
279
|
+
this._cachedRateUpper = rateUpper;
|
|
280
|
+
return rateUpper;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
return this._cachedRateUpper;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
set _rateUpper(rateUpper) {
|
|
287
|
+
const { max, min, step } = this;
|
|
288
|
+
this.unstable_valueUpper =
|
|
289
|
+
Number(min) +
|
|
290
|
+
Math.round(((Number(max) - Number(min)) * Math.min(1, Math.max(0, rateUpper))) /
|
|
291
|
+
Number(step)) *
|
|
292
|
+
Number(step);
|
|
293
|
+
}
|
|
193
294
|
/**
|
|
194
295
|
* Handles `click` event on the `<label>` to focus on the thumb.
|
|
195
296
|
*/
|
|
@@ -207,59 +308,156 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
207
308
|
/**
|
|
208
309
|
* Handles `keydown` event on the thumb to increase/decrease the value.
|
|
209
310
|
*/
|
|
210
|
-
_handleKeydown(
|
|
211
|
-
|
|
311
|
+
_handleKeydown(event) {
|
|
312
|
+
const eventContainer = event.target.id;
|
|
313
|
+
const { key, shiftKey } = event;
|
|
314
|
+
if (!this.disabled && !this.readonly) {
|
|
212
315
|
if (key in THUMB_DIRECTION) {
|
|
213
|
-
const { max: rawMax, min: rawMin, step: rawStep, stepMultiplier: rawstepMultiplier, value, } = this;
|
|
316
|
+
const { max: rawMax, min: rawMin, step: rawStep, stepMultiplier: rawstepMultiplier, value, unstable_valueUpper, } = this;
|
|
214
317
|
const max = Number(rawMax);
|
|
215
318
|
const min = Number(rawMin);
|
|
216
319
|
const step = Number(rawStep);
|
|
217
320
|
const stepMultiplier = Number(rawstepMultiplier);
|
|
218
321
|
const diff = (!shiftKey ? step : (max - min) / stepMultiplier) *
|
|
219
322
|
THUMB_DIRECTION[key];
|
|
220
|
-
const stepCount = (value + diff) / step;
|
|
221
323
|
// Snaps to next
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
324
|
+
if (eventContainer == 'thumb-upper') {
|
|
325
|
+
const stepCount = (unstable_valueUpper + diff) / step;
|
|
326
|
+
const position = Math.min(max, Math.max(min, (diff >= 0 ? Math.floor(stepCount) : Math.ceil(stepCount)) * step));
|
|
327
|
+
if (position >= this.value) {
|
|
328
|
+
this.unstable_valueUpper = position;
|
|
329
|
+
}
|
|
330
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
331
|
+
bubbles: true,
|
|
332
|
+
composed: true,
|
|
333
|
+
detail: {
|
|
334
|
+
value: this.unstable_valueUpper,
|
|
335
|
+
intermediate: false,
|
|
336
|
+
},
|
|
337
|
+
}));
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
const stepCount = (value + diff) / step;
|
|
341
|
+
const position = Math.min(max, Math.max(min, (diff >= 0 ? Math.floor(stepCount) : Math.ceil(stepCount)) * step));
|
|
342
|
+
if (!this.unstable_valueUpper ||
|
|
343
|
+
position <= this.unstable_valueUpper) {
|
|
344
|
+
this.value = position;
|
|
345
|
+
}
|
|
346
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
347
|
+
bubbles: true,
|
|
348
|
+
composed: true,
|
|
349
|
+
detail: {
|
|
350
|
+
value: this.value,
|
|
351
|
+
intermediate: false,
|
|
352
|
+
},
|
|
353
|
+
}));
|
|
354
|
+
}
|
|
231
355
|
}
|
|
232
356
|
}
|
|
233
357
|
}
|
|
234
358
|
/**
|
|
235
359
|
* Handles `pointerdown` event on the thumb to start dragging.
|
|
236
360
|
*/
|
|
237
|
-
_startDrag() {
|
|
238
|
-
this.
|
|
239
|
-
|
|
361
|
+
_startDrag(event) {
|
|
362
|
+
if (!this.readonly && !this.disabled) {
|
|
363
|
+
let eventContainer = event.target.id;
|
|
364
|
+
if (!eventContainer) {
|
|
365
|
+
const element = event.target.nodeName;
|
|
366
|
+
if (element == 'path' || element == 'svg') {
|
|
367
|
+
eventContainer = event.target.parentElement.closest('.cds-custom--slider__thumb-wrapper').id;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
if (eventContainer === 'thumb') {
|
|
371
|
+
this._dragging = true;
|
|
372
|
+
this._thumbNode.style.touchAction = 'none';
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
this._draggingUpper = true;
|
|
376
|
+
this._thumbNodeUpper.style.touchAction = 'none';
|
|
377
|
+
}
|
|
378
|
+
}
|
|
240
379
|
}
|
|
241
380
|
/**
|
|
242
381
|
* Handles `pointerdown` event on the track to update the thumb position and the value as necessary.
|
|
243
382
|
*/
|
|
244
383
|
_handleClick(event) {
|
|
245
|
-
|
|
384
|
+
let eventContainer = event.target.id;
|
|
385
|
+
if (!eventContainer) {
|
|
386
|
+
const element = event.target.nodeName;
|
|
387
|
+
if (element == 'path' || element == 'svg') {
|
|
388
|
+
eventContainer = event.target.parentElement.closest('.cds-custom--slider__thumb-wrapper').id;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (!this.disabled && !this.readonly) {
|
|
246
392
|
const { _trackNode: trackNode } = this;
|
|
247
393
|
const isRtl = trackNode
|
|
248
394
|
.ownerDocument.defaultView.getComputedStyle(trackNode)
|
|
249
395
|
.getPropertyValue('direction') === 'rtl';
|
|
250
396
|
const thumbPosition = event.clientX;
|
|
251
397
|
const { left: trackLeft, width: trackWidth } = trackNode.getBoundingClientRect();
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
398
|
+
if (eventContainer === 'thumb-upper') {
|
|
399
|
+
this._rateUpper =
|
|
400
|
+
(isRtl
|
|
401
|
+
? trackLeft + trackWidth - thumbPosition
|
|
402
|
+
: thumbPosition - trackLeft) / trackWidth;
|
|
403
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
404
|
+
bubbles: true,
|
|
405
|
+
composed: true,
|
|
406
|
+
detail: {
|
|
407
|
+
value: this.unstable_valueUpper,
|
|
408
|
+
},
|
|
409
|
+
}));
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
if (!this.unstable_valueUpper) {
|
|
413
|
+
this._rate =
|
|
414
|
+
(isRtl
|
|
415
|
+
? trackLeft + trackWidth - thumbPosition
|
|
416
|
+
: thumbPosition - trackLeft) / trackWidth;
|
|
417
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
418
|
+
bubbles: true,
|
|
419
|
+
composed: true,
|
|
420
|
+
detail: {
|
|
421
|
+
value: this.value,
|
|
422
|
+
},
|
|
423
|
+
}));
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
if (!this.dragCoolDown) {
|
|
427
|
+
const position = ((isRtl
|
|
428
|
+
? trackLeft + trackWidth - thumbPosition
|
|
429
|
+
: thumbPosition - trackLeft) /
|
|
430
|
+
trackWidth) *
|
|
431
|
+
100;
|
|
432
|
+
const differenceValue = position > this.value
|
|
433
|
+
? position - this.value
|
|
434
|
+
: this.value - position;
|
|
435
|
+
const differenceValueUpper = position > this.unstable_valueUpper
|
|
436
|
+
? position - this.unstable_valueUpper
|
|
437
|
+
: this.unstable_valueUpper - position;
|
|
438
|
+
if (differenceValue > differenceValueUpper) {
|
|
439
|
+
this._rateUpper = position / 100;
|
|
440
|
+
}
|
|
441
|
+
else if (differenceValue < differenceValueUpper) {
|
|
442
|
+
this._rate = position / 100;
|
|
443
|
+
}
|
|
444
|
+
else if (!this._dragging &&
|
|
445
|
+
!this._draggingUpper &&
|
|
446
|
+
differenceValue === differenceValueUpper) {
|
|
447
|
+
Math.round(position) > this.unstable_valueUpper
|
|
448
|
+
? (this._rateUpper = position / 100)
|
|
449
|
+
: (this._rate = position / 100);
|
|
450
|
+
}
|
|
451
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
452
|
+
bubbles: true,
|
|
453
|
+
composed: true,
|
|
454
|
+
detail: {
|
|
455
|
+
value: this.value,
|
|
456
|
+
},
|
|
457
|
+
}));
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
263
461
|
}
|
|
264
462
|
}
|
|
265
463
|
/**
|
|
@@ -268,25 +466,46 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
268
466
|
* @param event The event.
|
|
269
467
|
*/
|
|
270
468
|
_handlePointermoveImpl(event) {
|
|
271
|
-
const { disabled, _dragging: dragging, _trackNode: trackNode } = this;
|
|
272
|
-
if (!disabled
|
|
469
|
+
const { disabled, _dragging: dragging, _trackNode: trackNode, _draggingUpper: draggingUpper, } = this;
|
|
470
|
+
if (!disabled) {
|
|
273
471
|
const isRtl = trackNode
|
|
274
472
|
.ownerDocument.defaultView.getComputedStyle(trackNode)
|
|
275
473
|
.getPropertyValue('direction') === 'rtl';
|
|
276
474
|
const thumbPosition = event.clientX;
|
|
277
475
|
const { left: trackLeft, width: trackWidth } = this._trackNode.getBoundingClientRect();
|
|
278
|
-
|
|
279
|
-
(isRtl
|
|
476
|
+
if (dragging) {
|
|
477
|
+
const position = (isRtl
|
|
280
478
|
? trackLeft + trackWidth - thumbPosition
|
|
281
479
|
: thumbPosition - trackLeft) / trackWidth;
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
480
|
+
if (!this.unstable_valueUpper ||
|
|
481
|
+
position * 100 <= this.unstable_valueUpper) {
|
|
482
|
+
this._rate = position;
|
|
483
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
484
|
+
bubbles: true,
|
|
485
|
+
composed: true,
|
|
486
|
+
detail: {
|
|
487
|
+
value: this.value,
|
|
488
|
+
intermediate: true,
|
|
489
|
+
},
|
|
490
|
+
}));
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
else if (draggingUpper) {
|
|
494
|
+
const position = (isRtl
|
|
495
|
+
? trackLeft + trackWidth - thumbPosition
|
|
496
|
+
: thumbPosition - trackLeft) / trackWidth;
|
|
497
|
+
if (position * 100 >= this.value) {
|
|
498
|
+
this._rateUpper = position;
|
|
499
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
|
|
500
|
+
bubbles: true,
|
|
501
|
+
composed: true,
|
|
502
|
+
detail: {
|
|
503
|
+
value: this.unstable_valueUpper,
|
|
504
|
+
intermediate: true,
|
|
505
|
+
},
|
|
506
|
+
}));
|
|
507
|
+
}
|
|
508
|
+
}
|
|
290
509
|
}
|
|
291
510
|
}
|
|
292
511
|
/**
|
|
@@ -335,15 +554,27 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
335
554
|
this.requestUpdate('stepMultiplier', oldstepMultiplier);
|
|
336
555
|
}
|
|
337
556
|
_getInputValidity(input) {
|
|
557
|
+
var _a;
|
|
558
|
+
const inputElement = (_a = input === null || input === void 0 ? void 0 : input.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
|
|
338
559
|
if (this.invalid) {
|
|
339
560
|
return false;
|
|
340
561
|
}
|
|
341
|
-
if (
|
|
342
|
-
|
|
562
|
+
if (input === null || input === void 0 ? void 0 : input.invalid) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
if ((inputElement === null || inputElement === void 0 ? void 0 : inputElement.valueAsNumber) > Number(this.max) ||
|
|
566
|
+
(inputElement === null || inputElement === void 0 ? void 0 : inputElement.valueAsNumber) < Number(this.min)) {
|
|
343
567
|
return false;
|
|
344
568
|
}
|
|
345
569
|
return true;
|
|
346
570
|
}
|
|
571
|
+
_getInputWarnigState(input) {
|
|
572
|
+
if ((input === null || input === void 0 ? void 0 : input.valueAsNumber) > Number(input.max) ||
|
|
573
|
+
(input === null || input === void 0 ? void 0 : input.valueAsNumber) < Number(input.min)) {
|
|
574
|
+
return true;
|
|
575
|
+
}
|
|
576
|
+
return false;
|
|
577
|
+
}
|
|
347
578
|
connectedCallback() {
|
|
348
579
|
super.connectedCallback();
|
|
349
580
|
if (!this._throttledHandlePointermoveImpl) {
|
|
@@ -355,57 +586,93 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
355
586
|
this._throttledHandlePointermoveImpl.cancel();
|
|
356
587
|
this._throttledHandlePointermoveImpl = null;
|
|
357
588
|
}
|
|
589
|
+
clearTimeout(this.dragCooldownTimeout);
|
|
358
590
|
super.disconnectedCallback();
|
|
359
591
|
}
|
|
360
|
-
|
|
592
|
+
updated() {
|
|
361
593
|
var _a;
|
|
362
|
-
const
|
|
363
|
-
if (
|
|
364
|
-
if (
|
|
365
|
-
|
|
594
|
+
const sliderfilledTrack = (_a = this === null || this === void 0 ? void 0 : this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`.${prefix}--slider__filled-track`);
|
|
595
|
+
if (sliderfilledTrack) {
|
|
596
|
+
if (this.unstable_valueUpper || this.unstable_valueUpper === '') {
|
|
597
|
+
sliderfilledTrack.style.transform = this.unstable_valueUpper
|
|
598
|
+
? `translate(${this._rate * 100}%, -50%) scaleX(${this._rateUpper - this._rate})`
|
|
599
|
+
: `translate(0%, -50%) scaleX(${this._rate})`;
|
|
366
600
|
}
|
|
367
|
-
|
|
368
|
-
|
|
601
|
+
else {
|
|
602
|
+
sliderfilledTrack.style.transform = this.unstable_valueUpper
|
|
603
|
+
? `translate(${this._rate * 100}%, -50%) scaleX(${this._rateUpper - this._rate})`
|
|
604
|
+
: `translate(0%, -50%) scaleX(${this._rate})`;
|
|
369
605
|
}
|
|
370
606
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
if (
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}
|
|
379
|
-
if (input) {
|
|
380
|
-
['max', 'min', 'step', 'value'].forEach((name) => {
|
|
381
|
-
if (changedProperties.has(name)) {
|
|
382
|
-
input[name] = this[name];
|
|
607
|
+
}
|
|
608
|
+
shouldUpdate(changedProperties) {
|
|
609
|
+
const inputs = this.querySelectorAll(this.constructor.selectorInput);
|
|
610
|
+
inputs.forEach((input, index) => {
|
|
611
|
+
if (changedProperties.has('disabled')) {
|
|
612
|
+
if (input) {
|
|
613
|
+
input.disabled = this.disabled;
|
|
383
614
|
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
changedProperties.has('invalid') ||
|
|
387
|
-
changedProperties.has('warn') ||
|
|
388
|
-
changedProperties.has('readonly')) {
|
|
389
|
-
const innerInput = (_a = input === null || input === void 0 ? void 0 : input.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
|
|
390
|
-
this.isValid = this._getInputValidity(innerInput);
|
|
391
|
-
if (!this.readonly && !this.isValid) {
|
|
392
|
-
input.invalid = true;
|
|
615
|
+
if (this.disabled) {
|
|
616
|
+
this._dragging = false;
|
|
393
617
|
}
|
|
394
|
-
|
|
395
|
-
|
|
618
|
+
}
|
|
619
|
+
if (changedProperties.has('readonly')) {
|
|
620
|
+
if (input) {
|
|
621
|
+
input.readonly = this.readonly;
|
|
622
|
+
}
|
|
623
|
+
if (this.readonly) {
|
|
624
|
+
this._dragging = false;
|
|
396
625
|
}
|
|
397
|
-
|
|
398
|
-
|
|
626
|
+
}
|
|
627
|
+
if (changedProperties.has('invalid')) {
|
|
628
|
+
input.invalid = this.invalid;
|
|
629
|
+
}
|
|
630
|
+
if (changedProperties.has('hideTextInput')) {
|
|
631
|
+
input.hideTextInput = this.hideTextInput;
|
|
632
|
+
}
|
|
633
|
+
if (input) {
|
|
634
|
+
if ((this.unstable_valueUpper || this.unstable_valueUpper === '') &&
|
|
635
|
+
index > 0) {
|
|
636
|
+
['max', 'min', 'step', 'unstable_valueUpper'].forEach((name) => {
|
|
637
|
+
if (name === 'unstable_valueUpper') {
|
|
638
|
+
input.value = this.unstable_valueUpper;
|
|
639
|
+
}
|
|
640
|
+
else if (name === 'min') {
|
|
641
|
+
input[name] = this.value;
|
|
642
|
+
}
|
|
643
|
+
else {
|
|
644
|
+
input[name] = this[name];
|
|
645
|
+
}
|
|
646
|
+
});
|
|
399
647
|
}
|
|
400
648
|
else {
|
|
401
|
-
|
|
649
|
+
['max', 'min', 'step', 'value'].forEach((name) => {
|
|
650
|
+
if (this.unstable_valueUpper && name === 'max') {
|
|
651
|
+
input[name] = this.unstable_valueUpper;
|
|
652
|
+
}
|
|
653
|
+
else {
|
|
654
|
+
input[name] = this[name];
|
|
655
|
+
}
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
if (changedProperties.has('value') ||
|
|
659
|
+
changedProperties.has('invalid') ||
|
|
660
|
+
changedProperties.has('warn') ||
|
|
661
|
+
changedProperties.has('readonly')) {
|
|
662
|
+
this.isValid = this._getInputValidity(input);
|
|
663
|
+
if (!this.readonly && !this.isValid) {
|
|
664
|
+
input.invalid = true;
|
|
665
|
+
}
|
|
666
|
+
else {
|
|
667
|
+
input.invalid = false;
|
|
668
|
+
}
|
|
402
669
|
}
|
|
403
670
|
}
|
|
404
|
-
}
|
|
671
|
+
});
|
|
405
672
|
return true;
|
|
406
673
|
}
|
|
407
674
|
render() {
|
|
408
|
-
const { disabled, formatMaxText, formatMinText, labelText, hideLabel, max, min, maxLabel, minLabel, readonly, invalidText, isValid, warn, warnText, value, _rate: rate, _handleClickLabel: handleClickLabel, _handleKeydown: handleKeydown, _handleClick: handleClick,
|
|
675
|
+
const { disabled, formatMaxText, formatMinText, labelText, hideLabel, max, min, maxLabel, minLabel, readonly, invalidText, isValid, warn, warnText, value, unstable_valueUpper, _rate: rate, _rateUpper: rateUpper, _handleClickLabel: handleClickLabel, _handleKeydown: handleKeydown, _handleClick: handleClick, onDrag, _endDrag: endDrag, } = this;
|
|
409
676
|
const labelClasses = classMap({
|
|
410
677
|
[`${prefix}--label`]: true,
|
|
411
678
|
[`${prefix}--visually-hidden`]: hideLabel,
|
|
@@ -416,11 +683,27 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
416
683
|
[`${prefix}--slider--disabled`]: disabled,
|
|
417
684
|
[`${prefix}--slider--readonly`]: readonly,
|
|
418
685
|
});
|
|
686
|
+
const thumbLowerClasses = classMap({
|
|
687
|
+
[`${prefix}--icon-tooltip`]: unstable_valueUpper || unstable_valueUpper === '',
|
|
688
|
+
[`${prefix}--slider__thumb-wrapper`]: unstable_valueUpper || unstable_valueUpper === '',
|
|
689
|
+
[`${prefix}--slider__thumb-wrapper--lower`]: unstable_valueUpper || unstable_valueUpper === '',
|
|
690
|
+
[`${prefix}--slider__thumb`]: !(unstable_valueUpper || unstable_valueUpper === ''),
|
|
691
|
+
[`${prefix}--slider__thumb-disabled`]: disabled,
|
|
692
|
+
});
|
|
693
|
+
const thumbUpperClasses = classMap({
|
|
694
|
+
[`${prefix}--icon-tooltip`]: true,
|
|
695
|
+
[`${prefix}--slider__thumb-wrapper`]: true,
|
|
696
|
+
[`${prefix}--slider__thumb-wrapper--upper`]: true,
|
|
697
|
+
[`${prefix}--slider__thumb-disabled`]: disabled,
|
|
698
|
+
});
|
|
419
699
|
return html `
|
|
420
700
|
<label class="${labelClasses}" @click="${handleClickLabel}">
|
|
421
701
|
<slot name="label-text">${labelText}</slot>
|
|
422
702
|
</label>
|
|
423
703
|
<div class="${prefix}--slider-container">
|
|
704
|
+
${unstable_valueUpper || unstable_valueUpper === ''
|
|
705
|
+
? html ` <slot name="lower-input"></slot>`
|
|
706
|
+
: ''}
|
|
424
707
|
<span class="${prefix}--slider__range-label">
|
|
425
708
|
<slot name="min-text">${formatMinText(min, minLabel)}</slot>
|
|
426
709
|
</span>
|
|
@@ -434,20 +717,82 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
434
717
|
role="presentation">
|
|
435
718
|
<div
|
|
436
719
|
id="thumb"
|
|
437
|
-
class="${
|
|
720
|
+
class="${thumbLowerClasses}"
|
|
438
721
|
role="slider"
|
|
439
722
|
tabindex="${!readonly ? 0 : -1}"
|
|
440
723
|
aria-valuemax="${max}"
|
|
441
724
|
aria-valuemin="${min}"
|
|
442
725
|
aria-valuenow="${value}"
|
|
443
726
|
style="left: ${rate * 100}%"
|
|
444
|
-
@pointerdown="${
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
727
|
+
@pointerdown="${onDrag}">
|
|
728
|
+
${(unstable_valueUpper || unstable_valueUpper === '') && !readonly
|
|
729
|
+
? html `
|
|
730
|
+
<div class="${prefix}--slider__thumb--lower">
|
|
731
|
+
<svg
|
|
732
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
733
|
+
viewBox="0 0 16 24"
|
|
734
|
+
class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower">
|
|
735
|
+
<path
|
|
736
|
+
d="M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"></path>
|
|
737
|
+
<path fill="none" d="M-4 0h24v24H-4z"></path>
|
|
738
|
+
</svg>
|
|
739
|
+
<svg
|
|
740
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
741
|
+
viewBox="0 0 16 24"
|
|
742
|
+
class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower cds-custom--slider__thumb-icon--focus">
|
|
743
|
+
<path
|
|
744
|
+
d="M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"></path>
|
|
745
|
+
<path fill="none" d="M-4 0h24v24H-4z"></path>
|
|
746
|
+
<path d="M15.08 0H16v6.46h-.92z"></path>
|
|
747
|
+
<path d="M0 0h.92v24H0zM15.08 0H16v24h-.92z"></path>
|
|
748
|
+
<path d="M0 .92V0h16v.92zM0 24v-.92h16V24z"></path>
|
|
749
|
+
</svg>
|
|
750
|
+
</div>
|
|
751
|
+
`
|
|
752
|
+
: ``}
|
|
450
753
|
</div>
|
|
754
|
+
${(unstable_valueUpper || unstable_valueUpper === '') && !readonly
|
|
755
|
+
? html `
|
|
756
|
+
<div
|
|
757
|
+
id="thumb-upper"
|
|
758
|
+
class="${thumbUpperClasses}"
|
|
759
|
+
role="slider"
|
|
760
|
+
tabindex="${!readonly ? 0 : -1}"
|
|
761
|
+
aria-valuemax="${max}"
|
|
762
|
+
aria-valuemin="${min}"
|
|
763
|
+
aria-valuenow="${unstable_valueUpper}"
|
|
764
|
+
style="left: ${rateUpper * 100}%"
|
|
765
|
+
@pointerdown="${onDrag}">
|
|
766
|
+
<div class="${prefix}--slider__thumb--upper">
|
|
767
|
+
<svg
|
|
768
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
769
|
+
viewBox="0 0 16 24"
|
|
770
|
+
class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper">
|
|
771
|
+
<path
|
|
772
|
+
d="M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"></path>
|
|
773
|
+
<path fill="none" d="M-4 0h24v24H-4z"></path>
|
|
774
|
+
</svg>
|
|
775
|
+
<svg
|
|
776
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
777
|
+
viewBox="0 0 16 24"
|
|
778
|
+
class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper cds-custom--slider__thumb-icon--focus">
|
|
779
|
+
<path
|
|
780
|
+
d="M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"></path>
|
|
781
|
+
<path fill="none" d="M-4 0h24v24H-4z"></path>
|
|
782
|
+
<path d="M.92 24H0v-6.46h.92z"></path>
|
|
783
|
+
<path d="M16 24h-.92V0H16zM.92 24H0V0h.92z"></path>
|
|
784
|
+
<path d="M16 23.08V24H0v-.92zM16 0v.92H0V0z"></path>
|
|
785
|
+
</svg>
|
|
786
|
+
</div>
|
|
787
|
+
</div>
|
|
788
|
+
`
|
|
789
|
+
: html ``}
|
|
790
|
+
<div id="track" class="${prefix}--slider__track"></div>
|
|
791
|
+
${unstable_valueUpper || unstable_valueUpper === ''
|
|
792
|
+
? html ` <div class="${prefix}--slider__filled-track"></div> `
|
|
793
|
+
: html ` <div class="${prefix}-ce--slider__filled-track-container">
|
|
794
|
+
<div class="${prefix}--slider__filled-track"></div>
|
|
795
|
+
</div>`}
|
|
451
796
|
</div>
|
|
452
797
|
<span class="${prefix}--slider__range-label">
|
|
453
798
|
<slot name="max-text">${formatMaxText(max, maxLabel)}</slot>
|
|
@@ -492,9 +837,15 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
|
|
|
492
837
|
};
|
|
493
838
|
CDSSlider.shadowRootOptions = Object.assign(Object.assign({}, LitElement.shadowRootOptions), { delegatesFocus: true });
|
|
494
839
|
CDSSlider.styles = styles;
|
|
840
|
+
__decorate([
|
|
841
|
+
property({ type: Number, attribute: 'value-upper' })
|
|
842
|
+
], CDSSlider.prototype, "unstable_valueUpper", void 0);
|
|
495
843
|
__decorate([
|
|
496
844
|
query('#thumb')
|
|
497
845
|
], CDSSlider.prototype, "_thumbNode", void 0);
|
|
846
|
+
__decorate([
|
|
847
|
+
query('#thumb-upper')
|
|
848
|
+
], CDSSlider.prototype, "_thumbNodeUpper", void 0);
|
|
498
849
|
__decorate([
|
|
499
850
|
query('#track')
|
|
500
851
|
], CDSSlider.prototype, "_trackNode", void 0);
|
|
@@ -554,6 +905,9 @@ __decorate([
|
|
|
554
905
|
__decorate([
|
|
555
906
|
property({ attribute: 'warn-text' })
|
|
556
907
|
], CDSSlider.prototype, "warnText", void 0);
|
|
908
|
+
__decorate([
|
|
909
|
+
property({ type: Boolean, attribute: 'hide-text-input', reflect: true })
|
|
910
|
+
], CDSSlider.prototype, "hideTextInput", void 0);
|
|
557
911
|
__decorate([
|
|
558
912
|
property({ type: Number, reflect: true })
|
|
559
913
|
], CDSSlider.prototype, "step", null);
|