@skyux/lists 5.9.4 → 5.9.7
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/bundles/skyux-lists.umd.js +205 -39
- package/documentation.json +518 -251
- package/esm2015/lib/modules/repeater/repeater-item-roles.type.js +2 -0
- package/esm2015/lib/modules/repeater/repeater-item-roles.type.js.map +1 -0
- package/esm2015/lib/modules/repeater/repeater-item.component.js +115 -27
- package/esm2015/lib/modules/repeater/repeater-item.component.js.map +1 -1
- package/esm2015/lib/modules/repeater/repeater-role.type.js +2 -0
- package/esm2015/lib/modules/repeater/repeater-role.type.js.map +1 -0
- package/esm2015/lib/modules/repeater/repeater.component.js +63 -2
- package/esm2015/lib/modules/repeater/repeater.component.js.map +1 -1
- package/esm2015/lib/modules/repeater/repeater.module.js +4 -0
- package/esm2015/lib/modules/repeater/repeater.module.js.map +1 -1
- package/esm2015/lib/modules/repeater/repeater.service.js +7 -2
- package/esm2015/lib/modules/repeater/repeater.service.js.map +1 -1
- package/fesm2015/skyux-lists.js +188 -30
- package/fesm2015/skyux-lists.js.map +1 -1
- package/lib/modules/repeater/repeater-item-roles.type.d.ts +5 -0
- package/lib/modules/repeater/repeater-item.component.d.ts +17 -2
- package/lib/modules/repeater/repeater-role.type.d.ts +1 -0
- package/lib/modules/repeater/repeater.component.d.ts +7 -2
- package/lib/modules/repeater/repeater.module.d.ts +6 -5
- package/lib/modules/repeater/repeater.service.d.ts +2 -0
- package/package.json +11 -10
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@skyux/indicators'), require('@skyux/theme'), require('@skyux/i18n'), require('rxjs'), require('rxjs/operators'), require('@skyux/core'), require('@skyux/forms'), require('@skyux/inline-form'), require('ng2-dragula'), require('@skyux/animations'), require('@skyux/popovers')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@skyux/lists', ['exports', '@angular/common', '@angular/core', '@skyux/indicators', '@skyux/theme', '@skyux/i18n', 'rxjs', 'rxjs/operators', '@skyux/core', '@skyux/forms', '@skyux/inline-form', 'ng2-dragula', '@skyux/animations', '@skyux/popovers'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.skyux = global.skyux || {}, global.skyux.lists = {}), global.ng.common, global.ng.core, global.i1, global.i3, global.i4, global.rxjs, global.rxjs.operators, global.i1$1, global.i6, global.i4$1, global.i3$1, global.animations, global.i1$2));
|
|
5
|
-
})(this, (function (exports, i2, i0, i1, i3, i4, rxjs, operators, i1$1, i6, i4$1, i3$1, animations, i1$2) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@skyux/indicators'), require('@skyux/theme'), require('@skyux/i18n'), require('rxjs'), require('rxjs/operators'), require('@skyux/core'), require('@angular/cdk/observers'), require('@skyux/forms'), require('@skyux/inline-form'), require('ng2-dragula'), require('@skyux/animations'), require('@skyux/popovers')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@skyux/lists', ['exports', '@angular/common', '@angular/core', '@skyux/indicators', '@skyux/theme', '@skyux/i18n', 'rxjs', 'rxjs/operators', '@skyux/core', '@angular/cdk/observers', '@skyux/forms', '@skyux/inline-form', 'ng2-dragula', '@skyux/animations', '@skyux/popovers'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.skyux = global.skyux || {}, global.skyux.lists = {}), global.ng.common, global.ng.core, global.i1, global.i3, global.i4, global.rxjs, global.rxjs.operators, global.i1$1, global.ng.cdk.observers, global.i6, global.i4$1, global.i3$1, global.animations, global.i1$2));
|
|
5
|
+
})(this, (function (exports, i2, i0, i1, i3, i4, rxjs, operators, i1$1, i4$2, i6, i4$1, i3$1, animations, i1$2) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespace(e) {
|
|
8
8
|
if (e && e.__esModule) return e;
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
|
|
29
29
|
var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
|
|
30
30
|
var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
|
|
31
|
+
var i4__namespace$2 = /*#__PURE__*/_interopNamespace(i4$2);
|
|
31
32
|
var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
|
|
32
33
|
var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
|
|
33
34
|
var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
|
|
@@ -791,6 +792,11 @@
|
|
|
791
792
|
this.enableActiveState = false;
|
|
792
793
|
this.itemCollapseStateChange = new i0.EventEmitter();
|
|
793
794
|
this.items = [];
|
|
795
|
+
this.itemRole = new rxjs.BehaviorSubject({
|
|
796
|
+
content: undefined,
|
|
797
|
+
item: undefined,
|
|
798
|
+
title: undefined,
|
|
799
|
+
});
|
|
794
800
|
this.orderChange = new rxjs.BehaviorSubject(undefined);
|
|
795
801
|
}
|
|
796
802
|
SkyRepeaterService.prototype.ngOnDestroy = function () {
|
|
@@ -801,7 +807,7 @@
|
|
|
801
807
|
SkyRepeaterService.prototype.activateItem = function (item) {
|
|
802
808
|
if (this.enableActiveState) {
|
|
803
809
|
/* istanbul ignore else */
|
|
804
|
-
if (item) {
|
|
810
|
+
if (item && !item.disabled) {
|
|
805
811
|
var index = this.items.findIndex(function (i) { return i === item; });
|
|
806
812
|
this.activeItemIndexChange.next(index);
|
|
807
813
|
this.activeItemChange.next(item);
|
|
@@ -816,7 +822,7 @@
|
|
|
816
822
|
}
|
|
817
823
|
else {
|
|
818
824
|
var activeItem = this.items[index];
|
|
819
|
-
if (activeItem) {
|
|
825
|
+
if (activeItem && !activeItem.disabled) {
|
|
820
826
|
this.activeItemChange.next(activeItem);
|
|
821
827
|
}
|
|
822
828
|
}
|
|
@@ -973,6 +979,7 @@
|
|
|
973
979
|
this.keyboardReorderingEnabled = false;
|
|
974
980
|
this.ngUnsubscribe = new rxjs.Subject();
|
|
975
981
|
this._isCollapsible = true;
|
|
982
|
+
this._isDisabled = false;
|
|
976
983
|
this._isExpanded = true;
|
|
977
984
|
this._isSelected = false;
|
|
978
985
|
this.slideForExpanded(false);
|
|
@@ -990,7 +997,51 @@
|
|
|
990
997
|
_this.reorderMovedText = translatedStrings[4];
|
|
991
998
|
_this.reorderButtonLabel = _this.reorderInstructions;
|
|
992
999
|
});
|
|
1000
|
+
this.itemRole$ = this.repeaterService.itemRole.asObservable();
|
|
993
1001
|
}
|
|
1002
|
+
Object.defineProperty(SkyRepeaterItemComponent.prototype, "tabindex", {
|
|
1003
|
+
/**
|
|
1004
|
+
* Make the first, non-disabled item tab-focusable.
|
|
1005
|
+
* - Disabled items should not be focusable per [W3C](https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_disabled_controls).
|
|
1006
|
+
* - One item per list/grid/listbox should be tab focusable per [W3C](https://www.w3.org/TR/wai-aria-practices-1.1/#grid).
|
|
1007
|
+
*/
|
|
1008
|
+
get: function () {
|
|
1009
|
+
return this.repeaterService.items.filter(function (item) { return !item.disabled; })[0] ===
|
|
1010
|
+
this
|
|
1011
|
+
? 0
|
|
1012
|
+
: -1;
|
|
1013
|
+
},
|
|
1014
|
+
enumerable: false,
|
|
1015
|
+
configurable: true
|
|
1016
|
+
});
|
|
1017
|
+
Object.defineProperty(SkyRepeaterItemComponent.prototype, "disabled", {
|
|
1018
|
+
get: function () {
|
|
1019
|
+
return this._isDisabled;
|
|
1020
|
+
},
|
|
1021
|
+
/**
|
|
1022
|
+
* Whether to exclude an item when cycling through.
|
|
1023
|
+
*/
|
|
1024
|
+
set: function (value) {
|
|
1025
|
+
if (this._isDisabled !== value) {
|
|
1026
|
+
if (value) {
|
|
1027
|
+
this.isSelected = false;
|
|
1028
|
+
this._isDisabled = true;
|
|
1029
|
+
}
|
|
1030
|
+
else {
|
|
1031
|
+
this._isDisabled = false;
|
|
1032
|
+
}
|
|
1033
|
+
if (this.isActive) {
|
|
1034
|
+
this.repeaterService.activateItemByIndex(undefined);
|
|
1035
|
+
}
|
|
1036
|
+
if (this.elementRef.nativeElement.matches(':focus-within')) {
|
|
1037
|
+
this.elementRef.nativeElement.ownerDocument.activeElement.blur();
|
|
1038
|
+
}
|
|
1039
|
+
this.changeDetector.markForCheck();
|
|
1040
|
+
}
|
|
1041
|
+
},
|
|
1042
|
+
enumerable: false,
|
|
1043
|
+
configurable: true
|
|
1044
|
+
});
|
|
994
1045
|
Object.defineProperty(SkyRepeaterItemComponent.prototype, "isExpanded", {
|
|
995
1046
|
get: function () {
|
|
996
1047
|
return this._isExpanded;
|
|
@@ -1015,7 +1066,7 @@
|
|
|
1015
1066
|
* @default false
|
|
1016
1067
|
*/
|
|
1017
1068
|
set: function (value) {
|
|
1018
|
-
if (value !== this._isSelected) {
|
|
1069
|
+
if (!this.disabled && value !== this._isSelected) {
|
|
1019
1070
|
this._isSelected = value;
|
|
1020
1071
|
this.isSelectedChange.emit(this._isSelected);
|
|
1021
1072
|
}
|
|
@@ -1073,6 +1124,74 @@
|
|
|
1073
1124
|
this.ngUnsubscribe.complete();
|
|
1074
1125
|
this.repeaterService.unregisterItem(this);
|
|
1075
1126
|
};
|
|
1127
|
+
SkyRepeaterItemComponent.prototype.onKeydown = function ($event) {
|
|
1128
|
+
var _this = this;
|
|
1129
|
+
if ([' ', 'Enter', 'Home', 'End', 'ArrowUp', 'ArrowDown'].includes($event.key)) {
|
|
1130
|
+
if ($event.target.matches('input, textarea, select, option, [contenteditable], [contenteditable] *')) {
|
|
1131
|
+
return;
|
|
1132
|
+
}
|
|
1133
|
+
$event.preventDefault();
|
|
1134
|
+
$event.stopPropagation();
|
|
1135
|
+
var activateItem = undefined;
|
|
1136
|
+
/* istanbul ignore else */
|
|
1137
|
+
if ([' ', 'Enter'].includes($event.key)) {
|
|
1138
|
+
if (this.selectable) {
|
|
1139
|
+
this.isSelected = !this.isSelected;
|
|
1140
|
+
}
|
|
1141
|
+
activateItem = this;
|
|
1142
|
+
}
|
|
1143
|
+
/* istanbul ignore else */
|
|
1144
|
+
if (['Home', 'End'].includes($event.key)) {
|
|
1145
|
+
var items = this.repeaterService.items.filter(function (item) { return !item.disabled; });
|
|
1146
|
+
if ($event.key === 'Home') {
|
|
1147
|
+
activateItem = items.shift();
|
|
1148
|
+
}
|
|
1149
|
+
else {
|
|
1150
|
+
activateItem = items.pop();
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
/* istanbul ignore else */
|
|
1154
|
+
if (['ArrowUp', 'ArrowDown'].includes($event.key)) {
|
|
1155
|
+
var currentIndex = this.repeaterService.items.findIndex(function (item) { return item === _this; });
|
|
1156
|
+
var sliceFrom = void 0;
|
|
1157
|
+
var sliceTo = void 0;
|
|
1158
|
+
if ($event.key === 'ArrowUp') {
|
|
1159
|
+
sliceFrom = 0;
|
|
1160
|
+
sliceTo = currentIndex;
|
|
1161
|
+
}
|
|
1162
|
+
else {
|
|
1163
|
+
sliceFrom = currentIndex + 1;
|
|
1164
|
+
sliceTo = undefined;
|
|
1165
|
+
}
|
|
1166
|
+
var items = this.repeaterService.items
|
|
1167
|
+
.slice(sliceFrom, sliceTo)
|
|
1168
|
+
.filter(function (item) { return !item.disabled; });
|
|
1169
|
+
activateItem = $event.key === 'ArrowUp' ? items.pop() : items.shift();
|
|
1170
|
+
if (!activateItem) {
|
|
1171
|
+
// Wrap around.
|
|
1172
|
+
if ($event.key === 'ArrowDown') {
|
|
1173
|
+
sliceFrom = 0;
|
|
1174
|
+
sliceTo = currentIndex;
|
|
1175
|
+
}
|
|
1176
|
+
else {
|
|
1177
|
+
sliceFrom = currentIndex + 1;
|
|
1178
|
+
sliceTo = undefined;
|
|
1179
|
+
}
|
|
1180
|
+
var items_1 = this.repeaterService.items
|
|
1181
|
+
.slice(sliceFrom, sliceTo)
|
|
1182
|
+
.filter(function (item) { return !item.disabled; });
|
|
1183
|
+
activateItem = $event.key === 'ArrowUp' ? items_1.pop() : items_1.shift();
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
/* istanbul ignore else */
|
|
1187
|
+
if (activateItem && !activateItem.isActive) {
|
|
1188
|
+
this.repeaterService.activateItem(activateItem);
|
|
1189
|
+
if (!activateItem.elementRef.nativeElement.matches(':focus-within')) {
|
|
1190
|
+
activateItem.elementRef.nativeElement.focus();
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
};
|
|
1076
1195
|
SkyRepeaterItemComponent.prototype.headerClick = function () {
|
|
1077
1196
|
if (this.isCollapsible) {
|
|
1078
1197
|
this.updateForExpanded(!this.isExpanded, true);
|
|
@@ -1179,29 +1298,6 @@
|
|
|
1179
1298
|
this.reorderButtonLabel = this.reorderInstructions;
|
|
1180
1299
|
this.reorderState = undefined;
|
|
1181
1300
|
};
|
|
1182
|
-
SkyRepeaterItemComponent.prototype.onItemKeyDown = function (event) {
|
|
1183
|
-
/*istanbul ignore else */
|
|
1184
|
-
if (event.key) {
|
|
1185
|
-
switch (event.key.toLowerCase()) {
|
|
1186
|
-
case ' ':
|
|
1187
|
-
case 'enter':
|
|
1188
|
-
/* istanbul ignore else */
|
|
1189
|
-
/* Sanity check */
|
|
1190
|
-
// Space/enter should never execute unless focused on the parent item element.
|
|
1191
|
-
if (event.target === this.itemRef.nativeElement) {
|
|
1192
|
-
if (this.selectable) {
|
|
1193
|
-
this.isSelected = !this.isSelected;
|
|
1194
|
-
}
|
|
1195
|
-
this.repeaterService.activateItem(this);
|
|
1196
|
-
event.preventDefault();
|
|
1197
|
-
}
|
|
1198
|
-
break;
|
|
1199
|
-
/* istanbul ignore next */
|
|
1200
|
-
default:
|
|
1201
|
-
break;
|
|
1202
|
-
}
|
|
1203
|
-
}
|
|
1204
|
-
};
|
|
1205
1301
|
SkyRepeaterItemComponent.prototype.slideForExpanded = function (animate) {
|
|
1206
1302
|
this.slideDirection = this.isExpanded ? 'down' : 'up';
|
|
1207
1303
|
};
|
|
@@ -1256,17 +1352,21 @@
|
|
|
1256
1352
|
return SkyRepeaterItemComponent;
|
|
1257
1353
|
}());
|
|
1258
1354
|
SkyRepeaterItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyRepeaterItemComponent, deps: [{ token: SkyRepeaterService }, { token: i0__namespace.ChangeDetectorRef }, { token: SkyRepeaterAdapterService }, { token: i0__namespace.ElementRef }, { token: i4__namespace.SkyLibResourcesService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
1259
|
-
SkyRepeaterItemComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyRepeaterItemComponent, selector: "sky-repeater-item", inputs: { itemName: "itemName", inlineFormConfig: "inlineFormConfig", inlineFormTemplate: "inlineFormTemplate", isExpanded: "isExpanded", isSelected: "isSelected", reorderable: "reorderable", selectable: "selectable", showInlineForm: "showInlineForm", tag: "tag" }, outputs: { collapse: "collapse", expand: "expand", inlineFormClose: "inlineFormClose", isSelectedChange: "isSelectedChange" }, host: { properties: { "class": "this.repeaterGroupClass" } }, queries: [{ propertyName: "contextMenu", first: true, predicate: SkyRepeaterItemContextMenuComponent, descendants: true, read: i0.ElementRef }, { propertyName: "repeaterItemContentComponents", predicate: SkyRepeaterItemContentComponent }], viewQueries: [{ propertyName: "grabHandle", first: true, predicate: ["grabHandle"], descendants: true, read: i0.ElementRef }, { propertyName: "itemContentRef", first: true, predicate: ["itemContentRef"], descendants: true, read: i0.ElementRef }, { propertyName: "itemHeaderRef", first: true, predicate: ["itemHeaderRef"], descendants: true, read: i0.ElementRef }, { propertyName: "itemRef", first: true, predicate: ["itemRef"], descendants: true, read: i0.ElementRef }], ngImport: i0__namespace, template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n role=\"option\"\n [attr.aria-label]=\"itemName\"\n [attr.aria-selected]=\"selectable ? isSelected : null\"\n [ngClass]=\"{\n 'sky-repeater-item-active': isActive,\n 'sky-repeater-item-collapsible': isCollapsible,\n 'sky-repeater-item-selected': isSelected\n }\"\n (click)=\"onRepeaterItemClick($event)\"\n (keydown)=\"onItemKeyDown($event)\"\n #itemRef\n>\n <div #inlineDelete>\n <ng-content select=\"sky-inline-delete\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"inlineFormTemplate\">\n <sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showInlineForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n >\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </sky-inline-form>\n </ng-container>\n\n <ng-container *ngIf=\"!inlineFormTemplate\">\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #skyRepeaterItemLeft>\n <div class=\"sky-repeater-item-left\">\n <ng-container *ngIf=\"reorderable\">\n <span\n aria-live=\"assertive\"\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-state'\"\n >\n {{ reorderState }}\n </span>\n <span\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-instructions'\"\n >{{ reorderButtonLabel }}</span\n >\n <button\n class=\"sky-btn sky-tile-tools-control sky-repeater-item-grab-handle\"\n type=\"button\"\n [attr.aria-describedby]=\"contentId + '-reorder-instructions'\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_label_default' | skyLibResources)\n \"\n (blur)=\"onReorderHandleBlur($event)\"\n (keydown)=\"onReorderHandleKeyDown($event)\"\n #grabHandle\n >\n <sky-icon icon=\"arrows-v\"></sky-icon>\n </button>\n </ng-container>\n <sky-checkbox\n *ngIf=\"selectable\"\n class=\"sky-repeater-item-checkbox\"\n [checked]=\"isSelected\"\n [label]=\"\n itemName\n ? ('skyux_repeater_item_checkbox_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_checkbox_label_default' | skyLibResources)\n \"\n (change)=\"onCheckboxChange($event)\"\n >\n </sky-checkbox>\n <div\n class=\"sky-repeater-item-context-menu\"\n [hidden]=\"contextMenuEl.children.length === 0\"\n #contextMenuEl\n >\n <ng-content select=\"sky-repeater-item-context-menu\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skyRepeaterItemRight>\n <div class=\"sky-repeater-item-right\" #itemHeaderRef>\n <div\n class=\"sky-repeater-item-header\"\n [hidden]=\"titleRef.children.length === 0\"\n (click)=\"headerClick()\"\n >\n <div class=\"sky-repeater-item-title sky-emphasized\" #titleRef>\n <ng-content select=\"sky-repeater-item-title\"></ng-content>\n </div>\n <button\n *ngIf=\"reorderable\"\n class=\"sky-btn sky-btn-link sky-repeater-item-reorder-top\"\n type=\"button\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_top_label'\n | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_top_label_default'\n | skyLibResources)\n \"\n (click)=\"moveToTop($event)\"\n >\n <sky-icon icon=\"arrow-circle-up\"></sky-icon>\n {{ 'skyux_repeater_item_reorder_top' | skyLibResources }}\n </button>\n <div *ngIf=\"isCollapsible\" class=\"sky-repeater-item-chevron\">\n <sky-chevron\n [ariaControls]=\"contentId\"\n [ariaLabel]=\"\n itemName\n ? ('skyux_repeater_item_expand' | skyLibResources: itemName)\n : ('skyux_repeater_item_expand_default' | skyLibResources)\n \"\n [direction]=\"isExpanded ? 'up' : 'down'\"\n (directionChange)=\"chevronDirectionChange($event)\"\n >\n </sky-chevron>\n </div>\n <!-- Used for when the chevron is hidden to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"!isCollapsible && !contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder\"\n ></div>\n <!-- Used to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder-with-context\"\n ></div>\n </div>\n <div\n class=\"sky-repeater-item-content\"\n [id]=\"contentId\"\n [@skyAnimationSlide]=\"slideDirection\"\n #itemContentRef\n >\n <ng-content select=\"sky-repeater-item-content\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["sky-repeater-item .sky-repeater-item{display:flex;border-bottom:1px dotted #cdcfd2;padding-top:0;position:relative;transition:box-shadow .15s;align-items:flex-start}sky-repeater-item .sky-repeater-item sky-inline-form{display:block;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form>:first-child,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-first,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{display:flex;flex:1 0 auto;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:10px}sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}sky-repeater-item .sky-repeater-item.sky-repeater-item-active .sky-inline-delete{margin-left:-4px;width:calc(100% + 4px)}sky-repeater-item .sky-repeater-item-left{display:flex;padding-top:10px;align-items:center}sky-repeater-item .sky-repeater-item-left sky-checkbox{display:flex}sky-repeater-item .sky-repeater-item-right{max-width:100%;flex-grow:1;align-self:center}sky-repeater-item .sky-repeater-item-header{align-items:center;display:flex;padding-top:10px}sky-repeater-item .sky-repeater-item-chevron{margin-left:10px}sky-repeater-item .sky-repeater-item-chevron-placeholder{height:24px}sky-repeater-item .sky-repeater-item-chevron-placeholder-with-context{height:29px}sky-repeater-item .sky-repeater-item-context-menu{padding:0 10px 0 0}sky-repeater-item .sky-repeater-item-checkbox{padding:0 5px 0 0}sky-repeater-item .sky-repeater-item-selected{background-color:#f1eef6;transition:background-color .15s}sky-repeater-item .sky-repeater-item-title{margin:0;flex-grow:1;line-height:1.1;color:#212327}sky-repeater-item sky-repeater-item-content{display:block;margin:10px 0 0}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-header{cursor:pointer}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-content{padding-right:34px}sky-repeater-item .sky-repeater-item-collapsed .sky-repeater-item-content{display:none}sky-repeater-item .sky-repeater-item-grab-handle{color:#cdcfd2;cursor:pointer;border:0;width:24px;height:24px;cursor:grab;cursor:-moz-grab;padding:0;margin-right:10px}sky-repeater-item .sky-repeater-item-grab-handle:hover{color:#979ba2;transition:color .15s}sky-repeater-item.sky-repeater-item-dragging.gu-mirror{opacity:initial;-ms-filter:initial;filter:initial;background-color:#fff;box-shadow:0 0 5px #0000004d}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item{background-color:#d8d8d8}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-left,sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-right{visibility:hidden}sky-repeater-item.sky-repeater-item-dragging .sky-repeater-item-grab-handle{cursor:grabbing;cursor:-webkit-grabbing}.sky-theme-modern sky-repeater-item .sky-repeater-item{padding-bottom:20px}.sky-theme-modern sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:transparent;border-left-color:#1870b8}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus,.sky-theme-modern sky-repeater-item .sky-repeater-item:active:focus{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern sky-repeater-item .sky-repeater-item-header[hidden]+.sky-repeater-item-content sky-repeater-item-content{margin:20px 0 0}.sky-theme-modern sky-repeater-item .sky-repeater-item-header,.sky-theme-modern sky-repeater-item .sky-repeater-item-left{padding-top:20px}.sky-theme-modern sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:20px}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item{border-bottom-color:#686c73}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item.sky-repeater-item-active{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item-title{color:#fbfcfe}\n"], components: [{ type: i4__namespace$1.λ1, selector: "sky-inline-form", inputs: ["config", "template", "showForm"], outputs: ["close"] }, { type: i1__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i6__namespace.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "required"], outputs: ["change", "checkedChange", "disabledChange"] }, { type: i1__namespace.λ2, selector: "sky-chevron", inputs: ["ariaControls", "ariaLabel", "direction", "disabled"], outputs: ["directionChange"] }], directives: [{ type: i2__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "skyLibResources": i4__namespace.SkyLibResourcesPipe }, animations: [animations.skyAnimationSlide], encapsulation: i0__namespace.ViewEncapsulation.None });
|
|
1355
|
+
SkyRepeaterItemComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyRepeaterItemComponent, selector: "sky-repeater-item", inputs: { disabled: "disabled", itemName: "itemName", inlineFormConfig: "inlineFormConfig", inlineFormTemplate: "inlineFormTemplate", isExpanded: "isExpanded", isSelected: "isSelected", reorderable: "reorderable", selectable: "selectable", showInlineForm: "showInlineForm", tag: "tag" }, outputs: { collapse: "collapse", expand: "expand", inlineFormClose: "inlineFormClose", isSelectedChange: "isSelectedChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "tabindex": "this.tabindex", "class": "this.repeaterGroupClass" } }, queries: [{ propertyName: "contextMenu", first: true, predicate: SkyRepeaterItemContextMenuComponent, descendants: true, read: i0.ElementRef }, { propertyName: "repeaterItemContentComponents", predicate: SkyRepeaterItemContentComponent }], viewQueries: [{ propertyName: "grabHandle", first: true, predicate: ["grabHandle"], descendants: true, read: i0.ElementRef }, { propertyName: "itemContentRef", first: true, predicate: ["itemContentRef"], descendants: true, read: i0.ElementRef }, { propertyName: "itemHeaderRef", first: true, predicate: ["itemHeaderRef"], descendants: true, read: i0.ElementRef }, { propertyName: "itemRef", first: true, predicate: ["itemRef"], descendants: true, read: i0.ElementRef }], ngImport: i0__namespace, template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n [attr.aria-label]=\"itemName\"\n [attr.aria-selected]=\"selectable ? isSelected : undefined\"\n [attr.role]=\"(itemRole$ | async).item\"\n [ngClass]=\"{\n 'sky-repeater-item-active': isActive,\n 'sky-repeater-item-collapsible': isCollapsible,\n 'sky-repeater-item-selected': isSelected\n }\"\n (click)=\"onRepeaterItemClick($event)\"\n #itemRef\n>\n <div #inlineDelete>\n <ng-content select=\"sky-inline-delete\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"inlineFormTemplate\">\n <sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showInlineForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n >\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </sky-inline-form>\n </ng-container>\n\n <ng-container *ngIf=\"!inlineFormTemplate\">\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #skyRepeaterItemLeft>\n <div class=\"sky-repeater-item-left\">\n <ng-container *ngIf=\"reorderable\">\n <span\n aria-live=\"assertive\"\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-state'\"\n >\n {{ reorderState }}\n </span>\n <span\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-instructions'\"\n >{{ reorderButtonLabel }}</span\n >\n <button\n class=\"sky-btn sky-tile-tools-control sky-repeater-item-grab-handle\"\n type=\"button\"\n [attr.aria-describedby]=\"contentId + '-reorder-instructions'\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_label_default' | skyLibResources)\n \"\n (blur)=\"onReorderHandleBlur($event)\"\n (keydown)=\"onReorderHandleKeyDown($event)\"\n #grabHandle\n >\n <sky-icon icon=\"arrows-v\"></sky-icon>\n </button>\n </ng-container>\n <sky-checkbox\n *ngIf=\"selectable\"\n class=\"sky-repeater-item-checkbox\"\n [checked]=\"isSelected\"\n [label]=\"\n itemName\n ? ('skyux_repeater_item_checkbox_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_checkbox_label_default' | skyLibResources)\n \"\n (change)=\"onCheckboxChange($event)\"\n >\n </sky-checkbox>\n <div\n class=\"sky-repeater-item-context-menu\"\n [hidden]=\"contextMenuEl.children.length === 0\"\n #contextMenuEl\n >\n <ng-content select=\"sky-repeater-item-context-menu\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skyRepeaterItemRight>\n <div class=\"sky-repeater-item-right\" #itemHeaderRef>\n <div\n class=\"sky-repeater-item-header\"\n [hidden]=\"titleRef.children.length === 0\"\n (click)=\"headerClick()\"\n >\n <div\n class=\"sky-repeater-item-title sky-emphasized\"\n #titleRef\n [attr.role]=\"(itemRole$ | async).title\"\n >\n <ng-content select=\"sky-repeater-item-title\"></ng-content>\n </div>\n <button\n *ngIf=\"reorderable\"\n class=\"sky-btn sky-btn-link sky-repeater-item-reorder-top\"\n type=\"button\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_top_label'\n | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_top_label_default'\n | skyLibResources)\n \"\n (click)=\"moveToTop($event)\"\n >\n <sky-icon icon=\"arrow-circle-up\"></sky-icon>\n {{ 'skyux_repeater_item_reorder_top' | skyLibResources }}\n </button>\n <div *ngIf=\"isCollapsible\" class=\"sky-repeater-item-chevron\">\n <sky-chevron\n [ariaControls]=\"contentId\"\n [ariaLabel]=\"\n itemName\n ? ('skyux_repeater_item_expand' | skyLibResources: itemName)\n : ('skyux_repeater_item_expand_default' | skyLibResources)\n \"\n [direction]=\"isExpanded ? 'up' : 'down'\"\n (directionChange)=\"chevronDirectionChange($event)\"\n >\n </sky-chevron>\n </div>\n <!-- Used for when the chevron is hidden to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"!isCollapsible && !contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder\"\n ></div>\n <!-- Used to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder-with-context\"\n ></div>\n </div>\n <div\n class=\"sky-repeater-item-content\"\n [id]=\"contentId\"\n [@skyAnimationSlide]=\"slideDirection\"\n #itemContentRef\n [attr.role]=\"(itemRole$ | async).content\"\n >\n <ng-content select=\"sky-repeater-item-content\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["sky-repeater-item .sky-repeater-item{display:flex;border-bottom:1px dotted #cdcfd2;padding-top:0;position:relative;transition:box-shadow .15s;align-items:flex-start}sky-repeater-item .sky-repeater-item sky-inline-form{display:block;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form>:first-child,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-first,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{display:flex;flex:1 0 auto;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:10px}sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}sky-repeater-item .sky-repeater-item.sky-repeater-item-active .sky-inline-delete{margin-left:-4px;width:calc(100% + 4px)}sky-repeater-item .sky-repeater-item-left{display:flex;padding-top:10px;align-items:center}sky-repeater-item .sky-repeater-item-left sky-checkbox{display:flex}sky-repeater-item .sky-repeater-item-right{max-width:100%;flex-grow:1;align-self:center}sky-repeater-item .sky-repeater-item-header{align-items:center;display:flex;padding-top:10px}sky-repeater-item .sky-repeater-item-chevron{margin-left:10px}sky-repeater-item .sky-repeater-item-chevron-placeholder{height:24px}sky-repeater-item .sky-repeater-item-chevron-placeholder-with-context{height:29px}sky-repeater-item .sky-repeater-item-context-menu{padding:0 10px 0 0}sky-repeater-item .sky-repeater-item-checkbox{padding:0 5px 0 0}sky-repeater-item .sky-repeater-item-selected{background-color:#f1eef6;transition:background-color .15s}sky-repeater-item .sky-repeater-item-title{margin:0;flex-grow:1;line-height:1.1;color:#212327}sky-repeater-item sky-repeater-item-content{display:block;margin:10px 0 0}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-header{cursor:pointer}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-content{padding-right:34px}sky-repeater-item .sky-repeater-item-collapsed .sky-repeater-item-content{display:none}sky-repeater-item .sky-repeater-item-grab-handle{color:#cdcfd2;cursor:pointer;border:0;width:24px;height:24px;cursor:grab;cursor:-moz-grab;padding:0;margin-right:10px}sky-repeater-item .sky-repeater-item-grab-handle:hover{color:#979ba2;transition:color .15s}sky-repeater-item.sky-repeater-item-dragging.gu-mirror{opacity:initial;-ms-filter:initial;filter:initial;background-color:#fff;box-shadow:0 0 5px #0000004d}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item{background-color:#d8d8d8}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-left,sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-right{visibility:hidden}sky-repeater-item.sky-repeater-item-dragging .sky-repeater-item-grab-handle{cursor:grabbing;cursor:-webkit-grabbing}.sky-theme-modern sky-repeater-item .sky-repeater-item{padding-bottom:20px}.sky-theme-modern sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:transparent;border-left-color:#1870b8}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus,.sky-theme-modern sky-repeater-item .sky-repeater-item:active:focus{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern sky-repeater-item .sky-repeater-item-header[hidden]+.sky-repeater-item-content sky-repeater-item-content{margin:20px 0 0}.sky-theme-modern sky-repeater-item .sky-repeater-item-header,.sky-theme-modern sky-repeater-item .sky-repeater-item-left{padding-top:20px}.sky-theme-modern sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:20px}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item{border-bottom-color:#686c73}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item.sky-repeater-item-active{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item-title{color:#fbfcfe}\n"], components: [{ type: i4__namespace$1.λ1, selector: "sky-inline-form", inputs: ["config", "template", "showForm"], outputs: ["close"] }, { type: i1__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i6__namespace.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "required"], outputs: ["change", "checkedChange", "disabledChange"] }, { type: i1__namespace.λ2, selector: "sky-chevron", inputs: ["ariaControls", "ariaLabel", "direction", "disabled"], outputs: ["directionChange"] }], directives: [{ type: i2__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i2__namespace.AsyncPipe, "skyLibResources": i4__namespace.SkyLibResourcesPipe }, animations: [animations.skyAnimationSlide], encapsulation: i0__namespace.ViewEncapsulation.None });
|
|
1260
1356
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyRepeaterItemComponent, decorators: [{
|
|
1261
1357
|
type: i0.Component,
|
|
1262
1358
|
args: [{
|
|
1263
1359
|
selector: 'sky-repeater-item',
|
|
1264
1360
|
styles: ["sky-repeater-item .sky-repeater-item{display:flex;border-bottom:1px dotted #cdcfd2;padding-top:0;position:relative;transition:box-shadow .15s;align-items:flex-start}sky-repeater-item .sky-repeater-item sky-inline-form{display:block;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form>:first-child,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-first,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{display:flex;flex:1 0 auto;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:10px}sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}sky-repeater-item .sky-repeater-item.sky-repeater-item-active .sky-inline-delete{margin-left:-4px;width:calc(100% + 4px)}sky-repeater-item .sky-repeater-item-left{display:flex;padding-top:10px;align-items:center}sky-repeater-item .sky-repeater-item-left sky-checkbox{display:flex}sky-repeater-item .sky-repeater-item-right{max-width:100%;flex-grow:1;align-self:center}sky-repeater-item .sky-repeater-item-header{align-items:center;display:flex;padding-top:10px}sky-repeater-item .sky-repeater-item-chevron{margin-left:10px}sky-repeater-item .sky-repeater-item-chevron-placeholder{height:24px}sky-repeater-item .sky-repeater-item-chevron-placeholder-with-context{height:29px}sky-repeater-item .sky-repeater-item-context-menu{padding:0 10px 0 0}sky-repeater-item .sky-repeater-item-checkbox{padding:0 5px 0 0}sky-repeater-item .sky-repeater-item-selected{background-color:#f1eef6;transition:background-color .15s}sky-repeater-item .sky-repeater-item-title{margin:0;flex-grow:1;line-height:1.1;color:#212327}sky-repeater-item sky-repeater-item-content{display:block;margin:10px 0 0}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-header{cursor:pointer}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-content{padding-right:34px}sky-repeater-item .sky-repeater-item-collapsed .sky-repeater-item-content{display:none}sky-repeater-item .sky-repeater-item-grab-handle{color:#cdcfd2;cursor:pointer;border:0;width:24px;height:24px;cursor:grab;cursor:-moz-grab;padding:0;margin-right:10px}sky-repeater-item .sky-repeater-item-grab-handle:hover{color:#979ba2;transition:color .15s}sky-repeater-item.sky-repeater-item-dragging.gu-mirror{opacity:initial;-ms-filter:initial;filter:initial;background-color:#fff;box-shadow:0 0 5px #0000004d}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item{background-color:#d8d8d8}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-left,sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-right{visibility:hidden}sky-repeater-item.sky-repeater-item-dragging .sky-repeater-item-grab-handle{cursor:grabbing;cursor:-webkit-grabbing}.sky-theme-modern sky-repeater-item .sky-repeater-item{padding-bottom:20px}.sky-theme-modern sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:transparent;border-left-color:#1870b8}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus,.sky-theme-modern sky-repeater-item .sky-repeater-item:active:focus{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern sky-repeater-item .sky-repeater-item-header[hidden]+.sky-repeater-item-content sky-repeater-item-content{margin:20px 0 0}.sky-theme-modern sky-repeater-item .sky-repeater-item-header,.sky-theme-modern sky-repeater-item .sky-repeater-item-left{padding-top:20px}.sky-theme-modern sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:20px}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item{border-bottom-color:#686c73}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item.sky-repeater-item-active{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item-title{color:#fbfcfe}\n"],
|
|
1265
|
-
template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n
|
|
1361
|
+
template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n [attr.aria-label]=\"itemName\"\n [attr.aria-selected]=\"selectable ? isSelected : undefined\"\n [attr.role]=\"(itemRole$ | async).item\"\n [ngClass]=\"{\n 'sky-repeater-item-active': isActive,\n 'sky-repeater-item-collapsible': isCollapsible,\n 'sky-repeater-item-selected': isSelected\n }\"\n (click)=\"onRepeaterItemClick($event)\"\n #itemRef\n>\n <div #inlineDelete>\n <ng-content select=\"sky-inline-delete\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"inlineFormTemplate\">\n <sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showInlineForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n >\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </sky-inline-form>\n </ng-container>\n\n <ng-container *ngIf=\"!inlineFormTemplate\">\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #skyRepeaterItemLeft>\n <div class=\"sky-repeater-item-left\">\n <ng-container *ngIf=\"reorderable\">\n <span\n aria-live=\"assertive\"\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-state'\"\n >\n {{ reorderState }}\n </span>\n <span\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-instructions'\"\n >{{ reorderButtonLabel }}</span\n >\n <button\n class=\"sky-btn sky-tile-tools-control sky-repeater-item-grab-handle\"\n type=\"button\"\n [attr.aria-describedby]=\"contentId + '-reorder-instructions'\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_label_default' | skyLibResources)\n \"\n (blur)=\"onReorderHandleBlur($event)\"\n (keydown)=\"onReorderHandleKeyDown($event)\"\n #grabHandle\n >\n <sky-icon icon=\"arrows-v\"></sky-icon>\n </button>\n </ng-container>\n <sky-checkbox\n *ngIf=\"selectable\"\n class=\"sky-repeater-item-checkbox\"\n [checked]=\"isSelected\"\n [label]=\"\n itemName\n ? ('skyux_repeater_item_checkbox_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_checkbox_label_default' | skyLibResources)\n \"\n (change)=\"onCheckboxChange($event)\"\n >\n </sky-checkbox>\n <div\n class=\"sky-repeater-item-context-menu\"\n [hidden]=\"contextMenuEl.children.length === 0\"\n #contextMenuEl\n >\n <ng-content select=\"sky-repeater-item-context-menu\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skyRepeaterItemRight>\n <div class=\"sky-repeater-item-right\" #itemHeaderRef>\n <div\n class=\"sky-repeater-item-header\"\n [hidden]=\"titleRef.children.length === 0\"\n (click)=\"headerClick()\"\n >\n <div\n class=\"sky-repeater-item-title sky-emphasized\"\n #titleRef\n [attr.role]=\"(itemRole$ | async).title\"\n >\n <ng-content select=\"sky-repeater-item-title\"></ng-content>\n </div>\n <button\n *ngIf=\"reorderable\"\n class=\"sky-btn sky-btn-link sky-repeater-item-reorder-top\"\n type=\"button\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_top_label'\n | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_top_label_default'\n | skyLibResources)\n \"\n (click)=\"moveToTop($event)\"\n >\n <sky-icon icon=\"arrow-circle-up\"></sky-icon>\n {{ 'skyux_repeater_item_reorder_top' | skyLibResources }}\n </button>\n <div *ngIf=\"isCollapsible\" class=\"sky-repeater-item-chevron\">\n <sky-chevron\n [ariaControls]=\"contentId\"\n [ariaLabel]=\"\n itemName\n ? ('skyux_repeater_item_expand' | skyLibResources: itemName)\n : ('skyux_repeater_item_expand_default' | skyLibResources)\n \"\n [direction]=\"isExpanded ? 'up' : 'down'\"\n (directionChange)=\"chevronDirectionChange($event)\"\n >\n </sky-chevron>\n </div>\n <!-- Used for when the chevron is hidden to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"!isCollapsible && !contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder\"\n ></div>\n <!-- Used to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder-with-context\"\n ></div>\n </div>\n <div\n class=\"sky-repeater-item-content\"\n [id]=\"contentId\"\n [@skyAnimationSlide]=\"slideDirection\"\n #itemContentRef\n [attr.role]=\"(itemRole$ | async).content\"\n >\n <ng-content select=\"sky-repeater-item-content\"></ng-content>\n </div>\n </div>\n</ng-template>\n",
|
|
1266
1362
|
animations: [animations.skyAnimationSlide],
|
|
1267
1363
|
encapsulation: i0.ViewEncapsulation.None,
|
|
1268
1364
|
}]
|
|
1269
|
-
}], ctorParameters: function () { return [{ type: SkyRepeaterService }, { type: i0__namespace.ChangeDetectorRef }, { type: SkyRepeaterAdapterService }, { type: i0__namespace.ElementRef }, { type: i4__namespace.SkyLibResourcesService }]; }, propDecorators: {
|
|
1365
|
+
}], ctorParameters: function () { return [{ type: SkyRepeaterService }, { type: i0__namespace.ChangeDetectorRef }, { type: SkyRepeaterAdapterService }, { type: i0__namespace.ElementRef }, { type: i4__namespace.SkyLibResourcesService }]; }, propDecorators: { tabindex: [{
|
|
1366
|
+
type: i0.HostBinding
|
|
1367
|
+
}], disabled: [{
|
|
1368
|
+
type: i0.Input
|
|
1369
|
+
}], itemName: [{
|
|
1270
1370
|
type: i0.Input
|
|
1271
1371
|
}], inlineFormConfig: [{
|
|
1272
1372
|
type: i0.Input
|
|
@@ -1313,6 +1413,9 @@
|
|
|
1313
1413
|
}], repeaterItemContentComponents: [{
|
|
1314
1414
|
type: i0.ContentChildren,
|
|
1315
1415
|
args: [SkyRepeaterItemContentComponent]
|
|
1416
|
+
}], onKeydown: [{
|
|
1417
|
+
type: i0.HostListener,
|
|
1418
|
+
args: ['keydown', ['$event']]
|
|
1316
1419
|
}] } });
|
|
1317
1420
|
|
|
1318
1421
|
/*! *****************************************************************************
|
|
@@ -1749,6 +1852,7 @@
|
|
|
1749
1852
|
if (_this.activeIndex !== undefined) {
|
|
1750
1853
|
_this.repeaterService.activateItemByIndex(_this.activeIndex);
|
|
1751
1854
|
}
|
|
1855
|
+
_this.updateRole();
|
|
1752
1856
|
});
|
|
1753
1857
|
});
|
|
1754
1858
|
setTimeout(function () {
|
|
@@ -1756,6 +1860,7 @@
|
|
|
1756
1860
|
_this.items.forEach(function (item) {
|
|
1757
1861
|
item.reorderable = _this.reorderable;
|
|
1758
1862
|
});
|
|
1863
|
+
_this.updateRole();
|
|
1759
1864
|
}, 0);
|
|
1760
1865
|
};
|
|
1761
1866
|
SkyRepeaterComponent.prototype.ngOnChanges = function (changes) {
|
|
@@ -1771,6 +1876,7 @@
|
|
|
1771
1876
|
if (this.items) {
|
|
1772
1877
|
this.items.forEach(function (item) { return (item.reorderable = _this.reorderable); });
|
|
1773
1878
|
}
|
|
1879
|
+
this.updateRole();
|
|
1774
1880
|
this.changeDetector.markForCheck();
|
|
1775
1881
|
}
|
|
1776
1882
|
};
|
|
@@ -1779,6 +1885,12 @@
|
|
|
1779
1885
|
this.ngUnsubscribe.complete();
|
|
1780
1886
|
this.destroyDragAndDrop();
|
|
1781
1887
|
};
|
|
1888
|
+
SkyRepeaterComponent.prototype.ngOnInit = function () {
|
|
1889
|
+
this.updateRole();
|
|
1890
|
+
};
|
|
1891
|
+
SkyRepeaterComponent.prototype.onCdkObserveContent = function () {
|
|
1892
|
+
this.updateRole();
|
|
1893
|
+
};
|
|
1782
1894
|
SkyRepeaterComponent.prototype.updateForExpandMode = function (itemAdded) {
|
|
1783
1895
|
if (this.items) {
|
|
1784
1896
|
var foundExpanded_1 = false;
|
|
@@ -1797,6 +1909,7 @@
|
|
|
1797
1909
|
foundExpanded_1 = true;
|
|
1798
1910
|
}
|
|
1799
1911
|
});
|
|
1912
|
+
this.updateRole();
|
|
1800
1913
|
}
|
|
1801
1914
|
};
|
|
1802
1915
|
SkyRepeaterComponent.prototype.initializeDragAndDrop = function () {
|
|
@@ -1814,8 +1927,8 @@
|
|
|
1814
1927
|
var draggedItemIndex;
|
|
1815
1928
|
this.dragulaService.drag
|
|
1816
1929
|
.pipe(operators.takeUntil(this.dragulaUnsubscribe))
|
|
1817
|
-
.subscribe(function (
|
|
1818
|
-
var
|
|
1930
|
+
.subscribe(function (_c) {
|
|
1931
|
+
var _d = __read(_c, 2), groupName = _d[0], subject = _d[1];
|
|
1819
1932
|
/* istanbul ignore else */
|
|
1820
1933
|
if (groupName === _this.dragulaGroupName) {
|
|
1821
1934
|
_this.renderer.addClass(subject, 'sky-repeater-item-dragging');
|
|
@@ -1824,8 +1937,8 @@
|
|
|
1824
1937
|
});
|
|
1825
1938
|
this.dragulaService.dragend
|
|
1826
1939
|
.pipe(operators.takeUntil(this.dragulaUnsubscribe))
|
|
1827
|
-
.subscribe(function (
|
|
1828
|
-
var
|
|
1940
|
+
.subscribe(function (_c) {
|
|
1941
|
+
var _d = __read(_c, 2), groupName = _d[0], subject = _d[1];
|
|
1829
1942
|
/* istanbul ignore else */
|
|
1830
1943
|
if (groupName === _this.dragulaGroupName) {
|
|
1831
1944
|
_this.renderer.removeClass(subject, 'sky-repeater-item-dragging');
|
|
@@ -1864,16 +1977,66 @@
|
|
|
1864
1977
|
return item.tag !== undefined;
|
|
1865
1978
|
});
|
|
1866
1979
|
};
|
|
1980
|
+
SkyRepeaterComponent.prototype.updateRole = function () {
|
|
1981
|
+
// Determine a role using a hierarchy based on https://www.w3.org/TR/wai-aria-practices-1.1/
|
|
1982
|
+
// 1. If there are one or more interactions in the repeater item projected content, use grid.
|
|
1983
|
+
// 2. If there are selectable repeater items and no other interactions, use listbox.
|
|
1984
|
+
// 3. If there are no interactions, use list.
|
|
1985
|
+
var _a, _b;
|
|
1986
|
+
// Default to list role.
|
|
1987
|
+
var autoRole = 'list';
|
|
1988
|
+
var roleMap = {
|
|
1989
|
+
list: { item: 'listitem', title: undefined, content: undefined },
|
|
1990
|
+
listbox: { item: 'option', title: undefined, content: undefined },
|
|
1991
|
+
grid: { item: 'row', title: 'rowheader', content: 'gridcell' },
|
|
1992
|
+
};
|
|
1993
|
+
// Based on https://html.spec.whatwg.org/multipage/dom.html#interactive-content
|
|
1994
|
+
var interactionSelector = [
|
|
1995
|
+
'a[href]',
|
|
1996
|
+
'audio[controls]',
|
|
1997
|
+
'button',
|
|
1998
|
+
'details',
|
|
1999
|
+
'embed',
|
|
2000
|
+
'iframe',
|
|
2001
|
+
'img[usemap]',
|
|
2002
|
+
'input:not([type="hidden"])',
|
|
2003
|
+
'label',
|
|
2004
|
+
'select',
|
|
2005
|
+
'textarea',
|
|
2006
|
+
'video[controls]',
|
|
2007
|
+
'[contenteditable]',
|
|
2008
|
+
'.sky-repeater[role="grid"]',
|
|
2009
|
+
]
|
|
2010
|
+
.map(function (selector) { return "sky-repeater-item-title " + selector + ":not([hidden]), sky-repeater-item-content " + selector + ":not([hidden])"; })
|
|
2011
|
+
.concat(["skyux-dropdown"])
|
|
2012
|
+
.join(', ');
|
|
2013
|
+
var hasInteraction = this.reorderable ||
|
|
2014
|
+
((_a = this.items) === null || _a === void 0 ? void 0 : _a.some(function (item) { return item.isCollapsible; })) ||
|
|
2015
|
+
!!this.elementRef.nativeElement.querySelector(interactionSelector);
|
|
2016
|
+
if (hasInteraction) {
|
|
2017
|
+
// If the repeater matches interaction selector https://www.w3.org/TR/wai-aria-practices-1.1/#grid
|
|
2018
|
+
autoRole = 'grid';
|
|
2019
|
+
}
|
|
2020
|
+
else if ((_b = this.items) === null || _b === void 0 ? void 0 : _b.some(function (item) { return item.selectable; })) {
|
|
2021
|
+
// If the only interaction is select https://www.w3.org/TR/wai-aria-practices-1.1/#Listbox
|
|
2022
|
+
autoRole = 'listbox';
|
|
2023
|
+
}
|
|
2024
|
+
if (this.role !== autoRole) {
|
|
2025
|
+
this.repeaterService.itemRole.next(Object.assign({}, roleMap[autoRole]));
|
|
2026
|
+
this.role = "" + autoRole;
|
|
2027
|
+
this.changeDetector.markForCheck();
|
|
2028
|
+
}
|
|
2029
|
+
};
|
|
1867
2030
|
return SkyRepeaterComponent;
|
|
1868
2031
|
}());
|
|
1869
2032
|
SkyRepeaterComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyRepeaterComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: SkyRepeaterService }, { token: SkyRepeaterAdapterService }, { token: i3__namespace$1.DragulaService }, { token: i0__namespace.ElementRef }, { token: i0__namespace.Renderer2 }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
1870
|
-
SkyRepeaterComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyRepeaterComponent, selector: "sky-repeater", inputs: { activeIndex: "activeIndex", ariaLabel: "ariaLabel", reorderable: "reorderable", expandMode: "expandMode" }, outputs: { activeIndexChange: "activeIndexChange", orderChange: "orderChange" }, providers: [SkyRepeaterService, SkyRepeaterAdapterService], queries: [{ propertyName: "items", predicate: SkyRepeaterItemComponent }], usesOnChanges: true, ngImport: i0__namespace, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n role=\"
|
|
2033
|
+
SkyRepeaterComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyRepeaterComponent, selector: "sky-repeater", inputs: { activeIndex: "activeIndex", ariaLabel: "ariaLabel", reorderable: "reorderable", expandMode: "expandMode" }, outputs: { activeIndexChange: "activeIndexChange", orderChange: "orderChange" }, providers: [SkyRepeaterService, SkyRepeaterAdapterService], queries: [{ propertyName: "items", predicate: SkyRepeaterItemComponent }], usesOnChanges: true, ngImport: i0__namespace, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"], directives: [{ type: i3__namespace$1.DragulaDirective, selector: "[dragula]", inputs: ["dragula", "dragulaModel", "dragulaOptions"] }, { type: i4__namespace$2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], pipes: { "skyLibResources": i4__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
1871
2034
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyRepeaterComponent, decorators: [{
|
|
1872
2035
|
type: i0.Component,
|
|
1873
2036
|
args: [{
|
|
1874
2037
|
selector: 'sky-repeater',
|
|
1875
2038
|
styles: [".sky-repeater{padding:0}\n"],
|
|
1876
|
-
template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n role=\"
|
|
2039
|
+
template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n",
|
|
1877
2040
|
providers: [SkyRepeaterService, SkyRepeaterAdapterService],
|
|
1878
2041
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
1879
2042
|
}]
|
|
@@ -1906,6 +2069,7 @@
|
|
|
1906
2069
|
SkyRepeaterItemContextMenuComponent,
|
|
1907
2070
|
SkyRepeaterItemTitleComponent], imports: [i2.CommonModule,
|
|
1908
2071
|
i3$1.DragulaModule,
|
|
2072
|
+
i4$2.ObserversModule,
|
|
1909
2073
|
i1.SkyChevronModule,
|
|
1910
2074
|
i6.SkyCheckboxModule,
|
|
1911
2075
|
i1.SkyIconModule,
|
|
@@ -1918,6 +2082,7 @@
|
|
|
1918
2082
|
SkyRepeaterModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyRepeaterModule, imports: [[
|
|
1919
2083
|
i2.CommonModule,
|
|
1920
2084
|
i3$1.DragulaModule,
|
|
2085
|
+
i4$2.ObserversModule,
|
|
1921
2086
|
i1.SkyChevronModule,
|
|
1922
2087
|
i6.SkyCheckboxModule,
|
|
1923
2088
|
i1.SkyIconModule,
|
|
@@ -1937,6 +2102,7 @@
|
|
|
1937
2102
|
imports: [
|
|
1938
2103
|
i2.CommonModule,
|
|
1939
2104
|
i3$1.DragulaModule,
|
|
2105
|
+
i4$2.ObserversModule,
|
|
1940
2106
|
i1.SkyChevronModule,
|
|
1941
2107
|
i6.SkyCheckboxModule,
|
|
1942
2108
|
i1.SkyIconModule,
|