@progress/kendo-angular-toolbar 21.4.1 → 22.0.0-develop.1

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 (40) hide show
  1. package/fesm2022/progress-kendo-angular-toolbar.mjs +62 -62
  2. package/localization/messages.d.ts +1 -1
  3. package/package.json +12 -20
  4. package/esm2022/common/fillmode.mjs +0 -5
  5. package/esm2022/common/overflow-mode.mjs +0 -5
  6. package/esm2022/common/overflow-settings.mjs +0 -5
  7. package/esm2022/common/preventable-event.mjs +0 -25
  8. package/esm2022/common/renderer-click.mjs +0 -5
  9. package/esm2022/common/scroll-buttons.mjs +0 -5
  10. package/esm2022/common/size.mjs +0 -5
  11. package/esm2022/direction.mjs +0 -5
  12. package/esm2022/directives.mjs +0 -45
  13. package/esm2022/display-mode.mjs +0 -5
  14. package/esm2022/group-selection-settings.mjs +0 -5
  15. package/esm2022/index.mjs +0 -17
  16. package/esm2022/localization/custom-messages.component.mjs +0 -56
  17. package/esm2022/localization/localized-toolbar-messages.directive.mjs +0 -39
  18. package/esm2022/localization/messages.mjs +0 -39
  19. package/esm2022/navigation.service.mjs +0 -159
  20. package/esm2022/package-metadata.mjs +0 -16
  21. package/esm2022/popup-settings.mjs +0 -5
  22. package/esm2022/progress-kendo-angular-toolbar.mjs +0 -8
  23. package/esm2022/refresh.service.mjs +0 -20
  24. package/esm2022/render-location.mjs +0 -5
  25. package/esm2022/renderer.component.mjs +0 -191
  26. package/esm2022/renderer.service.mjs +0 -52
  27. package/esm2022/scroll.service.mjs +0 -110
  28. package/esm2022/scrollable-button.component.mjs +0 -152
  29. package/esm2022/tool-options.mjs +0 -5
  30. package/esm2022/toolbar.component.mjs +0 -1582
  31. package/esm2022/toolbar.module.mjs +0 -46
  32. package/esm2022/tools/toolbar-button.component.mjs +0 -712
  33. package/esm2022/tools/toolbar-buttongroup.component.mjs +0 -448
  34. package/esm2022/tools/toolbar-dropdownbutton.component.mjs +0 -595
  35. package/esm2022/tools/toolbar-separator.component.mjs +0 -96
  36. package/esm2022/tools/toolbar-spacer.component.mjs +0 -76
  37. package/esm2022/tools/toolbar-splitbutton.component.mjs +0 -607
  38. package/esm2022/tools/toolbar-tool.component.mjs +0 -106
  39. package/esm2022/tools/tools.service.mjs +0 -25
  40. package/esm2022/util.mjs +0 -244
@@ -1,448 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, forwardRef, ViewChild, ContentChildren, QueryList, Input, ViewChildren } from '@angular/core';
6
- import { LocalizationService } from '@progress/kendo-angular-l10n';
7
- import { ToolBarToolComponent } from './toolbar-tool.component';
8
- import { ToolBarButtonComponent } from './toolbar-button.component';
9
- import { makePeeker, getIndexOfFocused, seekFocusedIndex, getNextKey, getPrevKey, areEqual } from '../util';
10
- import { ButtonGroupComponent, ButtonComponent } from '@progress/kendo-angular-buttons';
11
- import { IconWrapperComponent } from '@progress/kendo-angular-icons';
12
- import { NgStyle, NgClass } from '@angular/common';
13
- import { ToolBarComponent } from '../toolbar.component';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@progress/kendo-angular-l10n";
16
- import * as i2 from "../toolbar.component";
17
- /**
18
- * Represents the [Kendo UI Toolbar ButtonGroup for Angular](slug:controltypes_toolbar#button-groups).
19
- *
20
- * Use this component to group buttons in a ButtonGroup inside the ToolBar.
21
- *
22
- * @example
23
- * ```html
24
- * <kendo-toolbar>
25
- * <kendo-toolbar-buttongroup>
26
- * <kendo-toolbar-button text="Bold"></kendo-toolbar-button>
27
- * <kendo-toolbar-button text="Underline"></kendo-toolbar-button>
28
- * <kendo-toolbar-button text="Italic"></kendo-toolbar-button>
29
- * </kendo-toolbar-buttongroup>
30
- * </kendo-toolbar>
31
- * ```
32
- *
33
- * @remarks
34
- * Supported children components are: {@link ToolBarButtonComponent}
35
- */
36
- export class ToolBarButtonGroupComponent extends ToolBarToolComponent {
37
- localization;
38
- host;
39
- /**
40
- * When `true`, disables the whole group of buttons.
41
- * If you set the `disabled` property of the group, it overrides the `disabled` property of individual buttons.
42
- */
43
- disabled;
44
- /**
45
- * @hidden
46
- *
47
- * Used to set different fillmode in Spreadsheet and Toolbar to comply with referent rendering.
48
- * @default 'solid'
49
- */
50
- fillMode = 'solid';
51
- /**
52
- * Sets the selection mode of the ButtonGroup.
53
- * @default 'multiple'
54
- */
55
- selection = 'multiple';
56
- /**
57
- * Sets the width of the ButtonGroup.
58
- * When you set the width of the ButtonGroup, the buttons have the same width and resize to fill the group wrapper.
59
- */
60
- width;
61
- /**
62
- * @hidden
63
- */
64
- set look(look) {
65
- if (look) {
66
- this.buttonComponents.forEach(b => b.fillMode = look === 'default' ? 'solid' : look);
67
- }
68
- }
69
- toolbarButtonGroup;
70
- sectionButtonGroup;
71
- overflowListItems;
72
- buttonComponents;
73
- get buttonElements() {
74
- if (this.overflows && this.location === 'overflow') {
75
- return [...this.overflowListItems.toArray().filter(el => !el.nativeElement.classList.contains('k-disabled'))].map(el => el.nativeElement);
76
- }
77
- else if (this.overflows && this.location === 'section') {
78
- return this.sectionButtonGroup
79
- .buttons.filter(b => !b.isDisabled)
80
- .map(b => b.element);
81
- }
82
- else {
83
- return this.toolbarButtonGroup
84
- .buttons.filter(b => !b.isDisabled)
85
- .map(b => b.element);
86
- }
87
- }
88
- focusedIndex = -1;
89
- getNextKey;
90
- getPrevKey;
91
- constructor(localization, host) {
92
- super();
93
- this.localization = localization;
94
- this.host = host;
95
- this.getNextKey = getNextKey(this.localization.rtl);
96
- this.getPrevKey = getPrevKey(this.localization.rtl);
97
- this.isBuiltInTool = true;
98
- }
99
- /**
100
- * @hidden
101
- */
102
- onFocus() {
103
- // triggered on tabin
104
- this.focusedIndex = 0;
105
- }
106
- /**
107
- * @hidden
108
- */
109
- onNavigate(ev) {
110
- ev.preventDefault();
111
- }
112
- /**
113
- * @hidden
114
- */
115
- selectedChangeHandler(state, button) {
116
- button.selected = state;
117
- button.selectedChange.emit(state);
118
- }
119
- /**
120
- * @hidden
121
- */
122
- overflowSelectedChangeHandler(button) {
123
- if (this.selection === 'multiple') {
124
- button.selected = !button.selected;
125
- }
126
- else {
127
- const filteredButtons = this.buttonComponents.filter(b => b !== button);
128
- filteredButtons.forEach(b => b.selected = false);
129
- button.selected = !button.selected;
130
- }
131
- button.selectedChange.emit(button.selected);
132
- }
133
- /**
134
- * @hidden
135
- */
136
- onButtonClick(ev) {
137
- this.focusedIndex = this.buttonElements.findIndex(be => be === ev.target || be.contains(ev.target));
138
- this.focusButton(this.focusedIndex, ev);
139
- }
140
- /**
141
- * @hidden
142
- */
143
- canFocus() {
144
- return !(this.disabled || this.buttonElements.length === 0);
145
- }
146
- /**
147
- * @hidden
148
- */
149
- focus(ev = {}) {
150
- const nextKey = this.getNextKey((this.overflows && this.location === 'overflow'));
151
- const prevKey = this.getPrevKey((this.overflows && this.location === 'overflow'));
152
- this.focusedIndex = getIndexOfFocused(prevKey, nextKey, this.buttonElements)(ev);
153
- this.focusButton(this.focusedIndex, ev);
154
- }
155
- /**
156
- * @hidden
157
- */
158
- handleKey(ev) {
159
- const nextKey = this.getNextKey((this.overflows && this.location === 'overflow'));
160
- const prevKey = this.getPrevKey((this.overflows && this.location === 'overflow'));
161
- const peekAtIndex = makePeeker(this.buttonElements);
162
- const isUnmodified = areEqual(this.focusedIndex);
163
- this.focusedIndex = seekFocusedIndex(prevKey, nextKey, peekAtIndex)(this.focusedIndex, ev);
164
- this.focusButton(this.focusedIndex, ev);
165
- return !isUnmodified(this.focusedIndex);
166
- }
167
- /**
168
- * @hidden
169
- */
170
- handleClick(ev, button) {
171
- button.click.emit(ev);
172
- this.onButtonClick(ev);
173
- this.overflowSelectedChangeHandler(button);
174
- }
175
- /**
176
- * @hidden
177
- */
178
- getIconClasses(button) {
179
- if (button.overflowOptions.icon) {
180
- return `${button.overflowOptions.icon}`;
181
- }
182
- if (button.overflowOptions.iconClass) {
183
- return button.overflowOptions.iconClass;
184
- }
185
- if (button.overflowOptions.svgIcon) {
186
- return button.overflowOptions.svgIcon;
187
- }
188
- }
189
- /**
190
- * @hidden
191
- */
192
- get size() {
193
- return this.host.size;
194
- }
195
- focusButton(index, ev) {
196
- // Guard against focusing twice on mousedown.
197
- if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {
198
- this.buttonElements[index]?.focus();
199
- }
200
- }
201
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolBarButtonGroupComponent, deps: [{ token: i1.LocalizationService }, { token: i2.ToolBarComponent }], target: i0.ɵɵFactoryTarget.Component });
202
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolBarButtonGroupComponent, isStandalone: true, selector: "kendo-toolbar-buttongroup", inputs: { disabled: "disabled", fillMode: "fillMode", selection: "selection", width: "width", look: "look" }, providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }], queries: [{ propertyName: "buttonComponents", predicate: i0.forwardRef(() => ToolBarButtonComponent) }], viewQueries: [{ propertyName: "toolbarButtonGroup", first: true, predicate: ["toolbarButtonGroup"], descendants: true }, { propertyName: "sectionButtonGroup", first: true, predicate: ["sectionButtonGroup"], descendants: true }, { propertyName: "overflowListItems", predicate: ["listItem"], descendants: true }], exportAs: ["kendoToolBarButtonGroup"], usesInheritance: true, ngImport: i0, template: `
203
- <ng-template #toolbarTemplate>
204
- <kendo-buttongroup
205
- class="k-toolbar-button-group k-button-group-{{fillMode}}"
206
- #toolbarButtonGroup
207
- [tabIndex]="-1"
208
- [selection]="selection"
209
- [disabled]="disabled"
210
- [width]="width"
211
- (navigate)="onNavigate($event)"
212
- (focus)="onFocus()"
213
- >
214
- @for (button of buttonComponents; track button) {
215
- <button
216
- kendoButton
217
- type="button"
218
- [ngStyle]="button.style"
219
- [ngClass]="button.className"
220
- [attr.title]="button.title"
221
- [disabled]="button.disabled"
222
- [size]="size"
223
- [togglable]="button.togglable"
224
- [selected]="button.selected"
225
- [attr.aria-pressed]="button.selected ? true : false"
226
- [fillMode]="button.fillMode"
227
- [themeColor]="button.fillMode ? button.themeColor : null"
228
- [icon]="button.toolbarOptions.icon"
229
- [iconClass]="button.toolbarOptions.iconClass"
230
- [svgIcon]="button.toolbarOptions.svgIcon"
231
- [imageUrl]="button.toolbarOptions.imageUrl"
232
- (click)="button.click.emit($event); onButtonClick($event)"
233
- (pointerdown)="button.pointerdown.emit($event)"
234
- (selectedChange)="selectedChangeHandler($event, button)"
235
- >
236
- {{ button.toolbarOptions.text }}
237
- </button>
238
- }
239
- </kendo-buttongroup>
240
- </ng-template>
241
- <ng-template #popupTemplate>
242
- @for (button of buttonComponents; track button) {
243
- <div
244
- #listItem
245
- tabindex="-1"
246
- role="menuitem"
247
- class="k-item k-menu-item"
248
- [class.k-disabled]="disabled || button.disabled"
249
- [ngStyle]="button.style"
250
- [ngClass]="button.className"
251
- (click)="handleClick($event, button)">
252
- <span
253
- class="k-link k-menu-link"
254
- [class.k-selected]="button.selected"
255
- >
256
- @if (button.overflowOptions.icon || button.overflowOptions.iconClass || button.overflowOptions.svgIcon) {
257
- <kendo-icon-wrapper
258
- [name]="button.overflowOptions.icon"
259
- [customFontClass]="button.overflowOptions.iconClass"
260
- [svgIcon]="button.overflowOptions.svgIcon"
261
- ></kendo-icon-wrapper>
262
- }
263
- @if (button.overflowOptions.text) {
264
- <span class="k-menu-link-text">{{button.overflowOptions.text}}</span>
265
- }
266
- </span>
267
- </div>
268
- }
269
- </ng-template>
270
- <ng-template #sectionTemplate>
271
- <kendo-buttongroup
272
- class="k-toolbar-button-group k-button-group-{{fillMode}}"
273
- #sectionButtonGroup
274
- [tabIndex]="-1"
275
- [selection]="selection"
276
- [disabled]="disabled"
277
- [width]="width"
278
- (navigate)="onNavigate($event)"
279
- (focus)="onFocus()"
280
- >
281
- @for (button of buttonComponents; track button) {
282
- <button
283
- kendoButton
284
- type="button"
285
- [ngStyle]="button.style"
286
- [ngClass]="button.className"
287
- [attr.title]="button.title"
288
- [disabled]="button.disabled"
289
- [size]="size"
290
- [togglable]="button.togglable"
291
- [selected]="button.selected"
292
- [attr.aria-pressed]="button.selected ? true : false"
293
- [fillMode]="button.fillMode"
294
- [themeColor]="button.fillMode ? button.themeColor : null"
295
- [icon]="button.toolbarOptions.icon"
296
- [iconClass]="button.toolbarOptions.iconClass"
297
- [svgIcon]="button.toolbarOptions.svgIcon"
298
- [imageUrl]="button.toolbarOptions.imageUrl"
299
- (click)="button.click.emit($event); onButtonClick($event)"
300
- (pointerdown)="button.pointerdown.emit($event)"
301
- (selectedChange)="selectedChangeHandler($event, button)"
302
- >
303
- {{ button.toolbarOptions.text }}
304
- </button>
305
- }
306
- </kendo-buttongroup>
307
- </ng-template>
308
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
309
- }
310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolBarButtonGroupComponent, decorators: [{
311
- type: Component,
312
- args: [{
313
- exportAs: 'kendoToolBarButtonGroup',
314
- providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }],
315
- selector: 'kendo-toolbar-buttongroup',
316
- template: `
317
- <ng-template #toolbarTemplate>
318
- <kendo-buttongroup
319
- class="k-toolbar-button-group k-button-group-{{fillMode}}"
320
- #toolbarButtonGroup
321
- [tabIndex]="-1"
322
- [selection]="selection"
323
- [disabled]="disabled"
324
- [width]="width"
325
- (navigate)="onNavigate($event)"
326
- (focus)="onFocus()"
327
- >
328
- @for (button of buttonComponents; track button) {
329
- <button
330
- kendoButton
331
- type="button"
332
- [ngStyle]="button.style"
333
- [ngClass]="button.className"
334
- [attr.title]="button.title"
335
- [disabled]="button.disabled"
336
- [size]="size"
337
- [togglable]="button.togglable"
338
- [selected]="button.selected"
339
- [attr.aria-pressed]="button.selected ? true : false"
340
- [fillMode]="button.fillMode"
341
- [themeColor]="button.fillMode ? button.themeColor : null"
342
- [icon]="button.toolbarOptions.icon"
343
- [iconClass]="button.toolbarOptions.iconClass"
344
- [svgIcon]="button.toolbarOptions.svgIcon"
345
- [imageUrl]="button.toolbarOptions.imageUrl"
346
- (click)="button.click.emit($event); onButtonClick($event)"
347
- (pointerdown)="button.pointerdown.emit($event)"
348
- (selectedChange)="selectedChangeHandler($event, button)"
349
- >
350
- {{ button.toolbarOptions.text }}
351
- </button>
352
- }
353
- </kendo-buttongroup>
354
- </ng-template>
355
- <ng-template #popupTemplate>
356
- @for (button of buttonComponents; track button) {
357
- <div
358
- #listItem
359
- tabindex="-1"
360
- role="menuitem"
361
- class="k-item k-menu-item"
362
- [class.k-disabled]="disabled || button.disabled"
363
- [ngStyle]="button.style"
364
- [ngClass]="button.className"
365
- (click)="handleClick($event, button)">
366
- <span
367
- class="k-link k-menu-link"
368
- [class.k-selected]="button.selected"
369
- >
370
- @if (button.overflowOptions.icon || button.overflowOptions.iconClass || button.overflowOptions.svgIcon) {
371
- <kendo-icon-wrapper
372
- [name]="button.overflowOptions.icon"
373
- [customFontClass]="button.overflowOptions.iconClass"
374
- [svgIcon]="button.overflowOptions.svgIcon"
375
- ></kendo-icon-wrapper>
376
- }
377
- @if (button.overflowOptions.text) {
378
- <span class="k-menu-link-text">{{button.overflowOptions.text}}</span>
379
- }
380
- </span>
381
- </div>
382
- }
383
- </ng-template>
384
- <ng-template #sectionTemplate>
385
- <kendo-buttongroup
386
- class="k-toolbar-button-group k-button-group-{{fillMode}}"
387
- #sectionButtonGroup
388
- [tabIndex]="-1"
389
- [selection]="selection"
390
- [disabled]="disabled"
391
- [width]="width"
392
- (navigate)="onNavigate($event)"
393
- (focus)="onFocus()"
394
- >
395
- @for (button of buttonComponents; track button) {
396
- <button
397
- kendoButton
398
- type="button"
399
- [ngStyle]="button.style"
400
- [ngClass]="button.className"
401
- [attr.title]="button.title"
402
- [disabled]="button.disabled"
403
- [size]="size"
404
- [togglable]="button.togglable"
405
- [selected]="button.selected"
406
- [attr.aria-pressed]="button.selected ? true : false"
407
- [fillMode]="button.fillMode"
408
- [themeColor]="button.fillMode ? button.themeColor : null"
409
- [icon]="button.toolbarOptions.icon"
410
- [iconClass]="button.toolbarOptions.iconClass"
411
- [svgIcon]="button.toolbarOptions.svgIcon"
412
- [imageUrl]="button.toolbarOptions.imageUrl"
413
- (click)="button.click.emit($event); onButtonClick($event)"
414
- (pointerdown)="button.pointerdown.emit($event)"
415
- (selectedChange)="selectedChangeHandler($event, button)"
416
- >
417
- {{ button.toolbarOptions.text }}
418
- </button>
419
- }
420
- </kendo-buttongroup>
421
- </ng-template>
422
- `,
423
- standalone: true,
424
- imports: [ButtonGroupComponent, ButtonComponent, NgStyle, NgClass, IconWrapperComponent]
425
- }]
426
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.ToolBarComponent }], propDecorators: { disabled: [{
427
- type: Input
428
- }], fillMode: [{
429
- type: Input
430
- }], selection: [{
431
- type: Input
432
- }], width: [{
433
- type: Input
434
- }], look: [{
435
- type: Input
436
- }], toolbarButtonGroup: [{
437
- type: ViewChild,
438
- args: ['toolbarButtonGroup', { static: false }]
439
- }], sectionButtonGroup: [{
440
- type: ViewChild,
441
- args: ['sectionButtonGroup', { static: false }]
442
- }], overflowListItems: [{
443
- type: ViewChildren,
444
- args: ['listItem']
445
- }], buttonComponents: [{
446
- type: ContentChildren,
447
- args: [forwardRef(() => ToolBarButtonComponent)]
448
- }] } });