@progress/kendo-angular-inputs 8.0.0-dev.202112211528 → 8.0.0-dev.202201181548

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 (61) hide show
  1. package/LICENSE.md +1 -1
  2. package/NOTICE.txt +119 -79
  3. package/README.md +1 -1
  4. package/dist/cdn/js/kendo-angular-inputs.js +1 -1
  5. package/dist/cdn/main.js +1 -1
  6. package/dist/es/colorpicker/color-gradient.component.js +3 -0
  7. package/dist/es/colorpicker/color-input.component.js +1 -1
  8. package/dist/es/colorpicker/color-palette.component.js +6 -3
  9. package/dist/es/colorpicker/colorpicker.component.js +206 -48
  10. package/dist/es/colorpicker/flatcolorpicker.component.js +7 -4
  11. package/dist/es/package-metadata.js +1 -1
  12. package/dist/es/radiobutton/radiobutton.directive.js +3 -0
  13. package/dist/es/rangeslider/rangeslider-model.js +4 -7
  14. package/dist/es/rangeslider/rangeslider.component.js +1 -1
  15. package/dist/es/slider/slider-model.js +3 -5
  16. package/dist/es/slider/slider.component.js +2 -2
  17. package/dist/es/sliders-common/slider-model.base.js +7 -10
  18. package/dist/es/sliders-common/slider-ticks.component.js +3 -10
  19. package/dist/es/sliders-common/sliders-util.js +2 -3
  20. package/dist/es/textbox/textbox.component.js +1 -1
  21. package/dist/es2015/colorpicker/color-gradient.component.js +3 -0
  22. package/dist/es2015/colorpicker/color-input.component.js +1 -1
  23. package/dist/es2015/colorpicker/color-palette.component.d.ts +1 -1
  24. package/dist/es2015/colorpicker/color-palette.component.js +6 -3
  25. package/dist/es2015/colorpicker/colorpicker.component.d.ts +22 -6
  26. package/dist/es2015/colorpicker/colorpicker.component.js +181 -69
  27. package/dist/es2015/colorpicker/flatcolorpicker.component.d.ts +2 -2
  28. package/dist/es2015/colorpicker/flatcolorpicker.component.js +7 -4
  29. package/dist/es2015/index.metadata.json +1 -1
  30. package/dist/es2015/package-metadata.js +1 -1
  31. package/dist/es2015/radiobutton/radiobutton.directive.js +3 -0
  32. package/dist/es2015/rangeslider/rangeslider-model.js +4 -7
  33. package/dist/es2015/rangeslider/rangeslider.component.js +55 -54
  34. package/dist/es2015/slider/slider-model.d.ts +1 -1
  35. package/dist/es2015/slider/slider-model.js +3 -5
  36. package/dist/es2015/slider/slider.component.js +56 -59
  37. package/dist/es2015/sliders-common/slider-model.base.js +7 -10
  38. package/dist/es2015/sliders-common/slider-ticks.component.d.ts +0 -2
  39. package/dist/es2015/sliders-common/slider-ticks.component.js +6 -10
  40. package/dist/es2015/sliders-common/sliders-util.d.ts +2 -2
  41. package/dist/es2015/sliders-common/sliders-util.js +2 -3
  42. package/dist/es2015/textbox/textbox.component.js +18 -19
  43. package/dist/fesm2015/index.js +368 -278
  44. package/dist/fesm5/index.js +268 -133
  45. package/dist/npm/colorpicker/color-gradient.component.js +3 -0
  46. package/dist/npm/colorpicker/color-input.component.js +1 -1
  47. package/dist/npm/colorpicker/color-palette.component.js +6 -3
  48. package/dist/npm/colorpicker/colorpicker.component.js +205 -47
  49. package/dist/npm/colorpicker/flatcolorpicker.component.js +7 -4
  50. package/dist/npm/package-metadata.js +1 -1
  51. package/dist/npm/radiobutton/radiobutton.directive.js +3 -0
  52. package/dist/npm/rangeslider/rangeslider-model.js +4 -7
  53. package/dist/npm/rangeslider/rangeslider.component.js +1 -1
  54. package/dist/npm/slider/slider-model.js +3 -5
  55. package/dist/npm/slider/slider.component.js +2 -2
  56. package/dist/npm/sliders-common/slider-model.base.js +6 -9
  57. package/dist/npm/sliders-common/slider-ticks.component.js +2 -9
  58. package/dist/npm/sliders-common/sliders-util.js +2 -3
  59. package/dist/npm/textbox/textbox.component.js +1 -1
  60. package/dist/systemjs/kendo-angular-inputs.js +1 -1
  61. package/package.json +5 -5
@@ -8,7 +8,7 @@ import { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor
8
8
  import { Subscription, fromEvent, interval, merge, BehaviorSubject, Subject } from 'rxjs';
9
9
  import { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';
10
10
  import { LocalizationService, L10N_PREFIX, RTL, ComponentMessages, MessageService } from '@progress/kendo-angular-l10n';
11
- import { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule, PreventableEvent } from '@progress/kendo-angular-common';
11
+ import { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule, PreventableEvent, closest } from '@progress/kendo-angular-common';
12
12
  import { validatePackage } from '@progress/kendo-licensing';
13
13
  import { browser, mobileOS, detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';
14
14
  import { IntlService } from '@progress/kendo-angular-intl';
@@ -150,15 +150,6 @@ const remainder = (dividend, divisor) => {
150
150
  * @hidden
151
151
  */
152
152
  const calculateFixedTrackSize = ({ max, min, smallStep, fixedTickWidth }) => ((max - min) / smallStep) * fixedTickWidth;
153
- /**
154
- * @hidden
155
- */
156
- const calculateTrackSize = (wrapperWidth, offset, showButtons = true) => {
157
- const BUTTONS_COUNT = 2;
158
- const trackOffset = showButtons ? parseFloat(offset) * BUTTONS_COUNT : 0;
159
- const trackWidth = wrapperWidth - trackOffset;
160
- return Math.floor(trackWidth);
161
- };
162
153
  /**
163
154
  * @hidden
164
155
  */
@@ -181,14 +172,13 @@ const calculateValueFromTick = (index, { max, min, smallStep, reverse, vertical
181
172
  /**
182
173
  * @hidden
183
174
  */
184
- const calculateHandlePosition = ({ handleWidth, trackWidth, min, max, reverse, value }) => {
185
- const halfHandleWidth = Math.floor(handleWidth / 2);
175
+ const calculateHandlePosition = ({ trackWidth, min, max, reverse, value }) => {
186
176
  const step = trackWidth / Math.abs(max - min);
187
177
  let pos = isPresent(value) ? step * (value - min) : min;
188
178
  if (reverse) {
189
179
  pos = trackWidth - pos;
190
180
  }
191
- return Math.floor(pos - halfHandleWidth);
181
+ return Math.floor(pos);
192
182
  };
193
183
  /**
194
184
  * @hidden
@@ -351,8 +341,10 @@ class SliderModelBase {
351
341
  }
352
342
  resizeTrack() {
353
343
  const orientation = this.props.vertical ? 'height' : 'width';
344
+ const altOrientation = this.props.vertical ? 'width' : 'height';
354
345
  const trackWidth = this.trackWidth();
355
- this.track.style[orientation] = `${trackWidth}px`;
346
+ this.track.parentElement.style[orientation] = `${trackWidth}px`;
347
+ this.track.parentElement.style[altOrientation] = '';
356
348
  }
357
349
  resizeTicks(ticksContainer, ticks) {
358
350
  const dimension = this.props.vertical ? "height" : "width";
@@ -363,22 +355,17 @@ class SliderModelBase {
363
355
  }
364
356
  resizeWrapper() {
365
357
  const dimension = this.props.vertical ? "height" : "width";
366
- const wrapperSize = this.elementSize(this.wrapper);
367
- const trackWidth = calculateTrackSize(wrapperSize, this.elementOffset(this.track));
368
358
  const fixedTrackWidth = calculateFixedTrackSize(this.props);
369
359
  const wrapperParentEl = this.wrapper.parentElement;
370
- if (trackWidth > fixedTrackWidth) {
371
- wrapperParentEl.style[dimension] = `${wrapperSize - (trackWidth - fixedTrackWidth)}px`;
372
- }
373
- else {
374
- wrapperParentEl.style[dimension] = `${wrapperSize + (fixedTrackWidth - trackWidth)}px`;
360
+ if (fixedTrackWidth) {
361
+ wrapperParentEl.style[dimension] = "auto";
375
362
  }
376
363
  }
377
364
  trackWidth() {
378
365
  if (this.props.fixedTickWidth) {
379
366
  return calculateFixedTrackSize(this.props);
380
367
  }
381
- return calculateTrackSize(this.elementSize(this.wrapper), this.elementOffset(this.track), this.props.buttons);
368
+ return this.elementSize(this.track.parentElement);
382
369
  }
383
370
  getTickSizes() {
384
371
  const { min, max, smallStep } = this.props;
@@ -440,16 +427,14 @@ class SliderModel extends SliderModelBase {
440
427
  max,
441
428
  reverse,
442
429
  value,
443
- trackWidth,
444
- handleWidth: dragHandle.offsetWidth
430
+ trackWidth
445
431
  });
446
432
  this.renderer.setStyle(dragHandle, position, `${this.handlePosition}px`);
447
433
  }
448
- positionSelection(dragHandle, selection) {
434
+ positionSelection(selection) {
449
435
  const { reverse, vertical } = this.props;
450
436
  const dimension = vertical ? 'height' : 'width';
451
- const handleWidth = Math.floor(dragHandle.offsetWidth / 2);
452
- let size = this.handlePosition + handleWidth;
437
+ let size = this.handlePosition;
453
438
  if (reverse) {
454
439
  size = this.trackWidth() - size;
455
440
  }
@@ -482,7 +467,7 @@ const containsFocus = (hostElement, contender) => hostElement && contender && (h
482
467
  /**
483
468
  * @hidden
484
469
  */
485
- const closest = (node, predicate) => {
470
+ const closest$1 = (node, predicate) => {
486
471
  while (node && !predicate(node)) {
487
472
  node = node.parentNode;
488
473
  }
@@ -496,7 +481,7 @@ const packageMetadata = {
496
481
  name: '@progress/kendo-angular-inputs',
497
482
  productName: 'Kendo UI for Angular',
498
483
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
499
- publishDate: 1640100237,
484
+ publishDate: 1642520654,
500
485
  version: '',
501
486
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
502
487
  };
@@ -1068,7 +1053,7 @@ let SliderComponent = SliderComponent_1 = class SliderComponent extends SliderBa
1068
1053
  model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));
1069
1054
  }
1070
1055
  model.positionHandle(dragHandleEl);
1071
- model.positionSelection(dragHandleEl, selectionEl);
1056
+ model.positionSelection(selectionEl);
1072
1057
  if (!animate) {
1073
1058
  this.hostElement.nativeElement.getBoundingClientRect();
1074
1059
  this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');
@@ -1246,69 +1231,66 @@ SliderComponent = SliderComponent_1 = __decorate([
1246
1231
  [class.k-slider-bottomright]="tickPlacement === 'after'"
1247
1232
  [kendoEventsOutsideAngular]="{ click: onWrapClick, keydown: onKeyDown }"
1248
1233
  >
1249
- <span
1250
- #decreaseButton
1251
- *ngIf="showButtons"
1252
- class="k-button k-button-decrease"
1234
+ <button *ngIf="showButtons" type="button" #decreaseButton
1235
+ class="k-button-decrease k-button k-button-md k-rounded-full k-button-rectangle k-button-solid k-button-solid-base k-icon-button"
1253
1236
  [title]="decrementMessage"
1254
- role="presentation"
1255
- >
1256
- <span class="k-icon"
1257
- [class.k-i-arrow-w]="!vertical"
1258
- [class.k-i-arrow-s]="vertical"
1237
+ [attr.tabindex]="-1"
1238
+ role="presentation">
1239
+ <span class="k-button-icon k-icon"
1240
+ [class.k-i-arrow-w]="!vertical"
1241
+ [class.k-i-arrow-s]="vertical">
1242
+ </span>
1243
+ </button>
1244
+ <div class="k-slider-track-wrap">
1245
+ <ul kendoSliderTicks
1246
+ #ticks
1247
+ *ngIf="tickPlacement !== 'none'"
1248
+ [tickTitle]="title"
1249
+ [vertical]="vertical"
1250
+ [step]="smallStep"
1251
+ [largeStep]="largeStep"
1252
+ [min]="min"
1253
+ [max]="max"
1254
+ [labelTemplate]="labelTemplate?.templateRef"
1255
+ [attr.aria-hidden]="true"
1259
1256
  >
1260
- </span>
1261
- </span>
1262
- <span
1263
- *ngIf="showButtons"
1264
- #increaseButton
1265
- class="k-button k-button-increase"
1257
+ </ul>
1258
+ <div #track class="k-slider-track">
1259
+ <div #sliderSelection class="k-slider-selection">
1260
+ </div>
1261
+ <a #draghandle
1262
+ role="slider"
1263
+ [attr.aria-valuemin]="min"
1264
+ [attr.aria-valuemax]="max"
1265
+ [attr.aria-valuenow]="currentValue"
1266
+ [attr.aria-valuetext]="currentValue"
1267
+ [attr.aria-disabled]="disabled ? true : undefined"
1268
+ [attr.aria-readonly]="readonly ? true : undefined"
1269
+ [attr.aria-orientation]="vertical ? 'vertical' : 'horizontal'"
1270
+ [style.touch-action]="isDisabled ? '' : 'none'"
1271
+ class="k-draghandle"
1272
+ [title]="dragHandleMessage"
1273
+ [attr.tabindex]="disabled ? '-1' : tabIndex"
1274
+ [id]="focusableId"
1275
+ kendoDraggable
1276
+ (kendoPress)="ifEnabled(handleDragPress, $event)"
1277
+ (kendoDrag)="ifEnabled(onHandleDrag, $event)"
1278
+ (kendoRelease)="ifEnabled(onHandleRelease, $event)"
1279
+ ></a>
1280
+ </div>
1281
+ </div>
1282
+ <button *ngIf="showButtons" type="button" #increaseButton
1283
+ class="k-button-increase k-button k-button-md k-rounded-full k-button-rectangle k-button-solid k-button-solid-base k-icon-button"
1266
1284
  [title]="incrementMessage"
1267
1285
  (click)="$event.preventDefault()"
1286
+ [attr.tabindex]="-1"
1268
1287
  [attr.aria-label]="currentValue"
1269
- >
1270
- <span class="k-icon"
1271
- [class.k-i-arrow-e]="!vertical"
1272
- [class.k-i-arrow-n]="vertical"
1273
- >
1274
- </span>
1275
- </span>
1276
- <ul kendoSliderTicks
1277
- #ticks
1278
- *ngIf="tickPlacement !== 'none'"
1279
- [tickTitle]="title"
1280
- [vertical]="vertical"
1281
- [step]="smallStep"
1282
- [largeStep]="largeStep"
1283
- [min]="min"
1284
- [max]="max"
1285
- [labelTemplate]="labelTemplate?.templateRef"
1286
- [attr.aria-hidden]="true"
1287
- >
1288
- </ul>
1289
- <div #track class="k-slider-track">
1290
- <div #sliderSelection class="k-slider-selection">
1291
- </div>
1292
- <a #draghandle
1293
- role="slider"
1294
- [attr.aria-valuemin]="min"
1295
- [attr.aria-valuemax]="max"
1296
- [attr.aria-valuenow]="currentValue"
1297
- [attr.aria-valuetext]="currentValue"
1298
- [attr.aria-disabled]="disabled ? true : undefined"
1299
- [attr.aria-readonly]="readonly ? true : undefined"
1300
- [attr.aria-orientation]="vertical ? 'vertical' : 'horizontal'"
1301
- [style.touch-action]="isDisabled ? '' : 'none'"
1302
- class="k-draghandle"
1303
- [title]="dragHandleMessage"
1304
- [attr.tabindex]="disabled ? '-1' : tabIndex"
1305
- [id]="focusableId"
1306
- kendoDraggable
1307
- (kendoPress)="ifEnabled(handleDragPress, $event)"
1308
- (kendoDrag)="ifEnabled(onHandleDrag, $event)"
1309
- (kendoRelease)="ifEnabled(onHandleRelease, $event)"
1310
- ></a>
1311
- </div>
1288
+ role="presentation">
1289
+ <span class="k-button-icon k-icon"
1290
+ [class.k-i-arrow-e]="!vertical"
1291
+ [class.k-i-arrow-n]="vertical">
1292
+ </span>
1293
+ </button>
1312
1294
  <kendo-resize-sensor (resize)="sizeComponent(false)"></kendo-resize-sensor>
1313
1295
  </div>
1314
1296
  `
@@ -1340,8 +1322,7 @@ class RangeSliderModel extends SliderModelBase {
1340
1322
  max,
1341
1323
  reverse,
1342
1324
  value,
1343
- trackWidth,
1344
- handleWidth: dragHandle.offsetWidth
1325
+ trackWidth
1345
1326
  });
1346
1327
  this.renderer.setStyle(dragHandle, position, `${this.startHandlePosition}px`);
1347
1328
  }
@@ -1351,8 +1332,7 @@ class RangeSliderModel extends SliderModelBase {
1351
1332
  max,
1352
1333
  reverse,
1353
1334
  value,
1354
- trackWidth,
1355
- handleWidth: dragHandle.offsetWidth
1335
+ trackWidth
1356
1336
  });
1357
1337
  this.renderer.setStyle(dragHandle, position, `${this.endHandlePosition}px`);
1358
1338
  }
@@ -1361,12 +1341,11 @@ class RangeSliderModel extends SliderModelBase {
1361
1341
  const { reverse, vertical } = this.props;
1362
1342
  const dimension = vertical ? 'height' : 'width';
1363
1343
  const position = vertical ? 'bottom' : reverse ? 'right' : 'left';
1364
- const handleWidth = Math.floor(dragHandle.offsetWidth / 2);
1365
1344
  const size = Math.abs(this.endHandlePosition - this.startHandlePosition);
1366
1345
  const currentSelectionPosition = vertical ? dragHandle.style.bottom : dragHandle.style.left;
1367
1346
  this.renderer.setStyle(selection, dimension, `${size}px`);
1368
- this.renderer.setStyle(selection, position, reverse ? this.trackWidth() - parseFloat(currentSelectionPosition) - handleWidth + 'px'
1369
- : parseFloat(currentSelectionPosition) + handleWidth + 'px');
1347
+ this.renderer.setStyle(selection, position, reverse ? this.trackWidth() - parseFloat(currentSelectionPosition) + 'px'
1348
+ : parseFloat(currentSelectionPosition) + 'px');
1370
1349
  }
1371
1350
  }
1372
1351
 
@@ -1799,62 +1778,63 @@ RangeSliderComponent = RangeSliderComponent_1 = __decorate([
1799
1778
  [class.k-slider-bottomright]="tickPlacement === 'after'"
1800
1779
  [kendoEventsOutsideAngular]="{ click: onWrapClick, keydown: onKeyDown }"
1801
1780
  >
1802
- <ul kendoSliderTicks
1803
- #ticks
1804
- *ngIf="tickPlacement !== 'none'"
1805
- [tickTitle]="title"
1806
- [vertical]="vertical"
1807
- [step]="smallStep"
1808
- [largeStep]="largeStep"
1809
- [min]="min"
1810
- [max]="max"
1811
- [labelTemplate]="labelTemplate?.templateRef"
1812
- [attr.aria-hidden]="true"
1813
- >
1814
- </ul>
1815
- <div #track class="k-slider-track">
1816
- <div #sliderSelection class="k-slider-selection">
1781
+ <div class="k-slider-track-wrap">
1782
+ <ul kendoSliderTicks
1783
+ #ticks
1784
+ *ngIf="tickPlacement !== 'none'"
1785
+ [tickTitle]="title"
1786
+ [vertical]="vertical"
1787
+ [step]="smallStep"
1788
+ [largeStep]="largeStep"
1789
+ [min]="min"
1790
+ [max]="max"
1791
+ [labelTemplate]="labelTemplate?.templateRef"
1792
+ [attr.aria-hidden]="true"
1793
+ >
1794
+ </ul>
1795
+ <div #track class="k-slider-track">
1796
+ <div #sliderSelection class="k-slider-selection">
1797
+ </div>
1798
+ <a #draghandleStart
1799
+ role="slider"
1800
+ [id]="startHandleId"
1801
+ [attr.tabindex]="disabled ? undefined : tabindex"
1802
+ [attr.aria-valuemin]="min"
1803
+ [attr.aria-valuemax]="max"
1804
+ [attr.aria-valuenow]="value ? value[0] : null"
1805
+ [attr.aria-valuetext]="valueText"
1806
+ [attr.aria-disabled]="disabled ? true : undefined"
1807
+ [attr.aria-readonly]="readonly ? true : undefined"
1808
+ [attr.aria-orientation]="vertical ? 'vertical' : 'horizontal'"
1809
+ [style.touch-action]="isDisabled ? '' : 'none'"
1810
+ class="k-draghandle"
1811
+ [title]="textFor('dragHandleStart')"
1812
+ kendoDraggable
1813
+ (kendoPress)="ifEnabled(handleDragPress ,$event)"
1814
+ (kendoDrag)="ifEnabled(onHandleDrag ,$event)"
1815
+ (kendoRelease)="ifEnabled(onHandleRelease, $event)"
1816
+ ></a>
1817
+ <a #draghandleEnd
1818
+ role="slider"
1819
+ [id]="endHandleId"
1820
+ [attr.tabindex]="disabled ? undefined : tabindex"
1821
+ [attr.aria-valuemin]="min"
1822
+ [attr.aria-valuemax]="max"
1823
+ [attr.aria-valuenow]="value ? value[1] : null"
1824
+ [attr.aria-valuetext]="valueText"
1825
+ [attr.aria-disabled]="disabled ? true : undefined"
1826
+ [attr.aria-readonly]="readonly ? true : undefined"
1827
+ [attr.aria-orientation]="vertical ? 'vertical' : 'horizontal'"
1828
+ [style.touch-action]="isDisabled ? '' : 'none'"
1829
+ class="k-draghandle"
1830
+ [title]="textFor('dragHandleEnd')"
1831
+ kendoDraggable
1832
+ (kendoPress)="ifEnabled(handleDragPress ,$event)"
1833
+ (kendoDrag)="ifEnabled(onHandleDrag ,$event)"
1834
+ (kendoRelease)="ifEnabled(onHandleRelease, $event)"
1835
+ ></a>
1817
1836
  </div>
1818
- <a #draghandleStart
1819
- role="slider"
1820
- [id]="startHandleId"
1821
- [attr.tabindex]="disabled ? undefined : tabindex"
1822
- [attr.aria-valuemin]="min"
1823
- [attr.aria-valuemax]="max"
1824
- [attr.aria-valuenow]="value ? value[0] : null"
1825
- [attr.aria-valuetext]="valueText"
1826
- [attr.aria-disabled]="disabled ? true : undefined"
1827
- [attr.aria-readonly]="readonly ? true : undefined"
1828
- [attr.aria-orientation]="vertical ? 'vertical' : 'horizontal'"
1829
- [style.touch-action]="isDisabled ? '' : 'none'"
1830
- class="k-draghandle"
1831
- [title]="textFor('dragHandleStart')"
1832
- kendoDraggable
1833
- (kendoPress)="ifEnabled(handleDragPress ,$event)"
1834
- (kendoDrag)="ifEnabled(onHandleDrag ,$event)"
1835
- (kendoRelease)="ifEnabled(onHandleRelease, $event)"
1836
- ></a>
1837
- <a #draghandleEnd
1838
- role="slider"
1839
- [id]="endHandleId"
1840
- [attr.tabindex]="disabled ? undefined : tabindex"
1841
- [attr.aria-valuemin]="min"
1842
- [attr.aria-valuemax]="max"
1843
- [attr.aria-valuenow]="value ? value[1] : null"
1844
- [attr.aria-valuetext]="valueText"
1845
- [attr.aria-disabled]="disabled ? true : undefined"
1846
- [attr.aria-readonly]="readonly ? true : undefined"
1847
- [attr.aria-orientation]="vertical ? 'vertical' : 'horizontal'"
1848
- [style.touch-action]="isDisabled ? '' : 'none'"
1849
- class="k-draghandle"
1850
- [title]="textFor('dragHandleEnd')"
1851
- kendoDraggable
1852
- (kendoPress)="ifEnabled(handleDragPress ,$event)"
1853
- (kendoDrag)="ifEnabled(onHandleDrag ,$event)"
1854
- (kendoRelease)="ifEnabled(onHandleRelease, $event)"
1855
- ></a>
1856
1837
  </div>
1857
-
1858
1838
  <kendo-resize-sensor (resize)="sizeComponent()"></kendo-resize-sensor>
1859
1839
  </div>
1860
1840
  `
@@ -5095,8 +5075,10 @@ class SliderTick {
5095
5075
  * @hidden
5096
5076
  */
5097
5077
  let SliderTicksComponent = class SliderTicksComponent {
5098
- constructor(rtl) {
5099
- this.rtl = rtl;
5078
+ /**
5079
+ * @hidden
5080
+ */
5081
+ constructor() {
5100
5082
  this.wrapperClasses = 'k-reset k-slider-items';
5101
5083
  this.ticks = [];
5102
5084
  }
@@ -5119,9 +5101,6 @@ let SliderTicksComponent = class SliderTicksComponent {
5119
5101
  result[i].classes['k-tick-large'] = true;
5120
5102
  }
5121
5103
  }
5122
- if (this.rtl || this.vertical) {
5123
- result = result.reverse();
5124
- }
5125
5104
  if (result.length > 0) {
5126
5105
  Object.assign(result[0].classes, this.endTickClasses(true));
5127
5106
  Object.assign(result[result.length - 1].classes, this.endTickClasses(false));
@@ -5193,9 +5172,7 @@ SliderTicksComponent = __decorate([
5193
5172
  {{ tickTitle(value) }}
5194
5173
  </ng-template>
5195
5174
  `
5196
- }),
5197
- __param(0, Optional()), __param(0, Inject(RTL)),
5198
- __metadata("design:paramtypes", [Boolean])
5175
+ })
5199
5176
  ], SliderTicksComponent);
5200
5177
 
5201
5178
  /**
@@ -6042,7 +6019,7 @@ let TextBoxComponent = TextBoxComponent_1 = class TextBoxComponent {
6042
6019
  return;
6043
6020
  }
6044
6021
  if (tabbing) {
6045
- const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
6022
+ const closestTextbox = closest$1(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
6046
6023
  if (!closestTextbox) {
6047
6024
  this.handleBlur();
6048
6025
  }
@@ -6446,9 +6423,8 @@ TextBoxComponent = TextBoxComponent_1 = __decorate([
6446
6423
  [ngTemplateOutlet]="prefixTemplate?.templateRef">
6447
6424
  </ng-template>
6448
6425
  </span>
6449
- <input
6426
+ <input #input
6450
6427
  class="k-input-inner"
6451
- #input
6452
6428
  [id]="focusableId"
6453
6429
  [disabled]="disabled"
6454
6430
  [readonly]="readonly"
@@ -6460,24 +6436,24 @@ TextBoxComponent = TextBoxComponent_1 = __decorate([
6460
6436
  [kendoEventsOutsideAngular]="{
6461
6437
  focus: handleInputFocus,
6462
6438
  blur: handleInputBlur,
6463
- input: handleInput}"/>
6464
- <span class="k-input-suffix">
6465
- <span *ngIf="hasErrors" [ngClass]="errorIconClasses"></span>
6466
- <span *ngIf="isSuccessful" [ngClass]="successIconClasses"></span>
6467
- <span
6468
- role="button"
6469
- class="k-clear-value"
6470
- *ngIf="showClearButton"
6471
- (click)="clearValue()"
6472
- (mousedown)="$event.preventDefault()"
6473
- [tabindex]="tabIndex"
6474
- [attr.aria-label]="clearTitle()"
6475
- [title]="clearTitle()"
6476
- (keydown.enter)="clearValue($event)"
6477
- (keydown.space)="clearValue($event)"
6478
- >
6439
+ input: handleInput}"
6440
+ />
6441
+ <span
6442
+ role="button"
6443
+ class="k-clear-value"
6444
+ *ngIf="showClearButton"
6445
+ (click)="clearValue()"
6446
+ (mousedown)="$event.preventDefault()"
6447
+ [tabindex]="tabIndex"
6448
+ [attr.aria-label]="clearTitle()"
6449
+ [title]="clearTitle()"
6450
+ (keydown.enter)="clearValue($event)"
6451
+ (keydown.space)="clearValue($event)">
6479
6452
  <span [ngClass]="clearButtonClasses"></span>
6480
- </span>
6453
+ </span>
6454
+ <span *ngIf="hasErrors" [ngClass]="errorIconClasses"></span>
6455
+ <span *ngIf="isSuccessful" [ngClass]="successIconClasses"></span>
6456
+ <span class="k-input-suffix">
6481
6457
  <ng-template
6482
6458
  *ngIf="suffixTemplate"
6483
6459
  [ngTemplateOutlet]="suffixTemplate?.templateRef">
@@ -7037,7 +7013,7 @@ let TextAreaComponent = TextAreaComponent_1 = class TextAreaComponent extends Te
7037
7013
  return;
7038
7014
  }
7039
7015
  if (tabbing) {
7040
- const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
7016
+ const closestTextbox = closest$1(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
7041
7017
  if (!closestTextbox) {
7042
7018
  this.handleBlur();
7043
7019
  }
@@ -8122,7 +8098,7 @@ ColorInputComponent = __decorate([
8122
8098
  <input
8123
8099
  #hexInput
8124
8100
  [id]="focusableId"
8125
- class="k-textbox k-hex-value"
8101
+ class="k-input k-textbox k-input-solid k-input-md k-rounded-md k-hex-value"
8126
8102
  [disabled]="disabled"
8127
8103
  [readonly]="readonly"
8128
8104
  [value]="hex || ''"
@@ -8288,6 +8264,7 @@ let ColorGradientComponent = ColorGradientComponent_1 = class ColorGradientCompo
8288
8264
  this.updateValues = new Subject();
8289
8265
  this.notifyNgChanged = () => { };
8290
8266
  this.notifyNgTouched = () => { };
8267
+ validatePackage(packageMetadata);
8291
8268
  this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {
8292
8269
  this.direction = rtl ? 'rtl' : 'ltr';
8293
8270
  });
@@ -8925,6 +8902,29 @@ ColorGradientComponent = ColorGradientComponent_1 = __decorate([
8925
8902
  LocalizationService])
8926
8903
  ], ColorGradientComponent);
8927
8904
 
8905
+ /**
8906
+ * @hidden
8907
+ */
8908
+ let ColorPaletteLocalizationService = class ColorPaletteLocalizationService extends LocalizationService {
8909
+ constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {
8910
+ super(prefix, messageService, _rtl);
8911
+ this.flatColorPickerLocalization = flatColorPickerLocalization;
8912
+ }
8913
+ get(shortKey) {
8914
+ if (this.flatColorPickerLocalization) {
8915
+ return this.flatColorPickerLocalization.get(shortKey);
8916
+ }
8917
+ return super.get(shortKey);
8918
+ }
8919
+ };
8920
+ ColorPaletteLocalizationService = __decorate([
8921
+ __param(0, Inject(L10N_PREFIX)),
8922
+ __param(1, Optional()),
8923
+ __param(2, Optional()), __param(2, Inject(RTL)),
8924
+ __param(3, Optional()), __param(3, Inject(FlatColorPickerLocalizationService)),
8925
+ __metadata("design:paramtypes", [String, MessageService, Boolean, FlatColorPickerLocalizationService])
8926
+ ], ColorPaletteLocalizationService);
8927
+
8928
8928
  /**
8929
8929
  * @hidden
8930
8930
  */
@@ -8987,29 +8987,6 @@ ColorPaletteService = __decorate([
8987
8987
  Injectable()
8988
8988
  ], ColorPaletteService);
8989
8989
 
8990
- /**
8991
- * @hidden
8992
- */
8993
- let ColorPaletteLocalizationService = class ColorPaletteLocalizationService extends LocalizationService {
8994
- constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {
8995
- super(prefix, messageService, _rtl);
8996
- this.flatColorPickerLocalization = flatColorPickerLocalization;
8997
- }
8998
- get(shortKey) {
8999
- if (this.flatColorPickerLocalization) {
9000
- return this.flatColorPickerLocalization.get(shortKey);
9001
- }
9002
- return super.get(shortKey);
9003
- }
9004
- };
9005
- ColorPaletteLocalizationService = __decorate([
9006
- __param(0, Inject(L10N_PREFIX)),
9007
- __param(1, Optional()),
9008
- __param(2, Optional()), __param(2, Inject(RTL)),
9009
- __param(3, Optional()), __param(3, Inject(FlatColorPickerLocalizationService)),
9010
- __metadata("design:paramtypes", [String, MessageService, Boolean, FlatColorPickerLocalizationService])
9011
- ], ColorPaletteLocalizationService);
9012
-
9013
8990
  var ColorPaletteComponent_1;
9014
8991
  const DEFAULT_TILE_SIZE = 24;
9015
8992
  const DEFAULT_COLUMNS_COUNT = 10;
@@ -9083,6 +9060,7 @@ let ColorPaletteComponent = ColorPaletteComponent_1 = class ColorPaletteComponen
9083
9060
  this._tabindex = 0;
9084
9061
  this.notifyNgTouched = () => { };
9085
9062
  this.notifyNgChanged = () => { };
9063
+ validatePackage(packageMetadata);
9086
9064
  this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {
9087
9065
  this.direction = rtl ? 'rtl' : 'ltr';
9088
9066
  });
@@ -9675,9 +9653,9 @@ var FlatColorPickerComponent_1;
9675
9653
  * through a gradient that renders an hsv canvas. It supports previewing the selected color, reverting it to its previous state or clearing it completely.
9676
9654
  */
9677
9655
  let FlatColorPickerComponent = FlatColorPickerComponent_1 = class FlatColorPickerComponent {
9678
- constructor(service, host, localizationService, cdr, renderer, ngZone) {
9679
- this.service = service;
9656
+ constructor(host, service, localizationService, cdr, renderer, ngZone) {
9680
9657
  this.host = host;
9658
+ this.service = service;
9681
9659
  this.localizationService = localizationService;
9682
9660
  this.cdr = cdr;
9683
9661
  this.renderer = renderer;
@@ -9760,6 +9738,7 @@ let FlatColorPickerComponent = FlatColorPickerComponent_1 = class FlatColorPicke
9760
9738
  this.subscriptions = new Subscription();
9761
9739
  this.notifyNgChanged = () => { };
9762
9740
  this.notifyNgTouched = () => { };
9741
+ validatePackage(packageMetadata);
9763
9742
  this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
9764
9743
  this.direction = rtl ? 'rtl' : 'ltr';
9765
9744
  });
@@ -10233,8 +10212,8 @@ FlatColorPickerComponent = FlatColorPickerComponent_1 = __decorate([
10233
10212
  </div>
10234
10213
  `
10235
10214
  }),
10236
- __metadata("design:paramtypes", [FlatColorPickerService,
10237
- ElementRef,
10215
+ __metadata("design:paramtypes", [ElementRef,
10216
+ FlatColorPickerService,
10238
10217
  LocalizationService,
10239
10218
  ChangeDetectorRef,
10240
10219
  Renderer2,
@@ -10242,7 +10221,7 @@ FlatColorPickerComponent = FlatColorPickerComponent_1 = __decorate([
10242
10221
  ], FlatColorPickerComponent);
10243
10222
 
10244
10223
  var ColorPickerComponent_1;
10245
- let serial$2 = 0;
10224
+ const DOM_FOCUS_EVENTS = ['focus', 'blur'];
10246
10225
  /**
10247
10226
  * Represents the [Kendo UI ColorPicker component for Angular]({% slug overview_colorpicker %}).
10248
10227
  *
@@ -10258,10 +10237,7 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10258
10237
  this.ngZone = ngZone;
10259
10238
  this.renderer = renderer;
10260
10239
  this.hostClasses = true;
10261
- /**
10262
- * @hidden
10263
- */
10264
- this.focusableId = `k-colorpicker-${serial$2++}`;
10240
+ this.role = 'listbox';
10265
10241
  /**
10266
10242
  * Specifies the views that will be rendered in the popup.
10267
10243
  * By default both the gradient and palette views will be rendered.
@@ -10357,6 +10333,10 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10357
10333
  * Used to provide a two-way binding for the `activeView` property.
10358
10334
  */
10359
10335
  this.activeViewChange = new EventEmitter();
10336
+ /**
10337
+ * Indicates whether the ColorPicker wrapper is focused.
10338
+ */
10339
+ this.isFocused = false;
10360
10340
  this._tabindex = 0;
10361
10341
  this._popupSettings = { animate: true };
10362
10342
  this._paletteSettings = {};
@@ -10364,13 +10344,39 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10364
10344
  this._size = 'medium';
10365
10345
  this._rounded = 'medium';
10366
10346
  this._fillMode = 'solid';
10347
+ this.subscriptions = new Subscription();
10367
10348
  this.notifyNgTouched = () => { };
10368
10349
  this.notifyNgChanged = () => { };
10350
+ this.domFocusListener = (event) => event.stopImmediatePropagation();
10369
10351
  validatePackage(packageMetadata);
10370
10352
  this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
10371
10353
  this.direction = rtl ? 'rtl' : 'ltr';
10372
10354
  });
10373
10355
  }
10356
+ get focusedClass() {
10357
+ return this.isFocused;
10358
+ }
10359
+ get disabledClass() {
10360
+ return this.disabled;
10361
+ }
10362
+ get ariaReadonly() {
10363
+ return this.readonly;
10364
+ }
10365
+ get ariaExpanded() {
10366
+ return this.isOpen;
10367
+ }
10368
+ get hostTabindex() {
10369
+ return this.tabindex;
10370
+ }
10371
+ /**
10372
+ * @hidden
10373
+ */
10374
+ set view(view) {
10375
+ this.views = [view];
10376
+ }
10377
+ get view() {
10378
+ return (this.views && this.views.length > 0) ? this.views[0] : null;
10379
+ }
10374
10380
  /**
10375
10381
  * Specifies the value of the initially selected color.
10376
10382
  */
@@ -10506,6 +10512,9 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10506
10512
  stylingInputs.forEach(input => {
10507
10513
  this.handleClasses(this[input], input);
10508
10514
  });
10515
+ this.setHostElementAriaLabel();
10516
+ this.handleHostId();
10517
+ this.initDomEvents();
10509
10518
  }
10510
10519
  ngOnChanges(changes) {
10511
10520
  if (changes.format && changes.format.currentValue === 'name') {
@@ -10515,18 +10524,17 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10515
10524
  this.format = 'rgba';
10516
10525
  this.value = parseColor$1(this.value, this.format, this.gradientSettings.opacity);
10517
10526
  }
10527
+ if (isChanged('value', changes)) {
10528
+ this.setHostElementAriaLabel();
10529
+ }
10518
10530
  }
10519
10531
  ngOnDestroy() {
10520
10532
  this.closePopup();
10521
10533
  if (this.dynamicRTLSubscription) {
10522
10534
  this.dynamicRTLSubscription.unsubscribe();
10523
10535
  }
10524
- }
10525
- /**
10526
- * @hidden
10527
- */
10528
- get colorPickerAriaLabel() {
10529
- return this.value ? this.value : this.localizationService.get('colorPickerNoColor');
10536
+ this.subscriptions.unsubscribe();
10537
+ this.handleDomEvents('remove', DOM_FOCUS_EVENTS);
10530
10538
  }
10531
10539
  /**
10532
10540
  * @hidden
@@ -10538,28 +10546,33 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10538
10546
  * @hidden
10539
10547
  */
10540
10548
  togglePopup() {
10541
- this.toggleWithEvents(!this.isOpen);
10542
10549
  this.focus();
10550
+ this.toggleWithEvents(!this.isOpen);
10543
10551
  }
10544
10552
  /**
10545
10553
  * @hidden
10546
10554
  */
10547
- handleActiveColorClick() {
10555
+ handleWrapperClick(event) {
10556
+ if (this.disabled) {
10557
+ return;
10558
+ }
10548
10559
  this.focus();
10549
- const event = new ActiveColorClickEvent(this.value);
10550
- this.activeColorClick.emit(event);
10551
- if (!event.isOpenPrevented() || this.isOpen) {
10552
- this.togglePopup();
10560
+ if (closest(event.target, (element) => element === this.activeColor.nativeElement)) {
10561
+ const event = new ActiveColorClickEvent(this.value);
10562
+ this.activeColorClick.emit(event);
10563
+ if (!event.isOpenPrevented() || this.isOpen) {
10564
+ this.toggleWithEvents(!this.isOpen);
10565
+ }
10566
+ return;
10553
10567
  }
10568
+ this.toggleWithEvents(!this.isOpen);
10554
10569
  }
10555
10570
  /**
10556
10571
  * Focuses the wrapper of the ColorPicker.
10557
10572
  */
10558
10573
  focus() {
10559
- if (this.disabled) {
10560
- return;
10561
- }
10562
- this.wrapper.nativeElement.focus();
10574
+ this.isFocused = true;
10575
+ this.host.nativeElement.focus();
10563
10576
  }
10564
10577
  /**
10565
10578
  * @hidden
@@ -10568,14 +10581,18 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10568
10581
  if (this.isFocused) {
10569
10582
  return;
10570
10583
  }
10571
- this.isFocused = true;
10572
- this.onFocus.emit();
10584
+ this.ngZone.run(() => {
10585
+ this.focus();
10586
+ this.onFocus.emit();
10587
+ });
10573
10588
  }
10574
10589
  /**
10575
10590
  * Blurs the ColorPicker.
10576
10591
  */
10577
10592
  blur() {
10578
- this.wrapper.nativeElement.blur();
10593
+ this.isFocused = false;
10594
+ this.host.nativeElement.blur();
10595
+ this.notifyNgTouched();
10579
10596
  }
10580
10597
  /**
10581
10598
  * @hidden
@@ -10584,9 +10601,16 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10584
10601
  if (this.isOpen) {
10585
10602
  return;
10586
10603
  }
10587
- this.isFocused = false;
10588
- this.onBlur.emit();
10589
- this.notifyNgTouched();
10604
+ this.ngZone.run(() => {
10605
+ this.onBlur.emit();
10606
+ this.isFocused = false;
10607
+ });
10608
+ }
10609
+ /**
10610
+ * @hidden
10611
+ */
10612
+ arrowButtonMouseDown(ev) {
10613
+ ev.preventDefault();
10590
10614
  }
10591
10615
  /**
10592
10616
  * Clears the value of the ColorPicker.
@@ -10596,6 +10620,7 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10596
10620
  return;
10597
10621
  }
10598
10622
  this._value = undefined;
10623
+ this.setHostElementAriaLabel();
10599
10624
  this.notifyNgChanged(undefined);
10600
10625
  }
10601
10626
  /**
@@ -10623,6 +10648,7 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10623
10648
  if (valueChange) {
10624
10649
  this.value = parsedColor;
10625
10650
  this.valueChange.emit(parsedColor);
10651
+ this.setHostElementAriaLabel();
10626
10652
  this.notifyNgChanged(parsedColor);
10627
10653
  }
10628
10654
  }
@@ -10669,7 +10695,9 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10669
10695
  handleWrapperKeyDown(event) {
10670
10696
  if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.Enter) {
10671
10697
  event.preventDefault();
10672
- this.toggleWithEvents(true);
10698
+ this.ngZone.run(() => {
10699
+ this.toggleWithEvents(true);
10700
+ });
10673
10701
  }
10674
10702
  }
10675
10703
  /**
@@ -10678,14 +10706,14 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10678
10706
  handlePopupKeyDown(event) {
10679
10707
  if (event.keyCode === Keys.Escape) {
10680
10708
  this.toggleWithEvents(false);
10681
- this.wrapper.nativeElement.focus();
10709
+ this.host.nativeElement.focus();
10682
10710
  }
10683
10711
  if (event.keyCode === Keys.Tab) {
10684
10712
  const currentElement = event.shiftKey ? this.firstFocusableElement.nativeElement : this.lastFocusableElement.nativeElement;
10685
10713
  const nextElement = event.shiftKey ? this.lastFocusableElement.nativeElement : this.firstFocusableElement.nativeElement;
10686
10714
  if (event.target === currentElement) {
10687
10715
  event.preventDefault();
10688
- nextElement.nativeElement.focus();
10716
+ nextElement.focus();
10689
10717
  }
10690
10718
  }
10691
10719
  }
@@ -10696,6 +10724,10 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10696
10724
  isEmpty() {
10697
10725
  return false;
10698
10726
  }
10727
+ setHostElementAriaLabel() {
10728
+ const ariaLabelValue = `${this.value ? this.value : this.localizationService.get('colorPickerNoColor')}`;
10729
+ this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);
10730
+ }
10699
10731
  handleClasses(value, input) {
10700
10732
  const elem = this.host.nativeElement;
10701
10733
  const classes = getStylingClasses('picker', input, this[input], value);
@@ -10707,9 +10739,9 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10707
10739
  }
10708
10740
  }
10709
10741
  popupBlurInvalid(ev) {
10710
- const focusInPopupElement = this.popupRef.popupElement.contains(ev.relatedTarget);
10711
- const wrapperClicked = ev.relatedTarget === this.wrapper.nativeElement;
10712
- return !this.isFocused || wrapperClicked || focusInPopupElement;
10742
+ const focusInFlatColorPickerElement = this.popupRef.popupElement.contains(ev.relatedTarget);
10743
+ const hostClicked = closest(ev.relatedTarget, (element) => element === this.host.nativeElement);
10744
+ return hostClicked || focusInFlatColorPickerElement;
10713
10745
  }
10714
10746
  toggleWithEvents(open) {
10715
10747
  const sameState = this.isOpen === open;
@@ -10733,12 +10765,12 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10733
10765
  }
10734
10766
  }
10735
10767
  focusFirstElement() {
10736
- this.ngZone.runOutsideAngular(() => {
10737
- setTimeout(() => {
10768
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
10769
+ if (this.flatColorPicker) {
10738
10770
  const elementToFocus = this.flatColorPicker.gradient ? this.flatColorPicker.gradient.gradientDragHandle :
10739
10771
  this.flatColorPicker.palette.host;
10740
10772
  elementToFocus.nativeElement.focus();
10741
- });
10773
+ }
10742
10774
  });
10743
10775
  }
10744
10776
  openPopup() {
@@ -10746,7 +10778,7 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10746
10778
  const anchorPosition = { horizontal: horizontalAlign, vertical: "bottom" };
10747
10779
  const popupPosition = { horizontal: horizontalAlign, vertical: "top" };
10748
10780
  this.popupRef = this.popupService.open({
10749
- anchor: this.wrapper,
10781
+ anchor: this.activeColor,
10750
10782
  animate: this.popupSettings.animate,
10751
10783
  appendTo: this.popupSettings.appendTo,
10752
10784
  popupAlign: popupPosition,
@@ -10758,7 +10790,7 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10758
10790
  this.popupRef.popupAnchorViewportLeave.subscribe(() => {
10759
10791
  this.toggleWithEvents(false);
10760
10792
  if (!this.isOpen) {
10761
- this.wrapper.nativeElement.focus({
10793
+ this.host.nativeElement.focus({
10762
10794
  preventScroll: true
10763
10795
  });
10764
10796
  }
@@ -10786,6 +10818,51 @@ let ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {
10786
10818
  }
10787
10819
  return this.gradientSettings.opacity ? this.flatColorPicker.gradient.inputs.opacityInput.numericInput : this.flatColorPicker.gradient.inputs.blueInput;
10788
10820
  }
10821
+ handleDomEvents(action, events) {
10822
+ const hostElement = this.host.nativeElement;
10823
+ events.forEach(ev => hostElement[`${action}EventListener`](ev, this.domFocusListener, true));
10824
+ }
10825
+ initDomEvents() {
10826
+ if (!this.host) {
10827
+ return;
10828
+ }
10829
+ let hostElement = this.host.nativeElement;
10830
+ this.ngZone.runOutsideAngular(() => {
10831
+ this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
10832
+ this.handleWrapperFocus();
10833
+ }));
10834
+ this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (event) => {
10835
+ const closestPopup = this.popupRef ?
10836
+ closest(event.relatedTarget, (element) => element === this.flatColorPicker.host.nativeElement) :
10837
+ false;
10838
+ const closestWrapper = closest(event.relatedTarget, (element) => element === this.host.nativeElement);
10839
+ if (!closestPopup && !closestWrapper) {
10840
+ this.handleWrapperBlur();
10841
+ }
10842
+ }));
10843
+ this.handleDomEvents('add', DOM_FOCUS_EVENTS);
10844
+ this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (event) => {
10845
+ this.handleWrapperKeyDown(event);
10846
+ }));
10847
+ this.subscriptions.add(this.renderer.listen(hostElement, 'click', (event) => {
10848
+ this.ngZone.run(() => {
10849
+ this.handleWrapperClick(event);
10850
+ });
10851
+ }));
10852
+ });
10853
+ }
10854
+ handleHostId() {
10855
+ const hostElement = this.host.nativeElement;
10856
+ const existingId = hostElement.getAttribute('id');
10857
+ if (existingId) {
10858
+ this.focusableId = existingId;
10859
+ }
10860
+ else {
10861
+ const id = `k-${guid()}`;
10862
+ hostElement.setAttribute('id', id);
10863
+ this.focusableId = id;
10864
+ }
10865
+ }
10789
10866
  };
10790
10867
  __decorate([
10791
10868
  HostBinding('class.k-colorpicker'),
@@ -10793,18 +10870,49 @@ __decorate([
10793
10870
  HostBinding('class.k-picker'),
10794
10871
  __metadata("design:type", Boolean)
10795
10872
  ], ColorPickerComponent.prototype, "hostClasses", void 0);
10873
+ __decorate([
10874
+ HostBinding('class.k-focus'),
10875
+ __metadata("design:type", Boolean),
10876
+ __metadata("design:paramtypes", [])
10877
+ ], ColorPickerComponent.prototype, "focusedClass", null);
10878
+ __decorate([
10879
+ HostBinding('attr.aria-disabled'),
10880
+ HostBinding('class.k-disabled'),
10881
+ __metadata("design:type", Boolean),
10882
+ __metadata("design:paramtypes", [])
10883
+ ], ColorPickerComponent.prototype, "disabledClass", null);
10884
+ __decorate([
10885
+ HostBinding('attr.aria-readonly'),
10886
+ __metadata("design:type", Boolean),
10887
+ __metadata("design:paramtypes", [])
10888
+ ], ColorPickerComponent.prototype, "ariaReadonly", null);
10889
+ __decorate([
10890
+ HostBinding('attr.aria-expanded'),
10891
+ __metadata("design:type", Boolean),
10892
+ __metadata("design:paramtypes", [])
10893
+ ], ColorPickerComponent.prototype, "ariaExpanded", null);
10894
+ __decorate([
10895
+ HostBinding('attr.tabindex'),
10896
+ __metadata("design:type", Number),
10897
+ __metadata("design:paramtypes", [])
10898
+ ], ColorPickerComponent.prototype, "hostTabindex", null);
10796
10899
  __decorate([
10797
10900
  HostBinding('attr.dir'),
10798
10901
  __metadata("design:type", String)
10799
10902
  ], ColorPickerComponent.prototype, "direction", void 0);
10800
10903
  __decorate([
10801
- Input(),
10904
+ HostBinding('attr.role'),
10802
10905
  __metadata("design:type", String)
10803
- ], ColorPickerComponent.prototype, "focusableId", void 0);
10906
+ ], ColorPickerComponent.prototype, "role", void 0);
10804
10907
  __decorate([
10805
10908
  Input(),
10806
10909
  __metadata("design:type", Array)
10807
10910
  ], ColorPickerComponent.prototype, "views", void 0);
10911
+ __decorate([
10912
+ Input(),
10913
+ __metadata("design:type", String),
10914
+ __metadata("design:paramtypes", [String])
10915
+ ], ColorPickerComponent.prototype, "view", null);
10808
10916
  __decorate([
10809
10917
  Input(),
10810
10918
  __metadata("design:type", String)
@@ -10918,9 +11026,9 @@ __decorate([
10918
11026
  __metadata("design:type", ViewContainerRef)
10919
11027
  ], ColorPickerComponent.prototype, "container", void 0);
10920
11028
  __decorate([
10921
- ViewChild('wrapper', { static: true }),
11029
+ ViewChild('activeColor', { static: true }),
10922
11030
  __metadata("design:type", ElementRef)
10923
- ], ColorPickerComponent.prototype, "wrapper", void 0);
11031
+ ], ColorPickerComponent.prototype, "activeColor", void 0);
10924
11032
  __decorate([
10925
11033
  ViewChild('popupTemplate', { static: true }),
10926
11034
  __metadata("design:type", TemplateRef)
@@ -10986,38 +11094,19 @@ ColorPickerComponent = ColorPickerComponent_1 = __decorate([
10986
11094
  i18n-cancelButton="kendo.colorpicker.cancelButton|The message for the Cancel action button."
10987
11095
  cancelButton="Cancel">
10988
11096
  </ng-container>
10989
- <span
10990
- #wrapper
10991
- [ngClass]="{
10992
- 'k-input-inner': true,
10993
- 'k-disabled': this.disabled,
10994
- 'k-focus': this.isFocused
10995
- }"
10996
- role="listbox"
10997
- [attr.aria-expanded]="isOpen"
10998
- [attr.aria-readonly]="readonly"
10999
- [attr.aria-disabled]="disabled"
11000
- [attr.aria-label]="colorPickerAriaLabel"
11001
- [id]="focusableId"
11002
- [attr.tabindex]="tabindex"
11003
- (focus)="handleWrapperFocus()"
11004
- (blur)="handleWrapperBlur()"
11005
- (mousedown)="$event.preventDefault()"
11006
- (keydown)="handleWrapperKeyDown($event)"
11007
- >
11097
+ <span #activeColor class="k-input-inner">
11008
11098
  <span
11009
11099
  class="k-value-icon k-color-preview"
11010
- [ngClass]="{'k-icon-color-preview': iconStyles, 'k-no-color': !value}"
11011
- (click)="handleActiveColorClick()">
11100
+ [ngClass]="{'k-icon-color-preview': iconStyles, 'k-no-color': !value}">
11012
11101
  <span *ngIf="iconClass || icon" class="k-color-preview-icon k-icon" [ngClass]="iconStyles"></span>
11013
11102
  <span class="k-color-preview-mask" [style.background-color]="value"></span>
11014
11103
  </span>
11015
11104
  </span>
11016
11105
  <button
11017
- type="button"
11018
- class="k-input-button k-button k-button-md k-button-solid k-button-solid-base k-icon-button"
11019
- [attr.aria-label]="colorPickerAriaLabel"
11020
- (click)="togglePopup()">
11106
+ #arrowButton
11107
+ tabindex="-1"
11108
+ role="button"
11109
+ class="k-input-button k-button k-button-md k-button-solid k-button-solid-base k-icon-button">
11021
11110
  <span class="k-button-icon k-icon k-i-arrow-s"></span>
11022
11111
  </button>
11023
11112
  <ng-template #popupTemplate>
@@ -11032,8 +11121,8 @@ ColorPickerComponent = ColorPickerComponent_1 = __decorate([
11032
11121
  [gradientSettings]="gradientSettings"
11033
11122
  [paletteSettings]="paletteSettings"
11034
11123
  [clearButton]="clearButton"
11035
- (focusout)="handlePopupBlur($event)"
11036
11124
  (cancel)="handleCancelEvent($event)"
11125
+ (focusout)="handlePopupBlur($event)"
11037
11126
  (valueChange)="handleValueChange($event)"
11038
11127
  (keydown)="handlePopupKeyDown($event)"
11039
11128
  (activeViewChange)="activeViewChange.emit($event)"
@@ -11608,6 +11697,7 @@ let RadioButtonDirective = class RadioButtonDirective {
11608
11697
  this.hostElement = hostElement;
11609
11698
  this.kendoClass = true;
11610
11699
  this._size = 'medium';
11700
+ validatePackage(packageMetadata);
11611
11701
  }
11612
11702
  /**
11613
11703
  * The size property specifies the width and height of the RadioButton
@@ -11701,7 +11791,7 @@ RadioButtonModule = __decorate([
11701
11791
  })
11702
11792
  ], RadioButtonModule);
11703
11793
 
11704
- let serial$3 = 0;
11794
+ let serial$2 = 0;
11705
11795
  /**
11706
11796
  * Represents an error message that will be shown underneath
11707
11797
  * a Kendo control or native HTML form-bound component after a validation.
@@ -11724,7 +11814,7 @@ let ErrorComponent = class ErrorComponent {
11724
11814
  /**
11725
11815
  * @hidden
11726
11816
  */
11727
- this.id = `kendo-error-${serial$3++}`;
11817
+ this.id = `kendo-error-${serial$2++}`;
11728
11818
  this.roleAttribute = 'alert';
11729
11819
  }
11730
11820
  get startClass() {
@@ -11773,7 +11863,7 @@ ErrorComponent = __decorate([
11773
11863
  })
11774
11864
  ], ErrorComponent);
11775
11865
 
11776
- let serial$4 = 0;
11866
+ let serial$3 = 0;
11777
11867
  /**
11778
11868
  * Represents a hint message that will be shown underneath a form-bound component.
11779
11869
  */
@@ -11793,7 +11883,7 @@ let HintComponent = class HintComponent {
11793
11883
  /**
11794
11884
  * @hidden
11795
11885
  */
11796
- this.id = `kendo-hint-${serial$4++}`;
11886
+ this.id = `kendo-hint-${serial$3++}`;
11797
11887
  this.hostClass = true;
11798
11888
  }
11799
11889
  get startClass() {