carbon-components-angular 3.14.5 → 3.15.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.
- package/bundle/carbon-angular.umd.js +161 -5
- package/bundle/carbon-angular.umd.js.map +1 -1
- package/combobox/combobox.component.js +6 -8
- package/combobox/combobox.component.js.map +1 -1
- package/datepicker/datepicker.component.d.ts +8 -4
- package/datepicker/datepicker.component.js +26 -10
- package/datepicker/datepicker.component.js.map +1 -1
- package/datepicker/datepicker.component.metadata.json +1 -1
- package/datepicker/datepicker.component.ngfactory.js +1 -1
- package/datepicker/datepicker.component.ngsummary.json +1 -1
- package/docs/documentation/classes/ToggleChange.html +1 -1
- package/docs/documentation/components/ClickableTile.html +173 -160
- package/docs/documentation/components/ComboBox.html +5 -7
- package/docs/documentation/components/DatePicker.html +109 -36
- package/docs/documentation/components/ExpandableTile.html +1 -1
- package/docs/documentation/components/HeaderItem.html +241 -11
- package/docs/documentation/components/Pagination.html +1 -1
- package/docs/documentation/components/Select.html +12 -12
- package/docs/documentation/components/SideNavItem.html +236 -13
- package/docs/documentation/components/TabHeaders.html +5 -5
- package/docs/documentation/components/Table.html +22 -22
- package/docs/documentation/components/TableToolbar.html +1 -1
- package/docs/documentation/components/TimePickerSelect.html +4 -4
- package/docs/documentation/components/Toggle.html +1 -1
- package/docs/documentation/coverage.html +15 -15
- package/docs/documentation/directives/ColumnDirective.html +7 -2
- package/docs/documentation/directives/DataGridFocus.html +1 -6
- package/docs/documentation/directives/GridDirective.html +7 -2
- package/docs/documentation/directives/RowDirective.html +7 -2
- package/docs/documentation/interfaces/ExpandableTileTranslations.html +1 -1
- package/docs/documentation/interfaces/PaginationTranslations.html +1 -1
- package/docs/documentation/interfaces/TableTranslations.html +5 -5
- package/docs/documentation/js/menu-wc.js +1 -1
- package/docs/documentation/js/search/search_index.js +2 -2
- package/docs/documentation/modules/I18nModule.html +3 -3
- package/docs/storybook/iframe.html +3 -3
- package/docs/storybook/{main.f5813f877450223bdbab.bundle.js → main.b0c2a883db185116459f.bundle.js} +296 -67
- package/docs/storybook/main.b0c2a883db185116459f.bundle.js.map +1 -0
- package/docs/storybook/{runtime~main.f5813f877450223bdbab.bundle.js → runtime~main.b0c2a883db185116459f.bundle.js} +1 -1
- package/docs/storybook/{runtime~main.f5813f877450223bdbab.bundle.js.map → runtime~main.b0c2a883db185116459f.bundle.js.map} +1 -1
- package/docs/storybook/{vendors~main.f5813f877450223bdbab.bundle.js → vendors~main.b0c2a883db185116459f.bundle.js} +5472 -1
- package/docs/storybook/vendors~main.b0c2a883db185116459f.bundle.js.map +1 -0
- package/grid/grid.directive.js +6 -2
- package/grid/grid.directive.js.map +1 -1
- package/i18n/i18n.module.d.ts +1 -1
- package/i18n/i18n.module.js +3 -3
- package/i18n/i18n.module.js.map +1 -1
- package/i18n/i18n.module.metadata.json +1 -1
- package/i18n/i18n.module.ngsummary.json +1 -1
- package/index.ngsummary.json +1 -1
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +10 -10
- package/pagination/pagination.component.js.map +1 -1
- package/select/select.component.d.ts +4 -4
- package/select/select.component.js +3 -3
- package/select/select.component.js.map +1 -1
- package/select/select.component.metadata.json +1 -1
- package/select/select.component.ngsummary.json +1 -1
- package/table/data-grid-focus.directive.js +1 -1
- package/table/data-grid-focus.directive.js.map +1 -1
- package/table/data-grid-focus.directive.metadata.json +1 -1
- package/table/data-grid-focus.directive.ngsummary.json +1 -1
- package/table/table.component.d.ts +12 -12
- package/table/table.component.js +3 -3
- package/table/table.component.js.map +1 -1
- package/table/table.component.ngfactory.js +7 -7
- package/table/toolbar/table-toolbar.component.d.ts +3 -3
- package/table/toolbar/table-toolbar.component.js.map +1 -1
- package/tabs/tab-headers.component.js +1 -1
- package/tabs/tab-headers.component.js.map +1 -1
- package/tabs/tab-headers.component.metadata.json +1 -1
- package/tabs/tab-headers.component.ngfactory.js +2 -2
- package/tabs/tab-headers.component.ngfactory.js.map +1 -1
- package/tiles/clickable-tile.component.d.ts +19 -13
- package/tiles/clickable-tile.component.js +26 -17
- package/tiles/clickable-tile.component.js.map +1 -1
- package/tiles/clickable-tile.component.metadata.json +1 -1
- package/tiles/clickable-tile.component.ngfactory.js +8 -11
- package/tiles/clickable-tile.component.ngfactory.js.map +1 -1
- package/tiles/clickable-tile.component.ngsummary.json +1 -1
- package/tiles/expandable-tile.component.d.ts +3 -3
- package/tiles/expandable-tile.component.js.map +1 -1
- package/tiles/tiles.module.ngfactory.js.map +1 -1
- package/toggle/toggle.component.d.ts +3 -3
- package/toggle/toggle.component.js.map +1 -1
- package/ui-shell/header/header-item.component.d.ts +19 -1
- package/ui-shell/header/header-item.component.js +22 -5
- package/ui-shell/header/header-item.component.js.map +1 -1
- package/ui-shell/header/header-item.component.metadata.json +1 -1
- package/ui-shell/header/header-item.component.ngfactory.js +7 -3
- package/ui-shell/header/header-item.component.ngfactory.js.map +1 -1
- package/ui-shell/header/header-item.component.ngsummary.json +1 -1
- package/ui-shell/header/header.module.ngfactory.js.map +1 -1
- package/ui-shell/sidenav/sidenav-item.component.d.ts +19 -1
- package/ui-shell/sidenav/sidenav-item.component.js +22 -5
- package/ui-shell/sidenav/sidenav-item.component.js.map +1 -1
- package/ui-shell/sidenav/sidenav-item.component.metadata.json +1 -1
- package/ui-shell/sidenav/sidenav-item.component.ngfactory.js +7 -3
- package/ui-shell/sidenav/sidenav-item.component.ngfactory.js.map +1 -1
- package/ui-shell/sidenav/sidenav-item.component.ngsummary.json +1 -1
- package/ui-shell/sidenav/sidenav.module.ngfactory.js.map +1 -1
- package/docs/storybook/main.f5813f877450223bdbab.bundle.js.map +0 -1
- package/docs/storybook/vendors~main.f5813f877450223bdbab.bundle.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.component.js","sourceRoot":"","sources":["../src/select/select.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAAA;QA+DC;;WAEG;QACM,YAAO,GAAyB,SAAS,CAAC;QAanD;;WAEG;QACM,OAAE,GAAG,YAAU,MAAM,CAAC,WAAW,EAAI,CAAC;QAC/C;;WAEG;QACM,aAAQ,GAAG,KAAK,CAAC;QAC1B;;WAEG;QACM,aAAQ,GAAG,KAAK,CAAC;QAC1B;;WAEG;QACM,YAAO,GAAG,KAAK,CAAC;QAEzB;;WAEG;QACM,UAAK,GAAqB,MAAM,CAAC;QAC1C;;WAEG;QACO,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"select.component.js","sourceRoot":"","sources":["../src/select/select.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAAA;QA+DC;;WAEG;QACM,YAAO,GAAyB,SAAS,CAAC;QAanD;;WAEG;QACM,OAAE,GAAG,YAAU,MAAM,CAAC,WAAW,EAAI,CAAC;QAC/C;;WAEG;QACM,aAAQ,GAAG,KAAK,CAAC;QAC1B;;WAEG;QACM,aAAQ,GAAG,KAAK,CAAC;QAC1B;;WAEG;QACM,YAAO,GAAG,KAAK,CAAC;QAEzB;;WAEG;QACM,UAAK,GAAqB,MAAM,CAAC;QAC1C;;WAEG;QACO,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QA6DxC;;WAEG;QACO,oBAAe,GAAG,UAAC,CAAM,IAAO,CAAC,CAAC;QAClC,qBAAgB,GAAG,cAAQ,CAAC,CAAC;IACxC,CAAC;IA9DA,sBAAI,yBAAK;aAAT;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QACxC,CAAC;aAED,UAAU,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QACrC,CAAC;;;OAJA;IAMD;;OAEG;IACH,2BAAU,GAAV,UAAW,GAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,iCAAgB,GAAhB,UAAiB,EAAO;QACvB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,kCAAiB,GAAjB,UAAkB,EAAO;QACxB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,iCAAgB,GAAhB,UAAiB,UAAmB;QACnC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,yBAAQ,GAAR,UAAS,KAAK;QACb,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IAEH,qBAAI,GADJ;QAEC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,CAAC;IAEM,2BAAU,GAAjB,UAAkB,KAAK;QACtB,OAAO,KAAK,YAAY,WAAW,CAAC;IACrC,CAAC;IAxGD;;OAEG;IACI,kBAAW,GAAG,CAAC,CAAC;;gBA7DvB,SAAS,SAAC;oBACV,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,66DAyCT;oBACD,MAAM,EAAE,CAAC,gFAIR,CAAC;oBACF,SAAS,EAAE;wBACV;4BACC,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,MAAM;4BACnB,KAAK,EAAE,IAAI;yBACX;qBACD;iBACD;;;0BAUC,KAAK;wBAIL,KAAK;6BAIL,KAAK;8BAIL,KAAK;qBAIL,KAAK;2BAIL,KAAK;2BAIL,KAAK;0BAIL,KAAK;wBAKL,KAAK;2BAIL,MAAM;yBAEN,SAAS,SAAC,QAAQ;uBAkDlB,YAAY,SAAC,MAAM;;IAcrB,aAAC;CAAA,AAzKD,IAyKC;SAhHY,MAAM","sourcesContent":["import {\n\tComponent,\n\tInput,\n\tOutput,\n\tViewChild,\n\tElementRef,\n\tHostListener,\n\tEventEmitter,\n\tTemplateRef\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n/**\n * `ibm-select` provides a styled `select` component.\n *\n * [See demo](../../?path=/story/select--basic)\n *\n * Example:\n *\n * ```\n * <ibm-select [(ngModel)]=\"model\">\n * \t<option value=\"default\" disabled selected hidden>Choose an option</option>\n * \t<option value=\"option1\">Option 1</option>\n *\t<option value=\"option2\">Option 2</option>\n * \t<option value=\"option3\">Option 3</option>\n * </ibm-select>\n *\t```\n *\n * <example-url>../../iframe.html?id=select--basic</example-url>\n *\n * @export\n * @class Select\n * @implements {ControlValueAccessor}\n */\n@Component({\n\tselector: \"ibm-select\",\n\ttemplate: `\n\t\t<div class=\"bx--form-item\">\n\t\t\t<div\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--select--inline': display === 'inline',\n\t\t\t\t\t'bx--select--light': theme === 'light',\n\t\t\t\t\t'bx--skeleton': skeleton\n\t\t\t\t}\"\n\t\t\t\tclass=\"bx--select\"\n\t\t\t\tstyle=\"width: 100%\">\n\t\t\t\t<label *ngIf=\"skeleton && label\" [for]=\"id\" class=\"bx--label bx--skeleton\"></label>\n\t\t\t\t<label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</label>\n\t\t\t\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx--select-input__wrapper\" [attr.data-invalid]=\"(invalid ? true : null)\">\n\t\t\t\t\t<select\n\t\t\t\t\t\t#select\n\t\t\t\t\t\t[attr.id]=\"id\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\t\t\tclass=\"bx--select-input\">\n\t\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t\t</select>\n\t\t\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t\t\t*ngIf=\"!skeleton && invalid\"\n\t\t\t\t\t\tclass=\"bx--select__invalid-icon\"\n\t\t\t\t\t\tstyle=\"display: inherit;\">\n\t\t\t\t\t</ibm-icon-warning-filled16>\n\t\t\t\t\t<ibm-icon-chevron-down16 *ngIf=\"!skeleton\" class=\"bx--select__arrow\" style=\"display: inherit;\"></ibm-icon-chevron-down16>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t[data-invalid] ~ .bx--select__arrow {\n\t\t\tbottom: 2.25rem;\n\t\t}\n\t`],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Select,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Select implements ControlValueAccessor {\n\t/**\n\t * Tracks the total number of selects instantiated. Used to generate unique IDs\n\t */\n\tstatic selectCount = 0;\n\n\t/**\n\t * `inline` or `default` select displays\n\t */\n\t@Input() display: \"inline\" | \"default\" = \"default\";\n\t/**\n\t * Label for the select. Appears above the input.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Optional helper text that appears under the label.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Sets the invalid text.\n\t */\n\t@Input() invalidText: string | TemplateRef<any>;\n\t/**\n\t * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`\n\t */\n\t@Input() id = `select-${Select.selectCount++}`;\n\t/**\n\t * Set to true to disable component.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to true for a loading select.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for an invalid select component.\n\t */\n\t@Input() invalid = false;\n\n\t/**\n\t * `light` or `dark` select theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * emits the selected options `value`\n\t */\n\t@Output() selected = new EventEmitter();\n\n\t@ViewChild(\"select\") select: ElementRef;\n\n\tget value() {\n\t\treturn this.select.nativeElement.value;\n\t}\n\n\tset value(v) {\n\t\tthis.select.nativeElement.value = v;\n\t}\n\n\t/**\n\t * Receives a value from the model.\n\t */\n\twriteValue(obj: any) {\n\t\tthis.value = obj;\n\t}\n\n\t/**\n\t * Registers a listener that notifies the model when the control updates\n\t */\n\tregisterOnChange(fn: any) {\n\t\tthis.onChangeHandler = fn;\n\t}\n\n\t/**\n\t * Registers a listener that notifies the model when the control is blurred\n\t */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedHandler = fn;\n\t}\n\n\t/**\n\t * Sets the disabled state through the model\n\t */\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Handles the change event from the `select`.\n\t * Sends events to the change handler and emits a `selected` event.\n\t */\n\tonChange(event) {\n\t\tthis.onChangeHandler(event.target.value);\n\t\tthis.selected.emit(event.target.value);\n\t}\n\n\t/**\n\t * Listens for the host blurring, and notifies the model\n\t */\n\t@HostListener(\"blur\")\n\tblur() {\n\t\tthis.onTouchedHandler();\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n\n\t/**\n\t * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`\n\t */\n\tprotected onChangeHandler = (_: any) => { };\n\tprotected onTouchedHandler = () => { };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"Select":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":34,"character":1},"arguments":[{"selector":"ibm-select","template":"\n\t\t<div class=\"bx--form-item\">\n\t\t\t<div\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--select--inline': display === 'inline',\n\t\t\t\t\t'bx--select--light': theme === 'light',\n\t\t\t\t\t'bx--skeleton': skeleton\n\t\t\t\t}\"\n\t\t\t\tclass=\"bx--select\"\n\t\t\t\tstyle=\"width: 100%\">\n\t\t\t\t<label *ngIf=\"skeleton && label\" [for]=\"id\" class=\"bx--label bx--skeleton\"></label>\n\t\t\t\t<label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</label>\n\t\t\t\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx--select-input__wrapper\" [attr.data-invalid]=\"(invalid ? true : null)\">\n\t\t\t\t\t<select\n\t\t\t\t\t\t#select\n\t\t\t\t\t\t[attr.id]=\"id\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\t\t\tclass=\"bx--select-input\">\n\t\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t\t</select>\n\t\t\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t\t\t*ngIf=\"!skeleton && invalid\"\n\t\t\t\t\t\tclass=\"bx--select__invalid-icon\"\n\t\t\t\t\t\tstyle=\"display: inherit;\">\n\t\t\t\t\t</ibm-icon-warning-filled16>\n\t\t\t\t\t<ibm-icon-chevron-down16 *ngIf=\"!skeleton\" class=\"bx--select__arrow\" style=\"display: inherit;\"></ibm-icon-chevron-down16>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t","styles":["\n\t\t[data-invalid] ~ .bx--select__arrow {\n\t\t\tbottom: 2.25rem;\n\t\t}\n\t"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":85,"character":12},"useExisting":{"__symbolic":"reference","name":"Select"},"multi":true}]}]}],"members":{"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":100,"character":2}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":104,"character":2}}]}],"helperText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":2}}]}],"invalidText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":112,"character":2}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":116,"character":2}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":2}}]}],"skeleton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":2}}]}],"invalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":128,"character":2}}]}],"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":2}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":137,"character":2}}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":139,"character":2},"arguments":["select"]}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method"}],"
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"Select":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":34,"character":1},"arguments":[{"selector":"ibm-select","template":"\n\t\t<div class=\"bx--form-item\">\n\t\t\t<div\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--select--inline': display === 'inline',\n\t\t\t\t\t'bx--select--light': theme === 'light',\n\t\t\t\t\t'bx--skeleton': skeleton\n\t\t\t\t}\"\n\t\t\t\tclass=\"bx--select\"\n\t\t\t\tstyle=\"width: 100%\">\n\t\t\t\t<label *ngIf=\"skeleton && label\" [for]=\"id\" class=\"bx--label bx--skeleton\"></label>\n\t\t\t\t<label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</label>\n\t\t\t\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx--select-input__wrapper\" [attr.data-invalid]=\"(invalid ? true : null)\">\n\t\t\t\t\t<select\n\t\t\t\t\t\t#select\n\t\t\t\t\t\t[attr.id]=\"id\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\t\t\tclass=\"bx--select-input\">\n\t\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t\t</select>\n\t\t\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t\t\t*ngIf=\"!skeleton && invalid\"\n\t\t\t\t\t\tclass=\"bx--select__invalid-icon\"\n\t\t\t\t\t\tstyle=\"display: inherit;\">\n\t\t\t\t\t</ibm-icon-warning-filled16>\n\t\t\t\t\t<ibm-icon-chevron-down16 *ngIf=\"!skeleton\" class=\"bx--select__arrow\" style=\"display: inherit;\"></ibm-icon-chevron-down16>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t","styles":["\n\t\t[data-invalid] ~ .bx--select__arrow {\n\t\t\tbottom: 2.25rem;\n\t\t}\n\t"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":85,"character":12},"useExisting":{"__symbolic":"reference","name":"Select"},"multi":true}]}]}],"members":{"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":100,"character":2}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":104,"character":2}}]}],"helperText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":2}}]}],"invalidText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":112,"character":2}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":116,"character":2}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":2}}]}],"skeleton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":2}}]}],"invalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":128,"character":2}}]}],"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":2}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":137,"character":2}}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":139,"character":2},"arguments":["select"]}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method"}],"blur":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":189,"character":2},"arguments":["blur"]}]}],"isTemplate":[{"__symbolic":"method"}]},"statics":{"selectCount":0}}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"helperText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"invalidText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"skeleton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"invalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":3,"members":[]},"arguments":["select"]}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method"}],"
|
|
1
|
+
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"helperText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"invalidText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"skeleton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"invalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":3,"members":[]},"arguments":["select"]}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method"}],"blur":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbol":4,"members":[]},"arguments":["blur"]}]}],"isTemplate":[{"__symbolic":"method"}]},"statics":{"selectCount":0}},"type":{"summaryKind":1,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"isComponent":true,"selector":"ibm-select","exportAs":null,"inputs":{"display":"display","label":"label","helperText":"helperText","invalidText":"invalidText","id":"id","disabled":"disabled","skeleton":"skeleton","invalid":"invalid","theme":"theme"},"outputs":{"selected":"selected"},"hostListeners":{"blur":"blur()"},"hostProperties":{},"hostAttributes":{},"providers":[{"token":{"identifier":{"reference":{"__symbol":5,"members":[]}}},"useClass":null,"useFactory":null,"useExisting":{"identifier":{"reference":{"__symbol":0,"members":[]}}},"multi":true}],"viewProviders":[],"queries":[],"guards":{},"viewQueries":[{"selectors":[{"value":"select"}],"first":true,"descendants":true,"propertyName":"select","read":null}],"entryComponents":[],"changeDetection":1,"template":{"ngContentSelectors":["*"],"encapsulation":0},"componentViewType":{"__symbol":6,"members":[]},"rendererType":{"__symbol":7,"members":[]},"componentFactory":{"__symbol":8,"members":[]}}}],"symbols":[{"__symbol":0,"name":"Select","filePath":"./select.component"},{"__symbol":1,"name":"Input","filePath":"@angular/core"},{"__symbol":2,"name":"Output","filePath":"@angular/core"},{"__symbol":3,"name":"ViewChild","filePath":"@angular/core"},{"__symbol":4,"name":"HostListener","filePath":"@angular/core"},{"__symbol":5,"name":"NG_VALUE_ACCESSOR","filePath":"@angular/forms"},{"__symbol":6,"name":"View_Select_0","filePath":"./select.component.ngfactory"},{"__symbol":7,"name":"RenderType_Select","filePath":"./select.component.ngfactory"},{"__symbol":8,"name":"SelectNgFactory","filePath":"./select.component.ngfactory"}]}
|
|
@@ -189,7 +189,7 @@ var DataGridFocus = /** @class */ (function () {
|
|
|
189
189
|
columnIndex: [{ type: Input }],
|
|
190
190
|
columnIndexChange: [{ type: Output }],
|
|
191
191
|
keyDown: [{ type: HostListener, args: ["keydown", ["$event"],] }],
|
|
192
|
-
onClick: [{ type: HostListener, args: ["click",
|
|
192
|
+
onClick: [{ type: HostListener, args: ["click",] }]
|
|
193
193
|
};
|
|
194
194
|
return DataGridFocus;
|
|
195
195
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-grid-focus.directive.js","sourceRoot":"","sources":["../src/table/data-grid-focus.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tDirective,\n\tInput,\n\tElementRef,\n\tHostListener,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\nimport { Table } from \"./table.component\";\nimport { getFocusElementList, tabbableSelectorIgnoreTabIndex } from \"../common/tab.service\";\n\n@Directive({\n\tselector: \"[ibmDataGridFocus]\"\n})\nexport class DataGridFocus {\n\t@Input() ibmDataGridFocus: boolean;\n\t@Input() set columnIndex(value: number) {\n\t\tconst shouldEmit = value !== this._columnIndex;\n\t\tthis._columnIndex = value;\n\t\tif (shouldEmit) {\n\t\t\tthis.columnIndexChange.emit(value);\n\t\t}\n\t}\n\tget columnIndex(): number {\n\t\treturn this._columnIndex;\n\t}\n\n\t@Output() columnIndexChange: EventEmitter<number> = new EventEmitter();\n\n\tprotected _columnIndex: number;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tfocus(element) {\n\t\tconst focusElementList = getFocusElementList(element, tabbableSelectorIgnoreTabIndex);\n\t\tif (element.firstElementChild && element.firstElementChild.classList.contains(\"bx--table-sort-v2\")) {\n\t\t\tfocusElementList[1].focus();\n\t\t} else if (focusElementList.length > 0) {\n\t\t\tfocusElementList[0].focus();\n\t\t} else {\n\t\t\telement.focus();\n\t\t}\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyDown(event: KeyboardEvent) {\n\t\tif (!this.ibmDataGridFocus) {\n\t\t\treturn;\n\t\t}\n\t\tconst element = this.elementRef.nativeElement;\n\t\tconst rows = element.closest(\"table\").rows;\n\t\tconst closestTr = element.closest(\"tr\");\n\t\tlet rowIndex = Array.from(rows).indexOf(closestTr);\n\n\t\tconst headerRow = rows[0].querySelectorAll(\"th\");\n\n\t\tswitch (event.key) {\n\t\t\tcase \"Right\": // IE specific value\n\t\t\tcase \"ArrowRight\":\n\t\t\t\tconst firstBodyRow = rows[1].querySelectorAll(\"td\");\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (element.nextElementSibling && Array.from(headerRow).indexOf(element.nextElementSibling) < firstBodyRow.length) {\n\t\t\t\t\tthis.columnIndex++;\n\t\t\t\t\tconst nextSibling = element.nextElementSibling;\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tTable.setTabIndex(nextSibling, 0);\n\t\t\t\t\tthis.focus(nextSibling);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Left\": // IE specific value\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (element.previousElementSibling) {\n\t\t\t\t\tthis.columnIndex--;\n\t\t\t\t\tconst previousSibling = element.previousElementSibling;\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tTable.setTabIndex(previousSibling, 0);\n\t\t\t\t\tthis.focus(previousSibling);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Down\": // IE specific value\n\t\t\tcase \"ArrowDown\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (rowIndex < rows.length - 1) {\n\t\t\t\t\trowIndex++;\n\t\t\t\t\tconst row = rows[rowIndex].querySelectorAll(\"td\");\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tif (rows[rowIndex].classList.contains(\"bx--expandable-row-v2\") && !rows[rowIndex].classList.contains(\"bx--parent-row-v2\")) {\n\t\t\t\t\t\tTable.setTabIndex(row[0], 0);\n\t\t\t\t\t\tthis.focus(row[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.columnIndex > row.length - 1) {\n\t\t\t\t\t\t\tthis.columnIndex = row.length - 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tTable.setTabIndex(row[this.columnIndex], 0);\n\t\t\t\t\t\tthis.focus(row[this.columnIndex]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Up\": // IE specific value\n\t\t\tcase \"ArrowUp\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ((rowIndex === 1 && Array.from(headerRow).every(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length === 0)) ||\n\t\t\t\t\trowIndex === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\trowIndex--;\n\t\t\t\tconst row = rows[rowIndex].querySelectorAll(\"td, th\");\n\t\t\t\tif (rows[rowIndex].classList.contains(\"bx--expandable-row-v2\") && !rows[rowIndex].classList.contains(\"bx--parent-row-v2\")) {\n\t\t\t\t\tTable.setTabIndex(row[0], 0);\n\t\t\t\t\tthis.focus(row[0]);\n\t\t\t\t} else {\n\t\t\t\t\tif (this.columnIndex > row.length - 1) {\n\t\t\t\t\t\tthis.columnIndex = row.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tTable.setTabIndex(row[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(row[this.columnIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.columnIndex = 0;\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\tif (Array.from(headerRow).some(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length > 0)) {\n\t\t\t\t\t\tTable.setTabIndex(headerRow[0], 0);\n\t\t\t\t\t\tthis.focus(headerRow[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst firstBodyCell = rows[1].querySelectorAll(\"td\")[0];\n\t\t\t\t\t\tTable.setTabIndex(firstBodyCell, 0);\n\t\t\t\t\t\tthis.focus(firstBodyCell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst firstRowCell = rows[rowIndex].querySelectorAll(\"th, td\")[0];\n\t\t\t\t\tTable.setTabIndex(firstRowCell, 0);\n\t\t\t\t\tthis.focus(firstRowCell);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst lastRow = rows[rows.length - 1].querySelectorAll(\"td\");\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\tthis.columnIndex = lastRow.length - 1;\n\t\t\t\t\tTable.setTabIndex(lastRow[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(lastRow[this.columnIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst currentRow = rows[rowIndex].querySelectorAll(\"th, td\");\n\t\t\t\t\tthis.columnIndex = currentRow.length - 1;\n\t\t\t\t\tTable.setTabIndex(currentRow[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(currentRow[this.columnIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t@HostListener(\"click\", [\"$event\"])\n\tonClick() {\n\t\tif (!this.ibmDataGridFocus) {\n\t\t\treturn;\n\t\t}\n\t\tconst focusElementList = getFocusElementList(this.elementRef.nativeElement.closest(\"table\"), tabbableSelectorIgnoreTabIndex);\n\t\tfocusElementList.forEach(element => Table.setTabIndex(element, -1));\n\t\tTable.setTabIndex(this.elementRef.nativeElement, 0);\n\t\tthis.focus(this.elementRef.nativeElement);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"data-grid-focus.directive.js","sourceRoot":"","sources":["../src/table/data-grid-focus.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tDirective,\n\tInput,\n\tElementRef,\n\tHostListener,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\nimport { Table } from \"./table.component\";\nimport { getFocusElementList, tabbableSelectorIgnoreTabIndex } from \"../common/tab.service\";\n\n@Directive({\n\tselector: \"[ibmDataGridFocus]\"\n})\nexport class DataGridFocus {\n\t@Input() ibmDataGridFocus: boolean;\n\t@Input() set columnIndex(value: number) {\n\t\tconst shouldEmit = value !== this._columnIndex;\n\t\tthis._columnIndex = value;\n\t\tif (shouldEmit) {\n\t\t\tthis.columnIndexChange.emit(value);\n\t\t}\n\t}\n\tget columnIndex(): number {\n\t\treturn this._columnIndex;\n\t}\n\n\t@Output() columnIndexChange: EventEmitter<number> = new EventEmitter();\n\n\tprotected _columnIndex: number;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tfocus(element) {\n\t\tconst focusElementList = getFocusElementList(element, tabbableSelectorIgnoreTabIndex);\n\t\tif (element.firstElementChild && element.firstElementChild.classList.contains(\"bx--table-sort-v2\")) {\n\t\t\tfocusElementList[1].focus();\n\t\t} else if (focusElementList.length > 0) {\n\t\t\tfocusElementList[0].focus();\n\t\t} else {\n\t\t\telement.focus();\n\t\t}\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyDown(event: KeyboardEvent) {\n\t\tif (!this.ibmDataGridFocus) {\n\t\t\treturn;\n\t\t}\n\t\tconst element = this.elementRef.nativeElement;\n\t\tconst rows = element.closest(\"table\").rows;\n\t\tconst closestTr = element.closest(\"tr\");\n\t\tlet rowIndex = Array.from(rows).indexOf(closestTr);\n\n\t\tconst headerRow = rows[0].querySelectorAll(\"th\");\n\n\t\tswitch (event.key) {\n\t\t\tcase \"Right\": // IE specific value\n\t\t\tcase \"ArrowRight\":\n\t\t\t\tconst firstBodyRow = rows[1].querySelectorAll(\"td\");\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (element.nextElementSibling && Array.from(headerRow).indexOf(element.nextElementSibling) < firstBodyRow.length) {\n\t\t\t\t\tthis.columnIndex++;\n\t\t\t\t\tconst nextSibling = element.nextElementSibling;\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tTable.setTabIndex(nextSibling, 0);\n\t\t\t\t\tthis.focus(nextSibling);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Left\": // IE specific value\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (element.previousElementSibling) {\n\t\t\t\t\tthis.columnIndex--;\n\t\t\t\t\tconst previousSibling = element.previousElementSibling;\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tTable.setTabIndex(previousSibling, 0);\n\t\t\t\t\tthis.focus(previousSibling);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Down\": // IE specific value\n\t\t\tcase \"ArrowDown\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (rowIndex < rows.length - 1) {\n\t\t\t\t\trowIndex++;\n\t\t\t\t\tconst row = rows[rowIndex].querySelectorAll(\"td\");\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tif (rows[rowIndex].classList.contains(\"bx--expandable-row-v2\") && !rows[rowIndex].classList.contains(\"bx--parent-row-v2\")) {\n\t\t\t\t\t\tTable.setTabIndex(row[0], 0);\n\t\t\t\t\t\tthis.focus(row[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.columnIndex > row.length - 1) {\n\t\t\t\t\t\t\tthis.columnIndex = row.length - 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tTable.setTabIndex(row[this.columnIndex], 0);\n\t\t\t\t\t\tthis.focus(row[this.columnIndex]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Up\": // IE specific value\n\t\t\tcase \"ArrowUp\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ((rowIndex === 1 && Array.from(headerRow).every(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length === 0)) ||\n\t\t\t\t\trowIndex === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\trowIndex--;\n\t\t\t\tconst row = rows[rowIndex].querySelectorAll(\"td, th\");\n\t\t\t\tif (rows[rowIndex].classList.contains(\"bx--expandable-row-v2\") && !rows[rowIndex].classList.contains(\"bx--parent-row-v2\")) {\n\t\t\t\t\tTable.setTabIndex(row[0], 0);\n\t\t\t\t\tthis.focus(row[0]);\n\t\t\t\t} else {\n\t\t\t\t\tif (this.columnIndex > row.length - 1) {\n\t\t\t\t\t\tthis.columnIndex = row.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tTable.setTabIndex(row[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(row[this.columnIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.columnIndex = 0;\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\tif (Array.from(headerRow).some(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length > 0)) {\n\t\t\t\t\t\tTable.setTabIndex(headerRow[0], 0);\n\t\t\t\t\t\tthis.focus(headerRow[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst firstBodyCell = rows[1].querySelectorAll(\"td\")[0];\n\t\t\t\t\t\tTable.setTabIndex(firstBodyCell, 0);\n\t\t\t\t\t\tthis.focus(firstBodyCell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst firstRowCell = rows[rowIndex].querySelectorAll(\"th, td\")[0];\n\t\t\t\t\tTable.setTabIndex(firstRowCell, 0);\n\t\t\t\t\tthis.focus(firstRowCell);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst lastRow = rows[rows.length - 1].querySelectorAll(\"td\");\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\tthis.columnIndex = lastRow.length - 1;\n\t\t\t\t\tTable.setTabIndex(lastRow[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(lastRow[this.columnIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst currentRow = rows[rowIndex].querySelectorAll(\"th, td\");\n\t\t\t\t\tthis.columnIndex = currentRow.length - 1;\n\t\t\t\t\tTable.setTabIndex(currentRow[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(currentRow[this.columnIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick() {\n\t\tif (!this.ibmDataGridFocus) {\n\t\t\treturn;\n\t\t}\n\t\tconst focusElementList = getFocusElementList(this.elementRef.nativeElement.closest(\"table\"), tabbableSelectorIgnoreTabIndex);\n\t\tfocusElementList.forEach(element => Table.setTabIndex(element, -1));\n\t\tTable.setTabIndex(this.elementRef.nativeElement, 0);\n\t\tthis.focus(this.elementRef.nativeElement);\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"DataGridFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":11,"character":1},"arguments":[{"selector":"[ibmDataGridFocus]"}]}],"members":{"ibmDataGridFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":2}}]}],"columnIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"columnIndexChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":31,"character":35}]}],"focus":[{"__symbolic":"method"}],"keyDown":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":44,"character":2},"arguments":["keydown",["$event"]]}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":157,"character":2},"arguments":["click"
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"DataGridFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":11,"character":1},"arguments":[{"selector":"[ibmDataGridFocus]"}]}],"members":{"ibmDataGridFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":2}}]}],"columnIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"columnIndexChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":31,"character":35}]}],"focus":[{"__symbolic":"method"}],"keyDown":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":44,"character":2},"arguments":["keydown",["$event"]]}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":157,"character":2},"arguments":["click"]}]}]}}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"ibmDataGridFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"columnIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"columnIndexChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":3,"members":[]}]}],"focus":[{"__symbolic":"method"}],"keyDown":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbol":4,"members":[]},"arguments":["keydown",["$event"]]}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbol":4,"members":[]},"arguments":["click"
|
|
1
|
+
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"ibmDataGridFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"columnIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"columnIndexChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":3,"members":[]}]}],"focus":[{"__symbolic":"method"}],"keyDown":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbol":4,"members":[]},"arguments":["keydown",["$event"]]}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbol":4,"members":[]},"arguments":["click"]}]}]}},"type":{"summaryKind":1,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":3,"members":[]}}}}],"lifecycleHooks":[]},"isComponent":false,"selector":"[ibmDataGridFocus]","exportAs":null,"inputs":{"ibmDataGridFocus":"ibmDataGridFocus","columnIndex":"columnIndex"},"outputs":{"columnIndexChange":"columnIndexChange"},"hostListeners":{"keydown":"keyDown($event)","click":"onClick()"},"hostProperties":{},"hostAttributes":{},"providers":[],"viewProviders":[],"queries":[],"guards":{},"viewQueries":[],"entryComponents":[],"changeDetection":null,"template":null,"componentViewType":null,"rendererType":null,"componentFactory":null}}],"symbols":[{"__symbol":0,"name":"DataGridFocus","filePath":"./data-grid-focus.directive"},{"__symbol":1,"name":"Input","filePath":"@angular/core"},{"__symbol":2,"name":"Output","filePath":"@angular/core"},{"__symbol":3,"name":"ElementRef","filePath":"@angular/core"},{"__symbol":4,"name":"HostListener","filePath":"@angular/core"}]}
|
|
@@ -22,7 +22,7 @@ import { ApplicationRef, EventEmitter, ElementRef, AfterViewInit, TemplateRef }
|
|
|
22
22
|
import { Subscription, Observable } from "rxjs";
|
|
23
23
|
import { TableModel } from "./table.module";
|
|
24
24
|
import { TableItem } from "./table-item.class";
|
|
25
|
-
import { I18n } from "./../i18n/i18n.module";
|
|
25
|
+
import { I18n, Overridable } from "./../i18n/i18n.module";
|
|
26
26
|
export interface TableTranslations {
|
|
27
27
|
FILTER: string;
|
|
28
28
|
END_OF_DATA: string;
|
|
@@ -274,11 +274,11 @@ export declare class Table implements AfterViewInit {
|
|
|
274
274
|
* ```
|
|
275
275
|
*/
|
|
276
276
|
translations: any;
|
|
277
|
-
checkboxHeaderLabel:
|
|
278
|
-
checkboxRowLabel:
|
|
279
|
-
endOfDataText:
|
|
280
|
-
scrollTopText:
|
|
281
|
-
filterTitle:
|
|
277
|
+
checkboxHeaderLabel: Overridable;
|
|
278
|
+
checkboxRowLabel: Overridable;
|
|
279
|
+
endOfDataText: Overridable;
|
|
280
|
+
scrollTopText: Overridable;
|
|
281
|
+
filterTitle: Overridable;
|
|
282
282
|
/**
|
|
283
283
|
* Controls if all checkboxes are viewed as selected.
|
|
284
284
|
*
|
|
@@ -353,17 +353,17 @@ export declare class Table implements AfterViewInit {
|
|
|
353
353
|
scrollLoad: EventEmitter<TableModel>;
|
|
354
354
|
readonly noData: boolean;
|
|
355
355
|
columnIndex: number;
|
|
356
|
+
isColumnDragging: boolean;
|
|
357
|
+
columnDraggedHoverIndex: number;
|
|
358
|
+
columnDraggedPosition: string;
|
|
356
359
|
protected _model: TableModel;
|
|
357
|
-
protected _expandButtonAriaLabel:
|
|
358
|
-
protected _sortDescendingLabel:
|
|
359
|
-
protected _sortAscendingLabel:
|
|
360
|
+
protected _expandButtonAriaLabel: Overridable;
|
|
361
|
+
protected _sortDescendingLabel: Overridable;
|
|
362
|
+
protected _sortAscendingLabel: Overridable;
|
|
360
363
|
protected columnResizeWidth: number;
|
|
361
364
|
protected columnResizeMouseX: number;
|
|
362
365
|
protected mouseMoveSubscription: Subscription;
|
|
363
366
|
protected mouseUpSubscription: Subscription;
|
|
364
|
-
protected isColumnDragging: boolean;
|
|
365
|
-
protected columnDraggedHoverIndex: number;
|
|
366
|
-
protected columnDraggedPosition: string;
|
|
367
367
|
/**
|
|
368
368
|
* Creates an instance of Table.
|
|
369
369
|
*
|
package/table/table.component.js
CHANGED
|
@@ -296,12 +296,12 @@ var Table = /** @class */ (function () {
|
|
|
296
296
|
*/
|
|
297
297
|
this.scrollLoad = new EventEmitter();
|
|
298
298
|
this.columnIndex = 0;
|
|
299
|
-
this._expandButtonAriaLabel = this.i18n.getOverridable("TABLE.EXPAND_BUTTON");
|
|
300
|
-
this._sortDescendingLabel = this.i18n.getOverridable("TABLE.SORT_DESCENDING");
|
|
301
|
-
this._sortAscendingLabel = this.i18n.getOverridable("TABLE.SORT_ASCENDING");
|
|
302
299
|
this.isColumnDragging = false;
|
|
303
300
|
this.columnDraggedHoverIndex = -1;
|
|
304
301
|
this.columnDraggedPosition = "";
|
|
302
|
+
this._expandButtonAriaLabel = this.i18n.getOverridable("TABLE.EXPAND_BUTTON");
|
|
303
|
+
this._sortDescendingLabel = this.i18n.getOverridable("TABLE.SORT_DESCENDING");
|
|
304
|
+
this._sortAscendingLabel = this.i18n.getOverridable("TABLE.SORT_ASCENDING");
|
|
305
305
|
}
|
|
306
306
|
/**
|
|
307
307
|
* Creates a skeleton model with a row and column count specified by the user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.component.js","sourceRoot":"","sources":["../src/table/table.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tComponent,\n\tApplicationRef,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tAfterViewInit,\n\tTemplateRef\n} from \"@angular/core\";\nimport { Subscription, fromEvent, Observable } from \"rxjs\";\n\nimport { TableModel } from \"./table.module\";\nimport { TableHeaderItem } from \"./table-header-item.class\";\nimport { TableItem } from \"./table-item.class\";\nimport { getScrollbarWidth } from \"../common/utils\";\nimport { getFocusElementList, tabbableSelectorIgnoreTabIndex } from \"../common/tab.service\";\nimport { I18n } from \"./../i18n/i18n.module\";\nimport { merge } from \"./../utils/object\";\n\nexport interface TableTranslations {\n\tFILTER: string;\n\tEND_OF_DATA: string;\n\tSCROLL_TOP: string;\n\tCHECKBOX_HEADER: string;\n\tCHECKBOX_ROW: string;\n}\n\n/**\n * Build your table with this component by extending things that differ from default.\n *\n * [See demo](../../?path=/story/table--basic)\n *\n * Instead of the usual write-your-own-html approach you had with `<table>`,\n * carbon table uses model-view-controller approach.\n *\n * Here, you create a view (with built-in controller) and provide it a model.\n * Changes you make to the model are reflected in the view. Provide same model you use\n * in the table to the `<ibm-pagination>` components.\n * They provide a different view over the same data.\n *\n * ## Basic usage\n *\n * ```html\n * <ibm-table [model]=\"model\"></ibm-table>\n * ```\n *\n * ```typescript\n * public model = new TableModel();\n *\n * this.model.data = [\n * \t[new TableItem({data: \"asdf\"}), new TableItem({data: \"qwer\"})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"zwer\"})],\n * \t[new TableItem({data: \"bsdf\"}), new TableItem({data: \"swer\"})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"twer\"})]\n * ];\n * ```\n *\n * ## Customization\n *\n * If you have custom data in your table, you need a way to display it. You can do that\n * by providing a template to `TableItem`.\n *\n * ```html\n * <ng-template #customTableItemTemplate let-data=\"data\">\n * \t<a [routerLink]=\"data.link\">{{data.name}} {{data.surname}}</a>\n * </ng-template>\n * ```\n *\n * ```typescript\n * customTableItemTemplate: TemplateRef<any>;\n *\n * this.customModel.data = [\n * \t[new TableItem({data: \"asdf\"}), new TableItem({data: {name: \"Lessy\", link: \"/table\"}, template: this.customTableItemTemplate})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"swer\"})],\n * \t[new TableItem({data: \"bsdf\"}), new TableItem({data: {name: \"Alice\", surname: \"Bob\"}, template: this.customTableItemTemplate})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"twer\"})],\n * ];\n * ```\n *\n * ### Sorting and filtering\n *\n * In case you need custom sorting and/or filtering you should subclass `TableHeaderItem`\n * and override needed functions.\n *\n * ```typescript\n * class FilterableHeaderItem extends TableHeaderItem {\n * \t// custom filter function\n * \tfilter(item: TableItem): boolean {\n * \t\tif (typeof item.data === \"string\" && item.data.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0 ||\n * \t\titem.data.name && item.data.name.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0 ||\n * \t\titem.data.surname && item.data.surname.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0) {\n * \t\t\treturn false;\n * \t\t}\n * \t\treturn true;\n * \t}\n *\n * \tset filterCount(n) {}\n * \tget filterCount() {\n * \t\treturn (this.filterData && this.filterData.data && this.filterData.data.length > 0) ? 1 : 0;\n * \t}\n *\n * \t// used for custom sorting\n * \tcompare(one: TableItem, two: TableItem) {\n * \t\tconst stringOne = (one.data.name || one.data.surname || one.data).toLowerCase();\n * \t\tconst stringTwo = (two.data.name || two.data.surname || two.data).toLowerCase();\n *\n * \t\tif (stringOne > stringTwo) {\n * \t\t\treturn 1;\n * \t\t} else if (stringOne < stringTwo) {\n * \t\t\treturn -1;\n * \t\t} else {\n * \t\t\treturn 0;\n * \t\t}\n * \t}\n * }\n * ```\n *\n * See `TableHeaderItem` class for more information.\n *\n * ## No data template\n *\n * When table has no data to show, it can show a message you provide it instead.\n *\n * ```html\n * <ibm-table [model]=\"model\">No data.</ibm-table>\n * ```\n *\n * ... will show `No data.` message, but you can get creative and provide any template you want\n * to replace table's default `tbody`.\n *\n * ## Use pagination as table footer\n *\n * ```html\n * <ibm-pagination [model]=\"model\" (selectPage)=\"selectPage($event)\"></ibm-pagination>\n * ```\n *\n * `selectPage()` function should fetch the data from backend, create new `data`, apply it to `model.data`,\n * and update `model.currentPage`.\n *\n * If the data your server returns is a two dimensional array of objects, it would look something like this:\n *\n * ```typescript\n * selectPage(page) {\n * \tthis.getPage(page).then((data: Array<Array<any>>) => {\n * \t\t// set the data and update page\n * \t\tthis.model.data = this.prepareData(data);\n * \t\tthis.model.currentPage = page;\n * \t});\n * }\n *\n * protected prepareData(data: Array<Array<any>>) {\n * \t// create new data from the service data\n * \tlet newData = [];\n * \tdata.forEach(dataRow => {\n * \t\tlet row = [];\n * \t\tdataRow.forEach(dataElement => {\n * \t\t\trow.push(new TableItem({\n * \t\t\t\tdata: dataElement,\n * \t\t\t\ttemplate: typeof dataElement === \"string\" ? undefined : this.paginationTableItemTemplate\n * \t\t\t\t// your template can handle all the data types so you don't have to conditionally set it\n * \t\t\t\t// you can also set different templates for different columns based on index\n * \t\t\t}));\n * \t\t});\n * \t\tnewData.push(row);\n * \t});\n * \treturn newData;\n * }\n * ```\n *\n * <example-url>../../iframe.html?id=table--basic</example-url>\n *\n * @export\n * @class Table\n * @implements {AfterContentChecked}\n */\n@Component({\n\tselector: \"ibm-table\",\n\ttemplate: `\n\t<table\n\tclass=\"bx--data-table bx--data-table--sort\"\n\t[ngClass]=\"{\n\t\t'bx--data-table--compact': size === 'sm',\n\t\t'bx--data-table--tall': size === 'lg',\n\t\t'bx--data-table--zebra': striped,\n\t\t'bx--skeleton': skeleton\n\t}\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th\n\t\t\t\t\tclass=\"bx--table-expand\"\n\t\t\t\t\t*ngIf=\"model.hasExpandableRows()\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t</th>\n\t\t\t\t<th\n\t\t\t\t\tclass=\"bx--table-column-checkbox\"\n\t\t\t\t\t*ngIf=\"!skeleton && showSelectionColumn\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t(click)=\"setCheckboxIndex()\"\n\t\t\t\t\tstyle=\"width: 10px;\">\n\t\t\t\t\t<ibm-checkbox\n\t\t\t\t\t\tinline=\"true\"\n\t\t\t\t\t\t[size]=\"size !== ('lg' ? 'sm' : 'md')\"\n\t\t\t\t\t\t[(ngModel)]=\"selectAllCheckbox\"\n\t\t\t\t\t\t[indeterminate]=\"selectAllCheckboxSomeSelected\"\n\t\t\t\t\t\t[attr.aria-label]=\"checkboxHeaderLabel.subject | async\"\n\t\t\t\t\t\t(change)=\"onSelectAllCheckboxChange()\">\n\t\t\t\t\t</ibm-checkbox>\n\t\t\t\t</th>\n\t\t\t\t<ng-container *ngFor=\"let column of model.header; let i = index\">\n\t\t\t\t\t<th\n\t\t\t\t\t\t[ngClass]='{\"thead_action\": column.filterTemplate || this.sort.observers.length > 0}'\n\t\t\t\t\t\t*ngIf=\"column.visible\"\n\t\t\t\t\t\t[class]=\"column.className\"\n\t\t\t\t\t\t[ngStyle]=\"column.style\"\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t[draggable]=\"columnsDraggable\"\n\t\t\t\t\t\t(dragstart)=\"columnDragStart($event, i)\"\n\t\t\t\t\t\t(dragend)=\"columnDragEnd($event, i)\"\n\t\t\t\t\t\t(click)=\"setIndex(i)\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnsResizable\"\n\t\t\t\t\t\t\tclass=\"column-resize-handle\"\n\t\t\t\t\t\t\t(mousedown)=\"columnResizeStart($event, column)\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"bx--table-sort\"\n\t\t\t\t\t\t\t*ngIf=\"!skeleton && this.sort.observers.length > 0 && column.sortable\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"(column.sorted && column.ascending ? getSortDescendingLabel() : getSortAscendingLabel()) | async\"\n\t\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'bx--table-sort--active': column.sorted,\n\t\t\t\t\t\t\t\t'bx--table-sort--ascending': column.ascending\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t(click)=\"sort.emit(i)\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t*ngIf=\"!column.template\"\n\t\t\t\t\t\t\t\t[title]=\"column.data\"\n\t\t\t\t\t\t\t\ttabindex=\"-1\">\n\t\t\t\t\t\t\t\t{{column.data}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{data: column.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"bx--table-sort__icon\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M12.3 9.3l-3.8 3.8V1h-1v12.1L3.7 9.3 3 10l5 5 5-5z\"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"bx--table-sort__icon-unsorted\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M13.8 10.3L12 12.1V2h-1v10.1l-1.8-1.8-.7.7 3 3 3-3zM4.5 2l-3 3 .7.7L4 3.9V14h1V3.9l1.8 1.8.7-.7z\"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"bx--table-header-label\"\n\t\t\t\t\t\t\t*ngIf=\"!skeleton && this.sort.observers.length === 0 || (this.sort.observers.length > 0 && !column.sortable)\">\n\t\t\t\t\t\t\t<span *ngIf=\"!column.template\" [title]=\"column.data\">{{column.data}}</span>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{data: column.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t[ngClass]=\"{'active': column.filterCount > 0}\"\n\t\t\t\t\t\t\t*ngIf=\"column.filterTemplate\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t[ibmTooltip]=\"column.filterTemplate\"\n\t\t\t\t\t\t\ttrigger=\"click\"\n\t\t\t\t\t\t\t[title]=\"filterTitle.subject | async\"\n\t\t\t\t\t\t\tplacement=\"bottom,top\"\n\t\t\t\t\t\t\t[data]=\"column.filterData\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"icon--sm\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\">\n\t\t\t\t\t\t\t\t<path d=\"M0 0v3l6 8v5h4v-5l6-8V0H0zm9 10.7V15H7v-4.3L1.3 3h13.5L9 10.7z\"/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span *ngIf=\"column.filterCount > 0\">\n\t\t\t\t\t\t\t\t{{column.filterCount}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"columnsDraggable && isColumnDragging\"\n\t\t\t\t\t\tclass=\"drop-area\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnDraggedHoverIndex == i && columnDraggedPosition == 'left'\"\n\t\t\t\t\t\t\tclass=\"drop-indicator-left\"></div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"drop-area-left\"\n\t\t\t\t\t\t\t(dragenter)=\"columnDragEnter($event, 'left', i)\"\n\t\t\t\t\t\t\t(dragleave)=\"columnDragLeave($event, 'left', i)\"\n\t\t\t\t\t\t\t(dragover)=\"columnDragover($event, 'left', i)\"\n\t\t\t\t\t\t\t(drop)=\"columnDrop($event, 'left', i)\">\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"drop-area-right\"\n\t\t\t\t\t\t\t(dragenter)=\"columnDragEnter($event, 'right', i)\"\n\t\t\t\t\t\t\t(dragleave)=\"columnDragLeave($event, 'right', i)\"\n\t\t\t\t\t\t\t(dragover)=\"columnDragover($event, 'right', i)\"\n\t\t\t\t\t\t\t(drop)=\"columnDrop($event, 'right', i)\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnDraggedHoverIndex == i && columnDraggedPosition == 'right'\"\n\t\t\t\t\t\t\tclass=\"drop-indicator-right\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</th>\n\t\t\t\t</ng-container>\n\t\t\t\t<th *ngIf=\"!skeleton && stickyHeader\" [ngStyle]=\"{'width': scrollbarWidth + 'px', 'padding': 0, 'border': 0}\">\n\t\t\t\t\t<!--\n\t\t\t\t\t\tScrollbar pushes body to the left so this header column is added to push\n\t\t\t\t\t\tthe title bar the same amount and keep the header and body columns aligned.\n\t\t\t\t\t-->\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody\n\t\t*ngIf=\"!noData; else noDataTemplate\"\n\t\t[ngStyle]=\"{'overflow-y': 'scroll'}\"\n\t\t(scroll)=\"onScroll($event)\">\n\t\t\t<ng-container *ngFor=\"let row of model.data; let i = index\">\n\t\t\t\t<tr *ngIf=\"!model.isRowFiltered(i)\"\n\t\t\t\t\t(click)=\"onRowSelect(i)\"\n\t\t\t\t\t[attr.data-parent-row]=\"(model.isRowExpandable(i) ? 'true' : null)\"\n\t\t\t\t\t[class]=\"model.rowsClass[i] ? model.rowsClass[i] : null\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'bx--data-table--selected': model.rowsSelected[i],\n\t\t\t\t\t\t'bx--parent-row': model.isRowExpandable(i),\n\t\t\t\t\t\t'bx--expandable-row': model.rowsExpanded[i],\n\t\t\t\t\t\t'tbody_row--selectable': enableSingleSelect,\n\t\t\t\t\t\t'tbody_row--success': !model.rowsSelected[i] && model.rowsContext[i] === 'success',\n\t\t\t\t\t\t'tbody_row--warning': !model.rowsSelected[i] && model.rowsContext[i] === 'warning',\n\t\t\t\t\t\t'tbody_row--info': !model.rowsSelected[i] && model.rowsContext[i] === 'info',\n\t\t\t\t\t\t'tbody_row--error': !model.rowsSelected[i] && model.rowsContext[i] === 'error'\n\t\t\t\t\t}\">\n\t\t\t\t\t<td\n\t\t\t\t\t*ngIf=\"model.hasExpandableRows()\"\n\t\t\t\t\tclass=\"bx--table-expand\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t[attr.data-previous-value]=\"(model.rowsExpanded[i] ? 'collapsed' : null)\"\n\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t*ngIf=\"!skeleton && model.isRowExpandable(i)\"\n\t\t\t\t\t\tclass=\"bx--table-expand__button\"\n\t\t\t\t\t\t[attr.aria-label]=\"getExpandButtonAriaLabel() | async\"\n\t\t\t\t\t\t(click)=\"model.expandRow(i, !model.rowsExpanded[i])\">\n\t\t\t\t\t\t\t<ibm-icon-chevron-right16 innerClass=\"bx--table-expand__svg\"></ibm-icon-chevron-right16>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td\n\t\t\t\t\t\t*ngIf=\"!skeleton && showSelectionColumn\"\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t(click)=\"setCheckboxIndex()\">\n\t\t\t\t\t\t<ibm-checkbox\n\t\t\t\t\t\t\tinline=\"true\"\n\t\t\t\t\t\t\t[aria-label]=\"checkboxRowLabel.subject | i18nReplace:getSelectionLabelValue(row) | async\"\n\t\t\t\t\t\t\t[size]=\"size !== ('lg' ? 'sm' : 'md')\"\n\t\t\t\t\t\t\t[(ngModel)]=\"model.rowsSelected[i]\"\n\t\t\t\t\t\t\t(change)=\"onRowCheckboxChange(i)\">\n\t\t\t\t\t\t</ibm-checkbox>\n\t\t\t\t\t</td>\n\t\t\t\t\t<ng-container *ngFor=\"let item of row; let j = index\">\n\t\t\t\t\t\t<td *ngIf=\"model.header[j].visible\"\n\t\t\t\t\t\t\t[class]=\"model.header[j].className\"\n\t\t\t\t\t\t\t[ngStyle]=\"model.header[j].style\"\n\t\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t\t(click)=\"setIndex(j)\">\n\t\t\t\t\t\t\t<span *ngIf=\"skeleton && i === 0\"></span>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!skeleton && !item.template\">{{item.data}}</ng-container>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"item.template\" [ngTemplateOutletContext]=\"{data: item.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</tr>\n\t\t\t\t<tr\n\t\t\t\t*ngIf=\"model.rowsExpanded[i] && !model.isRowFiltered(i)\"\n\t\t\t\tclass=\"bx--expandable-row\"\n\t\t\t\tibmExpandedRowHover\n\t\t\t\t[attr.data-child-row]=\"(model.rowsExpanded[i] ? 'true' : null)\">\n\t\t\t\t\t<td\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t[attr.colspan]=\"row.length + 2\"\n\t\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t\t\t<ng-container *ngIf=\"!firstExpandedTemplateInRow(row)\">{{firstExpandedDataInRow(row)}}</ng-container>\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"firstExpandedTemplateInRow(row)\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{data: firstExpandedDataInRow(row)}\">\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</ng-container>\n\t\t</tbody>\n\t\t<ng-template #noDataTemplate><ng-content></ng-content></ng-template>\n\t\t<tfoot>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"footerTemplate\">\n\t\t\t</ng-template>\n\t\t\t<tr *ngIf=\"this.model.isLoading\">\n\t\t\t\t<td class=\"table_loading-indicator\">\n\t\t\t\t\t<div class=\"bx--loading bx--loading--small\">\n\t\t\t\t\t\t<svg class=\"bx--loading__svg\" viewBox=\"-75 -75 150 150\">\n\t\t\t\t\t\t\t<circle class=\"bx--loading__stroke\" cx=\"0\" cy=\"0\" r=\"37.5\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr *ngIf=\"this.model.isEnd\">\n\t\t\t\t<td class=\"table_end-indicator\">\n\t\t\t\t\t<h5>{{endOfDataText.subject | async}}</h5>\n\t\t\t\t\t<button (click)=\"scrollToTop($event)\" class=\"btn--secondary-sm\">\n\t\t\t\t\t\t{{scrollTopText.subject | async}}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tfoot>\n\t</table>\n\t`\n})\nexport class Table implements AfterViewInit {\n\t/**\n\t * Creates a skeleton model with a row and column count specified by the user\n\t *\n\t * Example:\n\t *\n\t * ```typescript\n\t * this.model = Table.skeletonModel(5, 5);\n\t * ```\n\t *\n\t * @param {number} rowCount\n\t * @param {number} columnCount\n\t */\n\tstatic skeletonModel(rowCount: number, columnCount: number) {\n\t\tconst model = new TableModel();\n\t\tlet header = new Array<TableHeaderItem>();\n\t\tlet data = new Array<Array<TableItem>>();\n\t\tlet row = new Array<TableItem>();\n\n\t\tfor (let i = 0; i < columnCount; i++) {\n\t\t\theader.push(new TableHeaderItem());\n\t\t\trow.push(new TableItem());\n\t\t}\n\t\tfor (let i = 0; i < rowCount - 1; i++) {\n\t\t\tdata.push(row);\n\t\t}\n\n\t\tmodel.header = header;\n\t\tmodel.data = data;\n\t\treturn model;\n\t}\n\n\tstatic setTabIndex(element: HTMLElement, index: -1 | 0) {\n\t\tconst focusElementList = getFocusElementList(element, tabbableSelectorIgnoreTabIndex);\n\t\tif (element.firstElementChild && element.firstElementChild.classList.contains(\"bx--table-sort\")) {\n\t\t\tfocusElementList[1].tabIndex = index;\n\t\t} else if (focusElementList.length > 0) {\n\t\t\tfocusElementList[0].tabIndex = index;\n\t\t} else {\n\t\t\telement.tabIndex = index;\n\t\t}\n\t}\n\n\t/**\n\t * Size of the table rows.\n\t *\n\t * @type {(\"sm\" | \"md\" | \"lg\")}\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Set to `true` for a loading table.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for a data grid with keyboard interactions.\n\t */\n\t@Input() isDataGrid = false;\n\n\t/**\n\t * `TableModel` with data the table is to display.\n\t *\n\t * @type {TableModel}\n\t */\n\t@Input()\n\tset model(m: TableModel) {\n\t\tif (this._model) {\n\t\t\tthis._model.dataChange.unsubscribe();\n\t\t\tthis._model.rowsSelectedChange.unsubscribe();\n\t\t}\n\n\t\tthis._model = m;\n\t\tthis._model.rowsSelectedChange.subscribe(() => this.updateSelectAllCheckbox());\n\t\tthis._model.dataChange.subscribe(() => {\n\t\t\tthis.updateSelectAllCheckbox();\n\t\t\tif (this.isDataGrid) {\n\t\t\t\tthis.handleTabIndex();\n\t\t\t}\n\t\t});\n\t\tif (this.isDataGrid) {\n\t\t\tthis._model.rowsExpandedChange.subscribe(() => {\n\t\t\t\t// Allows the expanded row to have a focus state when it exists in the DOM\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst expandedRows = this.elementRef.nativeElement.querySelectorAll(\".bx--expandable-row:not(.bx--parent-row)\");\n\t\t\t\t\tArray.from<any>(expandedRows).forEach(row => {\n\t\t\t\t\t\tif (row.firstElementChild.tabIndex === undefined || row.firstElementChild.tabIndex !== -1) {\n\t\t\t\t\t\t\trow.firstElementChild.tabIndex = -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tget model(): TableModel {\n\t\treturn this._model;\n\t}\n\n\t/**\n\t * Controls whether to show the selection checkboxes column or not.\n\t *\n\t * @deprecated in the next major carbon-components-angular version in favour of\n\t * `showSelectionColumn` because of new attribute `enableSingleSelect`\n\t * please use `showSelectionColumn` instead\n\t */\n\t@Input()\n\tset enableRowSelect(value: boolean) {\n\t\tthis.showSelectionColumn = value;\n\t}\n\n\tget enableRowSelect () {\n\t\treturn this.showSelectionColumn;\n\t}\n\n\t/**\n\t * Controls whether to show the selection checkboxes column or not.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() showSelectionColumn = true;\n\n\t/**\n\t * Controls whether to enable multiple or single row selection.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() enableSingleSelect = false;\n\n\t/**\n\t * Distance (in px) from the bottom that view has to reach before\n\t * `scrollLoad` event is emitted.\n\t *\n\t * @type {number}\n\t */\n\t@Input() scrollLoadDistance = 0;\n\n\t/**\n\t * Set to `true` to enable users to resize columns.\n\t *\n\t * Works for columns with width set in pixels.\n\t *\n\t */\n\t@Input() columnsResizable = false;\n\n\t/**\n\t * Set to `true` to enable users to drag and drop columns.\n\t *\n\t * Changing the column order in table changes table model. Be aware of it when you add additional data\n\t * to the model.\n\t *\n\t */\n\t@Input() columnsDraggable = false;\n\n\t@Input()\n\tset expandButtonAriaLabel(value: string | Observable<string>) {\n\t\tthis._expandButtonAriaLabel.override(value);\n\t}\n\tget expandButtonAriaLabel() {\n\t\treturn this._expandButtonAriaLabel.value;\n\t}\n\t@Input()\n\tset sortDescendingLabel(value: string | Observable<string>) {\n\t\tthis._sortDescendingLabel.override(value);\n\t}\n\tget sortDescendingLabel() {\n\t\treturn this._sortDescendingLabel.value;\n\t}\n\t@Input()\n\tset sortAscendingLabel(value: string | Observable<string>) {\n\t\tthis._sortAscendingLabel.override(value);\n\t}\n\tget sortAscendingLabel() {\n\t\treturn this._sortAscendingLabel.value;\n\t}\n\n\t/**\n\t * Expects an object that contains some or all of:\n\t * ```\n\t * {\n\t *\t\t\"FILTER\": \"Filter\",\n\t *\t\t\"END_OF_DATA\": \"You've reached the end of your content\",\n\t *\t\t\"SCROLL_TOP\": \"Scroll to top\",\n\t *\t\t\"CHECKBOX_HEADER\": \"Select all rows\",\n\t *\t\t\"CHECKBOX_ROW\": \"Select row\"\n\t * }\n\t * ```\n\t */\n\t@Input()\n\tset translations (value) {\n\t\tconst valueWithDefaults = merge(this.i18n.getMultiple(\"TABLE\"), value);\n\t\tthis.filterTitle.override(valueWithDefaults.FILTER);\n\t\tthis.endOfDataText.override(valueWithDefaults.END_OF_DATA);\n\t\tthis.scrollTopText.override(valueWithDefaults.SCROLL_TOP);\n\t\tthis.checkboxHeaderLabel.override(valueWithDefaults.CHECKBOX_HEADER);\n\t\tthis.checkboxRowLabel.override(valueWithDefaults.CHECKBOX_ROW);\n}\n\n\tcheckboxHeaderLabel = this.i18n.getOverridable(\"TABLE.CHECKBOX_HEADER\");\n\tcheckboxRowLabel = this.i18n.getOverridable(\"TABLE.CHECKBOX_ROW\");\n\tendOfDataText = this.i18n.getOverridable(\"TABLE.END_OF_DATA\");\n\tscrollTopText = this.i18n.getOverridable(\"TABLE.SCROLL_TOP\");\n\tfilterTitle = this.i18n.getOverridable(\"TABLE.FILTER\");\n\n\t/**\n\t * Controls if all checkboxes are viewed as selected.\n\t *\n\t * @type {boolean}\n\t */\n\tselectAllCheckbox = false;\n\n\t/**\n\t * Controls the indeterminate state of the header checkbox.\n\t *\n\t * @type {boolean}\n\t */\n\tselectAllCheckboxSomeSelected = false;\n\n\t/**\n\t * Set to `false` to remove table rows (zebra) stripes.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() striped = true;\n\n\t/**\n\t * Set to `true` to stick the header to the top of the table\n\t */\n\t@Input() stickyHeader = false;\n\n\t/**\n\t * Set footer template to customize what is displayed in the tfoot section of the table\n\t */\n\t@Input() footerTemplate: TemplateRef<any>;\n\n\t/**\n\t * Used to populate the row selection checkbox label with a useful value if set.\n\t *\n\t * Example:\n\t * ```\n\t * <ibm-table [selectionLabelColumn]=\"0\"></ibm-table>\n\t * <!-- results in aria-label=\"Select first column value\"\n\t * (where \"first column value\" is the value of the first column in the row -->\n\t * ```\n\t */\n\t@Input() selectionLabelColumn: number;\n\n\t/**\n\t * Emits an index of the column that wants to be sorted.\n\t *\n\t */\n\t@Output() sort = new EventEmitter<number>();\n\n\t/**\n\t * Emits if all rows are selected.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() selectAll = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if all rows are deselected.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() deselectAll = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if a single row is selected.\n\t *\n\t * @param {Object} ({model: this.model, selectedRowIndex: index})\n\t */\n\t@Output() selectRow = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if a single row is deselected.\n\t *\n\t * @param {Object} ({model: this.model, deselectedRowIndex: index})\n\t */\n\t@Output() deselectRow = new EventEmitter<Object>();\n\n\t/**\n\t * Emits when table requires more data to be loaded.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() scrollLoad = new EventEmitter<TableModel>();\n\n\tget noData() {\n\t\treturn !this.model.data ||\n\t\t\tthis.model.data.length === 0 ||\n\t\t\tthis.model.data.length === 1 && this.model.data[0].length === 0;\n\t}\n\n\tcolumnIndex = 0;\n\n\tprotected _model: TableModel;\n\n\tprotected _expandButtonAriaLabel = this.i18n.getOverridable(\"TABLE.EXPAND_BUTTON\");\n\tprotected _sortDescendingLabel = this.i18n.getOverridable(\"TABLE.SORT_DESCENDING\");\n\tprotected _sortAscendingLabel = this.i18n.getOverridable(\"TABLE.SORT_ASCENDING\");\n\n\tprotected columnResizeWidth: number;\n\tprotected columnResizeMouseX: number;\n\tprotected mouseMoveSubscription: Subscription;\n\tprotected mouseUpSubscription: Subscription;\n\n\tprotected isColumnDragging = false;\n\tprotected columnDraggedHoverIndex = -1;\n\tprotected columnDraggedPosition = \"\";\n\n\t/**\n\t * Creates an instance of Table.\n\t *\n\t * @param {ApplicationRef} applicationRef\n\t */\n\tconstructor(protected elementRef: ElementRef, protected applicationRef: ApplicationRef, protected i18n: I18n) {}\n\n\tngAfterViewInit() {\n\t\tif (this.isDataGrid) {\n\t\t\tthis.handleTabIndex();\n\t\t}\n\t}\n\n\tcolumnResizeStart(event, column) {\n\t\tthis.columnResizeWidth = parseInt(column.style.width, 10);\n\t\tthis.columnResizeMouseX = event.clientX;\n\t\tevent.preventDefault();\n\n\t\tthis.mouseMoveSubscription = fromEvent(document.body, \"mousemove\").subscribe(event => {\n\t\t\tthis.columnResizeProgress(event, column);\n\t\t});\n\t\tthis.mouseUpSubscription = fromEvent(document.body, \"mouseup\").subscribe(event => {\n\t\t\tthis.columnResizeEnd(event, column);\n\t\t});\n\t}\n\n\tcolumnResizeProgress(event, column) {\n\t\tconst move = event.clientX - this.columnResizeMouseX;\n\t\tcolumn.style.width = `${this.columnResizeWidth + move}px`;\n\t}\n\n\tcolumnResizeEnd(event, column) {\n\t\tthis.mouseMoveSubscription.unsubscribe();\n\t\tthis.mouseUpSubscription.unsubscribe();\n\t}\n\n\tonRowSelect(index: number) {\n\t\tif (!this.showSelectionColumn && this.enableSingleSelect) {\n\t\t\tthis.model.rowsSelected.forEach((element, index) => {\n\t\t\t\tthis.model.selectRow(index, false);\n\t\t\t});\n\t\t\tthis.model.selectRow(index, !this.model.rowsSelected[index]);\n\t\t\tthis.onRowCheckboxChange(index);\n\t\t}\n\t}\n\n\tupdateSelectAllCheckbox() {\n\t\tconst selectedRowsCount = this.model.selectedRowsCount();\n\n\t\tif (selectedRowsCount <= 0) {\n\t\t\t// reset select all checkbox if nothing selected\n\t\t\tthis.selectAllCheckbox = false;\n\t\t\tthis.selectAllCheckboxSomeSelected = false;\n\t\t} else if (selectedRowsCount < this.model.data.length) {\n\t\t\tthis.selectAllCheckboxSomeSelected = true;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered whenever the header checkbox is clicked.\n\t * Updates all the checkboxes in the table view.\n\t * Emits the `selectAll` or `deselectAll` event.\n\t *\n\t */\n\tonSelectAllCheckboxChange() {\n\t\tthis.applicationRef.tick(); // give app time to process the click if needed\n\n\t\tif (this.selectAllCheckboxSomeSelected) {\n\t\t\tthis.selectAllCheckbox = false; // clear all boxes\n\t\t\tthis.deselectAll.emit(this.model);\n\t\t} else if (this.selectAllCheckbox) {\n\t\t\tthis.selectAll.emit(this.model);\n\t\t} else {\n\t\t\tthis.deselectAll.emit(this.model);\n\t\t}\n\n\t\tthis.selectAllCheckboxSomeSelected = false;\n\n\t\tfor (let i = 0; i < this.model.rowsSelected.length; i++) {\n\t\t\tthis.model.rowsSelected[i] = this.selectAllCheckbox;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when a single row is clicked.\n\t * Updates the header checkbox state.\n\t * Emits the `selectRow` or `deselectRow` event.\n\t *\n\t * @param {number} index\n\t * @returns\n\t */\n\tonRowCheckboxChange(index: number) {\n\t\tlet startValue = this.model.rowsSelected[0];\n\n\t\tif (this.model.rowsSelected[index]) {\n\t\t\tthis.selectRow.emit({model: this.model, selectedRowIndex: index});\n\t\t} else {\n\t\t\tthis.deselectRow.emit({model: this.model, deselectedRowIndex: index});\n\t\t}\n\n\t\tfor (let i = 1; i < this.model.rowsSelected.length; i++) {\n\t\t\tlet one = this.model.rowsSelected[i];\n\n\t\t\tif (!!one !== !!startValue) { // !! essentially converts to boolean and we want undefined to be false\n\t\t\t\t// set indeterminate\n\t\t\t\tthis.selectAllCheckbox = false;\n\t\t\t\tthis.selectAllCheckboxSomeSelected = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.selectAllCheckboxSomeSelected = false;\n\t\tthis.selectAllCheckbox = startValue;\n\t}\n\n\t/**\n\t * Triggered when the user scrolls on the `<tbody>` element.\n\t * Emits the `scrollLoad` event.\n\t *\n\t * @param {any} event\n\t */\n\tonScroll(event) {\n\t\tconst distanceFromBottom = event.target.scrollHeight - event.target.clientHeight - event.target.scrollTop;\n\n\t\tif (distanceFromBottom <= this.scrollLoadDistance) {\n\t\t\tthis.scrollLoad.emit(this.model);\n\t\t} else {\n\t\t\tthis.model.isEnd = false;\n\t\t}\n\t}\n\n\tcolumnDragStart(event, columnIndex) {\n\t\tthis.isColumnDragging = true;\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t\tevent.dataTransfer.setData(\"columnIndex\", JSON.stringify(columnIndex));\n\t}\n\n\tcolumnDragEnd(event, columnIndex) {\n\t\tthis.isColumnDragging = false;\n\t\tthis.columnDraggedHoverIndex = -1;\n\t}\n\n\tcolumnDragEnter(event, position, columnIndex) {\n\t\tthis.columnDraggedPosition = position;\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t}\n\n\tcolumnDragLeave(event, position, columnIndex) {\n\t\tthis.columnDraggedPosition = \"\";\n\t}\n\n\tcolumnDragover(event, position, columnIndex) {\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t\tthis.columnDraggedPosition = position;\n\n\t\t// needed to tell browser to allow dropping\n\t\tevent.preventDefault();\n\t}\n\n\tcolumnDrop(event, position, columnIndex) {\n\t\tthis.isColumnDragging = false;\n\t\tthis.columnDraggedHoverIndex = -1;\n\t\tthis.columnDraggedPosition = \"\";\n\n\t\tthis.model.moveColumn(\n\t\t\tparseInt(event.dataTransfer.getData(\"columnIndex\"), 10),\n\t\t\tcolumnIndex + (position === \"right\" ? 1 : 0)\n\t\t);\n\t}\n\n\tget scrollbarWidth() {\n\t\treturn getScrollbarWidth();\n\t}\n\n\tfirstExpandedDataInRow(row) {\n\t\tconst found = row.find(d => d.expandedData);\n\t\tif (found) {\n\t\t\treturn found.expandedData;\n\t\t}\n\t\treturn found;\n\t}\n\n\tfirstExpandedTemplateInRow(row) {\n\t\tconst found = row.find(d => d.expandedTemplate);\n\t\tif (found) {\n\t\t\treturn found.expandedTemplate;\n\t\t}\n\t\treturn found;\n\t}\n\t/**\n\t * Triggered when the user scrolls on the `<tbody>` element.\n\t * Emits the `scrollLoad` event.\n\t *\n\t * @param {any} event\n\t */\n\tscrollToTop(event) {\n\t\tevent.target.parentElement.parentElement.parentElement.parentElement.children[1].scrollTop = 0;\n\t\tthis.model.isEnd = false;\n\t}\n\n\thandleTabIndex() {\n\t\tsetTimeout(() => {\n\t\t\tconst focusElementList = getFocusElementList(this.elementRef.nativeElement, tabbableSelectorIgnoreTabIndex);\n\t\t\tif (focusElementList.length > 0) {\n\t\t\t\tfocusElementList.forEach(tabbable => {\n\t\t\t\t\ttabbable.tabIndex = -1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tArray.from<HTMLElement>(this.elementRef.nativeElement.querySelectorAll(\"td, th\")).forEach(cell => Table.setTabIndex(cell, -1));\n\n\t\t\tconst rows = this.elementRef.nativeElement.firstElementChild.rows;\n\t\t\tif (Array.from(rows[0].querySelectorAll(\"th\")).some(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length > 0)) {\n\t\t\t\tTable.setTabIndex(rows[0].querySelector(\"th\"), 0);\n\t\t\t} else {\n\t\t\t\tTable.setTabIndex(rows[1].querySelector(\"td\"), 0);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetIndex(columnIndex) {\n\t\tif (this.model.hasExpandableRows() && this.showSelectionColumn) {\n\t\t\tthis.columnIndex = columnIndex + 2;\n\t\t} else if (this.model.hasExpandableRows() || this.showSelectionColumn) {\n\t\t\tthis.columnIndex = columnIndex + 1;\n\t\t}\n\t}\n\n\tsetCheckboxIndex() {\n\t\tif (this.model.hasExpandableRows()) {\n\t\t\tthis.columnIndex = 1;\n\t\t} else {\n\t\t\tthis.columnIndex = 0;\n\t\t}\n\t}\n\n\tsetExpandIndex(event) {\n\t\tthis.columnIndex = 0;\n\t}\n\n\tgetSelectionLabelValue(row: TableItem[]) {\n\t\tif (!this.selectionLabelColumn) {\n\t\t\treturn { value: this.i18n.get().TABLE.ROW };\n\t\t}\n\t\treturn { value: row[this.selectionLabelColumn].data };\n\t}\n\n\tgetExpandButtonAriaLabel() {\n\t\treturn this._expandButtonAriaLabel.subject;\n\t}\n\tgetSortDescendingLabel() {\n\t\treturn this._sortDescendingLabel.subject;\n\t}\n\tgetSortAscendingLabel() {\n\t\treturn this._sortAscendingLabel.subject;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"table.component.js","sourceRoot":"","sources":["../src/table/table.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tComponent,\n\tApplicationRef,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tAfterViewInit,\n\tTemplateRef\n} from \"@angular/core\";\nimport { Subscription, fromEvent, Observable } from \"rxjs\";\n\nimport { TableModel } from \"./table.module\";\nimport { TableHeaderItem } from \"./table-header-item.class\";\nimport { TableItem } from \"./table-item.class\";\nimport { getScrollbarWidth } from \"../common/utils\";\nimport { getFocusElementList, tabbableSelectorIgnoreTabIndex } from \"../common/tab.service\";\nimport { I18n, Overridable } from \"./../i18n/i18n.module\";\nimport { merge } from \"./../utils/object\";\n\nexport interface TableTranslations {\n\tFILTER: string;\n\tEND_OF_DATA: string;\n\tSCROLL_TOP: string;\n\tCHECKBOX_HEADER: string;\n\tCHECKBOX_ROW: string;\n}\n\n/**\n * Build your table with this component by extending things that differ from default.\n *\n * [See demo](../../?path=/story/table--basic)\n *\n * Instead of the usual write-your-own-html approach you had with `<table>`,\n * carbon table uses model-view-controller approach.\n *\n * Here, you create a view (with built-in controller) and provide it a model.\n * Changes you make to the model are reflected in the view. Provide same model you use\n * in the table to the `<ibm-pagination>` components.\n * They provide a different view over the same data.\n *\n * ## Basic usage\n *\n * ```html\n * <ibm-table [model]=\"model\"></ibm-table>\n * ```\n *\n * ```typescript\n * public model = new TableModel();\n *\n * this.model.data = [\n * \t[new TableItem({data: \"asdf\"}), new TableItem({data: \"qwer\"})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"zwer\"})],\n * \t[new TableItem({data: \"bsdf\"}), new TableItem({data: \"swer\"})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"twer\"})]\n * ];\n * ```\n *\n * ## Customization\n *\n * If you have custom data in your table, you need a way to display it. You can do that\n * by providing a template to `TableItem`.\n *\n * ```html\n * <ng-template #customTableItemTemplate let-data=\"data\">\n * \t<a [routerLink]=\"data.link\">{{data.name}} {{data.surname}}</a>\n * </ng-template>\n * ```\n *\n * ```typescript\n * customTableItemTemplate: TemplateRef<any>;\n *\n * this.customModel.data = [\n * \t[new TableItem({data: \"asdf\"}), new TableItem({data: {name: \"Lessy\", link: \"/table\"}, template: this.customTableItemTemplate})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"swer\"})],\n * \t[new TableItem({data: \"bsdf\"}), new TableItem({data: {name: \"Alice\", surname: \"Bob\"}, template: this.customTableItemTemplate})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"twer\"})],\n * ];\n * ```\n *\n * ### Sorting and filtering\n *\n * In case you need custom sorting and/or filtering you should subclass `TableHeaderItem`\n * and override needed functions.\n *\n * ```typescript\n * class FilterableHeaderItem extends TableHeaderItem {\n * \t// custom filter function\n * \tfilter(item: TableItem): boolean {\n * \t\tif (typeof item.data === \"string\" && item.data.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0 ||\n * \t\titem.data.name && item.data.name.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0 ||\n * \t\titem.data.surname && item.data.surname.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0) {\n * \t\t\treturn false;\n * \t\t}\n * \t\treturn true;\n * \t}\n *\n * \tset filterCount(n) {}\n * \tget filterCount() {\n * \t\treturn (this.filterData && this.filterData.data && this.filterData.data.length > 0) ? 1 : 0;\n * \t}\n *\n * \t// used for custom sorting\n * \tcompare(one: TableItem, two: TableItem) {\n * \t\tconst stringOne = (one.data.name || one.data.surname || one.data).toLowerCase();\n * \t\tconst stringTwo = (two.data.name || two.data.surname || two.data).toLowerCase();\n *\n * \t\tif (stringOne > stringTwo) {\n * \t\t\treturn 1;\n * \t\t} else if (stringOne < stringTwo) {\n * \t\t\treturn -1;\n * \t\t} else {\n * \t\t\treturn 0;\n * \t\t}\n * \t}\n * }\n * ```\n *\n * See `TableHeaderItem` class for more information.\n *\n * ## No data template\n *\n * When table has no data to show, it can show a message you provide it instead.\n *\n * ```html\n * <ibm-table [model]=\"model\">No data.</ibm-table>\n * ```\n *\n * ... will show `No data.` message, but you can get creative and provide any template you want\n * to replace table's default `tbody`.\n *\n * ## Use pagination as table footer\n *\n * ```html\n * <ibm-pagination [model]=\"model\" (selectPage)=\"selectPage($event)\"></ibm-pagination>\n * ```\n *\n * `selectPage()` function should fetch the data from backend, create new `data`, apply it to `model.data`,\n * and update `model.currentPage`.\n *\n * If the data your server returns is a two dimensional array of objects, it would look something like this:\n *\n * ```typescript\n * selectPage(page) {\n * \tthis.getPage(page).then((data: Array<Array<any>>) => {\n * \t\t// set the data and update page\n * \t\tthis.model.data = this.prepareData(data);\n * \t\tthis.model.currentPage = page;\n * \t});\n * }\n *\n * protected prepareData(data: Array<Array<any>>) {\n * \t// create new data from the service data\n * \tlet newData = [];\n * \tdata.forEach(dataRow => {\n * \t\tlet row = [];\n * \t\tdataRow.forEach(dataElement => {\n * \t\t\trow.push(new TableItem({\n * \t\t\t\tdata: dataElement,\n * \t\t\t\ttemplate: typeof dataElement === \"string\" ? undefined : this.paginationTableItemTemplate\n * \t\t\t\t// your template can handle all the data types so you don't have to conditionally set it\n * \t\t\t\t// you can also set different templates for different columns based on index\n * \t\t\t}));\n * \t\t});\n * \t\tnewData.push(row);\n * \t});\n * \treturn newData;\n * }\n * ```\n *\n * <example-url>../../iframe.html?id=table--basic</example-url>\n *\n * @export\n * @class Table\n * @implements {AfterContentChecked}\n */\n@Component({\n\tselector: \"ibm-table\",\n\ttemplate: `\n\t<table\n\tclass=\"bx--data-table bx--data-table--sort\"\n\t[ngClass]=\"{\n\t\t'bx--data-table--compact': size === 'sm',\n\t\t'bx--data-table--tall': size === 'lg',\n\t\t'bx--data-table--zebra': striped,\n\t\t'bx--skeleton': skeleton\n\t}\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th\n\t\t\t\t\tclass=\"bx--table-expand\"\n\t\t\t\t\t*ngIf=\"model.hasExpandableRows()\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t</th>\n\t\t\t\t<th\n\t\t\t\t\tclass=\"bx--table-column-checkbox\"\n\t\t\t\t\t*ngIf=\"!skeleton && showSelectionColumn\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t(click)=\"setCheckboxIndex()\"\n\t\t\t\t\tstyle=\"width: 10px;\">\n\t\t\t\t\t<ibm-checkbox\n\t\t\t\t\t\tinline=\"true\"\n\t\t\t\t\t\t[size]=\"size !== ('lg' ? 'sm' : 'md')\"\n\t\t\t\t\t\t[(ngModel)]=\"selectAllCheckbox\"\n\t\t\t\t\t\t[indeterminate]=\"selectAllCheckboxSomeSelected\"\n\t\t\t\t\t\t[attr.aria-label]=\"checkboxHeaderLabel.subject | async\"\n\t\t\t\t\t\t(change)=\"onSelectAllCheckboxChange()\">\n\t\t\t\t\t</ibm-checkbox>\n\t\t\t\t</th>\n\t\t\t\t<ng-container *ngFor=\"let column of model.header; let i = index\">\n\t\t\t\t\t<th\n\t\t\t\t\t\t[ngClass]='{\"thead_action\": column.filterTemplate || this.sort.observers.length > 0}'\n\t\t\t\t\t\t*ngIf=\"column.visible\"\n\t\t\t\t\t\t[class]=\"column.className\"\n\t\t\t\t\t\t[ngStyle]=\"column.style\"\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t[draggable]=\"columnsDraggable\"\n\t\t\t\t\t\t(dragstart)=\"columnDragStart($event, i)\"\n\t\t\t\t\t\t(dragend)=\"columnDragEnd($event, i)\"\n\t\t\t\t\t\t(click)=\"setIndex(i)\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnsResizable\"\n\t\t\t\t\t\t\tclass=\"column-resize-handle\"\n\t\t\t\t\t\t\t(mousedown)=\"columnResizeStart($event, column)\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"bx--table-sort\"\n\t\t\t\t\t\t\t*ngIf=\"!skeleton && this.sort.observers.length > 0 && column.sortable\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"(column.sorted && column.ascending ? getSortDescendingLabel() : getSortAscendingLabel()) | async\"\n\t\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'bx--table-sort--active': column.sorted,\n\t\t\t\t\t\t\t\t'bx--table-sort--ascending': column.ascending\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t(click)=\"sort.emit(i)\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t*ngIf=\"!column.template\"\n\t\t\t\t\t\t\t\t[title]=\"column.data\"\n\t\t\t\t\t\t\t\ttabindex=\"-1\">\n\t\t\t\t\t\t\t\t{{column.data}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{data: column.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"bx--table-sort__icon\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M12.3 9.3l-3.8 3.8V1h-1v12.1L3.7 9.3 3 10l5 5 5-5z\"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"bx--table-sort__icon-unsorted\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M13.8 10.3L12 12.1V2h-1v10.1l-1.8-1.8-.7.7 3 3 3-3zM4.5 2l-3 3 .7.7L4 3.9V14h1V3.9l1.8 1.8.7-.7z\"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"bx--table-header-label\"\n\t\t\t\t\t\t\t*ngIf=\"!skeleton && this.sort.observers.length === 0 || (this.sort.observers.length > 0 && !column.sortable)\">\n\t\t\t\t\t\t\t<span *ngIf=\"!column.template\" [title]=\"column.data\">{{column.data}}</span>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{data: column.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t[ngClass]=\"{'active': column.filterCount > 0}\"\n\t\t\t\t\t\t\t*ngIf=\"column.filterTemplate\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t[ibmTooltip]=\"column.filterTemplate\"\n\t\t\t\t\t\t\ttrigger=\"click\"\n\t\t\t\t\t\t\t[title]=\"filterTitle.subject | async\"\n\t\t\t\t\t\t\tplacement=\"bottom,top\"\n\t\t\t\t\t\t\t[data]=\"column.filterData\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"icon--sm\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\">\n\t\t\t\t\t\t\t\t<path d=\"M0 0v3l6 8v5h4v-5l6-8V0H0zm9 10.7V15H7v-4.3L1.3 3h13.5L9 10.7z\"/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span *ngIf=\"column.filterCount > 0\">\n\t\t\t\t\t\t\t\t{{column.filterCount}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"columnsDraggable && isColumnDragging\"\n\t\t\t\t\t\tclass=\"drop-area\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnDraggedHoverIndex == i && columnDraggedPosition == 'left'\"\n\t\t\t\t\t\t\tclass=\"drop-indicator-left\"></div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"drop-area-left\"\n\t\t\t\t\t\t\t(dragenter)=\"columnDragEnter($event, 'left', i)\"\n\t\t\t\t\t\t\t(dragleave)=\"columnDragLeave($event, 'left', i)\"\n\t\t\t\t\t\t\t(dragover)=\"columnDragover($event, 'left', i)\"\n\t\t\t\t\t\t\t(drop)=\"columnDrop($event, 'left', i)\">\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"drop-area-right\"\n\t\t\t\t\t\t\t(dragenter)=\"columnDragEnter($event, 'right', i)\"\n\t\t\t\t\t\t\t(dragleave)=\"columnDragLeave($event, 'right', i)\"\n\t\t\t\t\t\t\t(dragover)=\"columnDragover($event, 'right', i)\"\n\t\t\t\t\t\t\t(drop)=\"columnDrop($event, 'right', i)\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnDraggedHoverIndex == i && columnDraggedPosition == 'right'\"\n\t\t\t\t\t\t\tclass=\"drop-indicator-right\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</th>\n\t\t\t\t</ng-container>\n\t\t\t\t<th *ngIf=\"!skeleton && stickyHeader\" [ngStyle]=\"{'width': scrollbarWidth + 'px', 'padding': 0, 'border': 0}\">\n\t\t\t\t\t<!--\n\t\t\t\t\t\tScrollbar pushes body to the left so this header column is added to push\n\t\t\t\t\t\tthe title bar the same amount and keep the header and body columns aligned.\n\t\t\t\t\t-->\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody\n\t\t*ngIf=\"!noData; else noDataTemplate\"\n\t\t[ngStyle]=\"{'overflow-y': 'scroll'}\"\n\t\t(scroll)=\"onScroll($event)\">\n\t\t\t<ng-container *ngFor=\"let row of model.data; let i = index\">\n\t\t\t\t<tr *ngIf=\"!model.isRowFiltered(i)\"\n\t\t\t\t\t(click)=\"onRowSelect(i)\"\n\t\t\t\t\t[attr.data-parent-row]=\"(model.isRowExpandable(i) ? 'true' : null)\"\n\t\t\t\t\t[class]=\"model.rowsClass[i] ? model.rowsClass[i] : null\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'bx--data-table--selected': model.rowsSelected[i],\n\t\t\t\t\t\t'bx--parent-row': model.isRowExpandable(i),\n\t\t\t\t\t\t'bx--expandable-row': model.rowsExpanded[i],\n\t\t\t\t\t\t'tbody_row--selectable': enableSingleSelect,\n\t\t\t\t\t\t'tbody_row--success': !model.rowsSelected[i] && model.rowsContext[i] === 'success',\n\t\t\t\t\t\t'tbody_row--warning': !model.rowsSelected[i] && model.rowsContext[i] === 'warning',\n\t\t\t\t\t\t'tbody_row--info': !model.rowsSelected[i] && model.rowsContext[i] === 'info',\n\t\t\t\t\t\t'tbody_row--error': !model.rowsSelected[i] && model.rowsContext[i] === 'error'\n\t\t\t\t\t}\">\n\t\t\t\t\t<td\n\t\t\t\t\t*ngIf=\"model.hasExpandableRows()\"\n\t\t\t\t\tclass=\"bx--table-expand\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t[attr.data-previous-value]=\"(model.rowsExpanded[i] ? 'collapsed' : null)\"\n\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t*ngIf=\"!skeleton && model.isRowExpandable(i)\"\n\t\t\t\t\t\tclass=\"bx--table-expand__button\"\n\t\t\t\t\t\t[attr.aria-label]=\"getExpandButtonAriaLabel() | async\"\n\t\t\t\t\t\t(click)=\"model.expandRow(i, !model.rowsExpanded[i])\">\n\t\t\t\t\t\t\t<ibm-icon-chevron-right16 innerClass=\"bx--table-expand__svg\"></ibm-icon-chevron-right16>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td\n\t\t\t\t\t\t*ngIf=\"!skeleton && showSelectionColumn\"\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t(click)=\"setCheckboxIndex()\">\n\t\t\t\t\t\t<ibm-checkbox\n\t\t\t\t\t\t\tinline=\"true\"\n\t\t\t\t\t\t\t[aria-label]=\"checkboxRowLabel.subject | i18nReplace:getSelectionLabelValue(row) | async\"\n\t\t\t\t\t\t\t[size]=\"size !== ('lg' ? 'sm' : 'md')\"\n\t\t\t\t\t\t\t[(ngModel)]=\"model.rowsSelected[i]\"\n\t\t\t\t\t\t\t(change)=\"onRowCheckboxChange(i)\">\n\t\t\t\t\t\t</ibm-checkbox>\n\t\t\t\t\t</td>\n\t\t\t\t\t<ng-container *ngFor=\"let item of row; let j = index\">\n\t\t\t\t\t\t<td *ngIf=\"model.header[j].visible\"\n\t\t\t\t\t\t\t[class]=\"model.header[j].className\"\n\t\t\t\t\t\t\t[ngStyle]=\"model.header[j].style\"\n\t\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t\t(click)=\"setIndex(j)\">\n\t\t\t\t\t\t\t<span *ngIf=\"skeleton && i === 0\"></span>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!skeleton && !item.template\">{{item.data}}</ng-container>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"item.template\" [ngTemplateOutletContext]=\"{data: item.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</tr>\n\t\t\t\t<tr\n\t\t\t\t*ngIf=\"model.rowsExpanded[i] && !model.isRowFiltered(i)\"\n\t\t\t\tclass=\"bx--expandable-row\"\n\t\t\t\tibmExpandedRowHover\n\t\t\t\t[attr.data-child-row]=\"(model.rowsExpanded[i] ? 'true' : null)\">\n\t\t\t\t\t<td\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t[attr.colspan]=\"row.length + 2\"\n\t\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t\t\t<ng-container *ngIf=\"!firstExpandedTemplateInRow(row)\">{{firstExpandedDataInRow(row)}}</ng-container>\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"firstExpandedTemplateInRow(row)\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{data: firstExpandedDataInRow(row)}\">\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</ng-container>\n\t\t</tbody>\n\t\t<ng-template #noDataTemplate><ng-content></ng-content></ng-template>\n\t\t<tfoot>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"footerTemplate\">\n\t\t\t</ng-template>\n\t\t\t<tr *ngIf=\"this.model.isLoading\">\n\t\t\t\t<td class=\"table_loading-indicator\">\n\t\t\t\t\t<div class=\"bx--loading bx--loading--small\">\n\t\t\t\t\t\t<svg class=\"bx--loading__svg\" viewBox=\"-75 -75 150 150\">\n\t\t\t\t\t\t\t<circle class=\"bx--loading__stroke\" cx=\"0\" cy=\"0\" r=\"37.5\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr *ngIf=\"this.model.isEnd\">\n\t\t\t\t<td class=\"table_end-indicator\">\n\t\t\t\t\t<h5>{{endOfDataText.subject | async}}</h5>\n\t\t\t\t\t<button (click)=\"scrollToTop($event)\" class=\"btn--secondary-sm\">\n\t\t\t\t\t\t{{scrollTopText.subject | async}}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tfoot>\n\t</table>\n\t`\n})\nexport class Table implements AfterViewInit {\n\t/**\n\t * Creates a skeleton model with a row and column count specified by the user\n\t *\n\t * Example:\n\t *\n\t * ```typescript\n\t * this.model = Table.skeletonModel(5, 5);\n\t * ```\n\t *\n\t * @param {number} rowCount\n\t * @param {number} columnCount\n\t */\n\tstatic skeletonModel(rowCount: number, columnCount: number) {\n\t\tconst model = new TableModel();\n\t\tlet header = new Array<TableHeaderItem>();\n\t\tlet data = new Array<Array<TableItem>>();\n\t\tlet row = new Array<TableItem>();\n\n\t\tfor (let i = 0; i < columnCount; i++) {\n\t\t\theader.push(new TableHeaderItem());\n\t\t\trow.push(new TableItem());\n\t\t}\n\t\tfor (let i = 0; i < rowCount - 1; i++) {\n\t\t\tdata.push(row);\n\t\t}\n\n\t\tmodel.header = header;\n\t\tmodel.data = data;\n\t\treturn model;\n\t}\n\n\tstatic setTabIndex(element: HTMLElement, index: -1 | 0) {\n\t\tconst focusElementList = getFocusElementList(element, tabbableSelectorIgnoreTabIndex);\n\t\tif (element.firstElementChild && element.firstElementChild.classList.contains(\"bx--table-sort\")) {\n\t\t\tfocusElementList[1].tabIndex = index;\n\t\t} else if (focusElementList.length > 0) {\n\t\t\tfocusElementList[0].tabIndex = index;\n\t\t} else {\n\t\t\telement.tabIndex = index;\n\t\t}\n\t}\n\n\t/**\n\t * Size of the table rows.\n\t *\n\t * @type {(\"sm\" | \"md\" | \"lg\")}\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Set to `true` for a loading table.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for a data grid with keyboard interactions.\n\t */\n\t@Input() isDataGrid = false;\n\n\t/**\n\t * `TableModel` with data the table is to display.\n\t *\n\t * @type {TableModel}\n\t */\n\t@Input()\n\tset model(m: TableModel) {\n\t\tif (this._model) {\n\t\t\tthis._model.dataChange.unsubscribe();\n\t\t\tthis._model.rowsSelectedChange.unsubscribe();\n\t\t}\n\n\t\tthis._model = m;\n\t\tthis._model.rowsSelectedChange.subscribe(() => this.updateSelectAllCheckbox());\n\t\tthis._model.dataChange.subscribe(() => {\n\t\t\tthis.updateSelectAllCheckbox();\n\t\t\tif (this.isDataGrid) {\n\t\t\t\tthis.handleTabIndex();\n\t\t\t}\n\t\t});\n\t\tif (this.isDataGrid) {\n\t\t\tthis._model.rowsExpandedChange.subscribe(() => {\n\t\t\t\t// Allows the expanded row to have a focus state when it exists in the DOM\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst expandedRows = this.elementRef.nativeElement.querySelectorAll(\".bx--expandable-row:not(.bx--parent-row)\");\n\t\t\t\t\tArray.from<any>(expandedRows).forEach(row => {\n\t\t\t\t\t\tif (row.firstElementChild.tabIndex === undefined || row.firstElementChild.tabIndex !== -1) {\n\t\t\t\t\t\t\trow.firstElementChild.tabIndex = -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tget model(): TableModel {\n\t\treturn this._model;\n\t}\n\n\t/**\n\t * Controls whether to show the selection checkboxes column or not.\n\t *\n\t * @deprecated in the next major carbon-components-angular version in favour of\n\t * `showSelectionColumn` because of new attribute `enableSingleSelect`\n\t * please use `showSelectionColumn` instead\n\t */\n\t@Input()\n\tset enableRowSelect(value: boolean) {\n\t\tthis.showSelectionColumn = value;\n\t}\n\n\tget enableRowSelect () {\n\t\treturn this.showSelectionColumn;\n\t}\n\n\t/**\n\t * Controls whether to show the selection checkboxes column or not.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() showSelectionColumn = true;\n\n\t/**\n\t * Controls whether to enable multiple or single row selection.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() enableSingleSelect = false;\n\n\t/**\n\t * Distance (in px) from the bottom that view has to reach before\n\t * `scrollLoad` event is emitted.\n\t *\n\t * @type {number}\n\t */\n\t@Input() scrollLoadDistance = 0;\n\n\t/**\n\t * Set to `true` to enable users to resize columns.\n\t *\n\t * Works for columns with width set in pixels.\n\t *\n\t */\n\t@Input() columnsResizable = false;\n\n\t/**\n\t * Set to `true` to enable users to drag and drop columns.\n\t *\n\t * Changing the column order in table changes table model. Be aware of it when you add additional data\n\t * to the model.\n\t *\n\t */\n\t@Input() columnsDraggable = false;\n\n\t@Input()\n\tset expandButtonAriaLabel(value: string | Observable<string>) {\n\t\tthis._expandButtonAriaLabel.override(value);\n\t}\n\tget expandButtonAriaLabel() {\n\t\treturn this._expandButtonAriaLabel.value;\n\t}\n\t@Input()\n\tset sortDescendingLabel(value: string | Observable<string>) {\n\t\tthis._sortDescendingLabel.override(value);\n\t}\n\tget sortDescendingLabel() {\n\t\treturn this._sortDescendingLabel.value;\n\t}\n\t@Input()\n\tset sortAscendingLabel(value: string | Observable<string>) {\n\t\tthis._sortAscendingLabel.override(value);\n\t}\n\tget sortAscendingLabel() {\n\t\treturn this._sortAscendingLabel.value;\n\t}\n\n\t/**\n\t * Expects an object that contains some or all of:\n\t * ```\n\t * {\n\t *\t\t\"FILTER\": \"Filter\",\n\t *\t\t\"END_OF_DATA\": \"You've reached the end of your content\",\n\t *\t\t\"SCROLL_TOP\": \"Scroll to top\",\n\t *\t\t\"CHECKBOX_HEADER\": \"Select all rows\",\n\t *\t\t\"CHECKBOX_ROW\": \"Select row\"\n\t * }\n\t * ```\n\t */\n\t@Input()\n\tset translations (value) {\n\t\tconst valueWithDefaults = merge(this.i18n.getMultiple(\"TABLE\"), value);\n\t\tthis.filterTitle.override(valueWithDefaults.FILTER);\n\t\tthis.endOfDataText.override(valueWithDefaults.END_OF_DATA);\n\t\tthis.scrollTopText.override(valueWithDefaults.SCROLL_TOP);\n\t\tthis.checkboxHeaderLabel.override(valueWithDefaults.CHECKBOX_HEADER);\n\t\tthis.checkboxRowLabel.override(valueWithDefaults.CHECKBOX_ROW);\n}\n\n\tcheckboxHeaderLabel = this.i18n.getOverridable(\"TABLE.CHECKBOX_HEADER\");\n\tcheckboxRowLabel = this.i18n.getOverridable(\"TABLE.CHECKBOX_ROW\");\n\tendOfDataText = this.i18n.getOverridable(\"TABLE.END_OF_DATA\");\n\tscrollTopText = this.i18n.getOverridable(\"TABLE.SCROLL_TOP\");\n\tfilterTitle = this.i18n.getOverridable(\"TABLE.FILTER\");\n\n\t/**\n\t * Controls if all checkboxes are viewed as selected.\n\t *\n\t * @type {boolean}\n\t */\n\tselectAllCheckbox = false;\n\n\t/**\n\t * Controls the indeterminate state of the header checkbox.\n\t *\n\t * @type {boolean}\n\t */\n\tselectAllCheckboxSomeSelected = false;\n\n\t/**\n\t * Set to `false` to remove table rows (zebra) stripes.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() striped = true;\n\n\t/**\n\t * Set to `true` to stick the header to the top of the table\n\t */\n\t@Input() stickyHeader = false;\n\n\t/**\n\t * Set footer template to customize what is displayed in the tfoot section of the table\n\t */\n\t@Input() footerTemplate: TemplateRef<any>;\n\n\t/**\n\t * Used to populate the row selection checkbox label with a useful value if set.\n\t *\n\t * Example:\n\t * ```\n\t * <ibm-table [selectionLabelColumn]=\"0\"></ibm-table>\n\t * <!-- results in aria-label=\"Select first column value\"\n\t * (where \"first column value\" is the value of the first column in the row -->\n\t * ```\n\t */\n\t@Input() selectionLabelColumn: number;\n\n\t/**\n\t * Emits an index of the column that wants to be sorted.\n\t *\n\t */\n\t@Output() sort = new EventEmitter<number>();\n\n\t/**\n\t * Emits if all rows are selected.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() selectAll = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if all rows are deselected.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() deselectAll = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if a single row is selected.\n\t *\n\t * @param {Object} ({model: this.model, selectedRowIndex: index})\n\t */\n\t@Output() selectRow = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if a single row is deselected.\n\t *\n\t * @param {Object} ({model: this.model, deselectedRowIndex: index})\n\t */\n\t@Output() deselectRow = new EventEmitter<Object>();\n\n\t/**\n\t * Emits when table requires more data to be loaded.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() scrollLoad = new EventEmitter<TableModel>();\n\n\tget noData() {\n\t\treturn !this.model.data ||\n\t\t\tthis.model.data.length === 0 ||\n\t\t\tthis.model.data.length === 1 && this.model.data[0].length === 0;\n\t}\n\n\tcolumnIndex = 0;\n\n\tpublic isColumnDragging = false;\n\tpublic columnDraggedHoverIndex = -1;\n\tpublic columnDraggedPosition = \"\";\n\n\tprotected _model: TableModel;\n\n\tprotected _expandButtonAriaLabel = this.i18n.getOverridable(\"TABLE.EXPAND_BUTTON\");\n\tprotected _sortDescendingLabel = this.i18n.getOverridable(\"TABLE.SORT_DESCENDING\");\n\tprotected _sortAscendingLabel = this.i18n.getOverridable(\"TABLE.SORT_ASCENDING\");\n\n\tprotected columnResizeWidth: number;\n\tprotected columnResizeMouseX: number;\n\tprotected mouseMoveSubscription: Subscription;\n\tprotected mouseUpSubscription: Subscription;\n\n\t/**\n\t * Creates an instance of Table.\n\t *\n\t * @param {ApplicationRef} applicationRef\n\t */\n\tconstructor(protected elementRef: ElementRef, protected applicationRef: ApplicationRef, protected i18n: I18n) {}\n\n\tngAfterViewInit() {\n\t\tif (this.isDataGrid) {\n\t\t\tthis.handleTabIndex();\n\t\t}\n\t}\n\n\tcolumnResizeStart(event, column) {\n\t\tthis.columnResizeWidth = parseInt(column.style.width, 10);\n\t\tthis.columnResizeMouseX = event.clientX;\n\t\tevent.preventDefault();\n\n\t\tthis.mouseMoveSubscription = fromEvent(document.body, \"mousemove\").subscribe(event => {\n\t\t\tthis.columnResizeProgress(event, column);\n\t\t});\n\t\tthis.mouseUpSubscription = fromEvent(document.body, \"mouseup\").subscribe(event => {\n\t\t\tthis.columnResizeEnd(event, column);\n\t\t});\n\t}\n\n\tcolumnResizeProgress(event, column) {\n\t\tconst move = event.clientX - this.columnResizeMouseX;\n\t\tcolumn.style.width = `${this.columnResizeWidth + move}px`;\n\t}\n\n\tcolumnResizeEnd(event, column) {\n\t\tthis.mouseMoveSubscription.unsubscribe();\n\t\tthis.mouseUpSubscription.unsubscribe();\n\t}\n\n\tonRowSelect(index: number) {\n\t\tif (!this.showSelectionColumn && this.enableSingleSelect) {\n\t\t\tthis.model.rowsSelected.forEach((element, index) => {\n\t\t\t\tthis.model.selectRow(index, false);\n\t\t\t});\n\t\t\tthis.model.selectRow(index, !this.model.rowsSelected[index]);\n\t\t\tthis.onRowCheckboxChange(index);\n\t\t}\n\t}\n\n\tupdateSelectAllCheckbox() {\n\t\tconst selectedRowsCount = this.model.selectedRowsCount();\n\n\t\tif (selectedRowsCount <= 0) {\n\t\t\t// reset select all checkbox if nothing selected\n\t\t\tthis.selectAllCheckbox = false;\n\t\t\tthis.selectAllCheckboxSomeSelected = false;\n\t\t} else if (selectedRowsCount < this.model.data.length) {\n\t\t\tthis.selectAllCheckboxSomeSelected = true;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered whenever the header checkbox is clicked.\n\t * Updates all the checkboxes in the table view.\n\t * Emits the `selectAll` or `deselectAll` event.\n\t *\n\t */\n\tonSelectAllCheckboxChange() {\n\t\tthis.applicationRef.tick(); // give app time to process the click if needed\n\n\t\tif (this.selectAllCheckboxSomeSelected) {\n\t\t\tthis.selectAllCheckbox = false; // clear all boxes\n\t\t\tthis.deselectAll.emit(this.model);\n\t\t} else if (this.selectAllCheckbox) {\n\t\t\tthis.selectAll.emit(this.model);\n\t\t} else {\n\t\t\tthis.deselectAll.emit(this.model);\n\t\t}\n\n\t\tthis.selectAllCheckboxSomeSelected = false;\n\n\t\tfor (let i = 0; i < this.model.rowsSelected.length; i++) {\n\t\t\tthis.model.rowsSelected[i] = this.selectAllCheckbox;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when a single row is clicked.\n\t * Updates the header checkbox state.\n\t * Emits the `selectRow` or `deselectRow` event.\n\t *\n\t * @param {number} index\n\t * @returns\n\t */\n\tonRowCheckboxChange(index: number) {\n\t\tlet startValue = this.model.rowsSelected[0];\n\n\t\tif (this.model.rowsSelected[index]) {\n\t\t\tthis.selectRow.emit({model: this.model, selectedRowIndex: index});\n\t\t} else {\n\t\t\tthis.deselectRow.emit({model: this.model, deselectedRowIndex: index});\n\t\t}\n\n\t\tfor (let i = 1; i < this.model.rowsSelected.length; i++) {\n\t\t\tlet one = this.model.rowsSelected[i];\n\n\t\t\tif (!!one !== !!startValue) { // !! essentially converts to boolean and we want undefined to be false\n\t\t\t\t// set indeterminate\n\t\t\t\tthis.selectAllCheckbox = false;\n\t\t\t\tthis.selectAllCheckboxSomeSelected = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.selectAllCheckboxSomeSelected = false;\n\t\tthis.selectAllCheckbox = startValue;\n\t}\n\n\t/**\n\t * Triggered when the user scrolls on the `<tbody>` element.\n\t * Emits the `scrollLoad` event.\n\t *\n\t * @param {any} event\n\t */\n\tonScroll(event) {\n\t\tconst distanceFromBottom = event.target.scrollHeight - event.target.clientHeight - event.target.scrollTop;\n\n\t\tif (distanceFromBottom <= this.scrollLoadDistance) {\n\t\t\tthis.scrollLoad.emit(this.model);\n\t\t} else {\n\t\t\tthis.model.isEnd = false;\n\t\t}\n\t}\n\n\tcolumnDragStart(event, columnIndex) {\n\t\tthis.isColumnDragging = true;\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t\tevent.dataTransfer.setData(\"columnIndex\", JSON.stringify(columnIndex));\n\t}\n\n\tcolumnDragEnd(event, columnIndex) {\n\t\tthis.isColumnDragging = false;\n\t\tthis.columnDraggedHoverIndex = -1;\n\t}\n\n\tcolumnDragEnter(event, position, columnIndex) {\n\t\tthis.columnDraggedPosition = position;\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t}\n\n\tcolumnDragLeave(event, position, columnIndex) {\n\t\tthis.columnDraggedPosition = \"\";\n\t}\n\n\tcolumnDragover(event, position, columnIndex) {\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t\tthis.columnDraggedPosition = position;\n\n\t\t// needed to tell browser to allow dropping\n\t\tevent.preventDefault();\n\t}\n\n\tcolumnDrop(event, position, columnIndex) {\n\t\tthis.isColumnDragging = false;\n\t\tthis.columnDraggedHoverIndex = -1;\n\t\tthis.columnDraggedPosition = \"\";\n\n\t\tthis.model.moveColumn(\n\t\t\tparseInt(event.dataTransfer.getData(\"columnIndex\"), 10),\n\t\t\tcolumnIndex + (position === \"right\" ? 1 : 0)\n\t\t);\n\t}\n\n\tget scrollbarWidth() {\n\t\treturn getScrollbarWidth();\n\t}\n\n\tfirstExpandedDataInRow(row) {\n\t\tconst found = row.find(d => d.expandedData);\n\t\tif (found) {\n\t\t\treturn found.expandedData;\n\t\t}\n\t\treturn found;\n\t}\n\n\tfirstExpandedTemplateInRow(row) {\n\t\tconst found = row.find(d => d.expandedTemplate);\n\t\tif (found) {\n\t\t\treturn found.expandedTemplate;\n\t\t}\n\t\treturn found;\n\t}\n\t/**\n\t * Triggered when the user scrolls on the `<tbody>` element.\n\t * Emits the `scrollLoad` event.\n\t *\n\t * @param {any} event\n\t */\n\tscrollToTop(event) {\n\t\tevent.target.parentElement.parentElement.parentElement.parentElement.children[1].scrollTop = 0;\n\t\tthis.model.isEnd = false;\n\t}\n\n\thandleTabIndex() {\n\t\tsetTimeout(() => {\n\t\t\tconst focusElementList = getFocusElementList(this.elementRef.nativeElement, tabbableSelectorIgnoreTabIndex);\n\t\t\tif (focusElementList.length > 0) {\n\t\t\t\tfocusElementList.forEach(tabbable => {\n\t\t\t\t\ttabbable.tabIndex = -1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tArray.from<HTMLElement>(this.elementRef.nativeElement.querySelectorAll(\"td, th\")).forEach(cell => Table.setTabIndex(cell, -1));\n\n\t\t\tconst rows = this.elementRef.nativeElement.firstElementChild.rows;\n\t\t\tif (Array.from(rows[0].querySelectorAll(\"th\")).some(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length > 0)) {\n\t\t\t\tTable.setTabIndex(rows[0].querySelector(\"th\"), 0);\n\t\t\t} else {\n\t\t\t\tTable.setTabIndex(rows[1].querySelector(\"td\"), 0);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetIndex(columnIndex) {\n\t\tif (this.model.hasExpandableRows() && this.showSelectionColumn) {\n\t\t\tthis.columnIndex = columnIndex + 2;\n\t\t} else if (this.model.hasExpandableRows() || this.showSelectionColumn) {\n\t\t\tthis.columnIndex = columnIndex + 1;\n\t\t}\n\t}\n\n\tsetCheckboxIndex() {\n\t\tif (this.model.hasExpandableRows()) {\n\t\t\tthis.columnIndex = 1;\n\t\t} else {\n\t\t\tthis.columnIndex = 0;\n\t\t}\n\t}\n\n\tsetExpandIndex(event) {\n\t\tthis.columnIndex = 0;\n\t}\n\n\tgetSelectionLabelValue(row: TableItem[]) {\n\t\tif (!this.selectionLabelColumn) {\n\t\t\treturn { value: this.i18n.get().TABLE.ROW };\n\t\t}\n\t\treturn { value: row[this.selectionLabelColumn].data };\n\t}\n\n\tgetExpandButtonAriaLabel() {\n\t\treturn this._expandButtonAriaLabel.subject;\n\t}\n\tgetSortDescendingLabel() {\n\t\treturn this._sortDescendingLabel.subject;\n\t}\n\tgetSortAscendingLabel() {\n\t\treturn this._sortAscendingLabel.subject;\n\t}\n}\n"]}
|