@wavemaker/app-ng-runtime 11.4.0-next.28152 → 11.4.0-rc.5339
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.
- app-ng-runtime/build-task/basic/tree/tree.build.d.ts +1 -2
- app-ng-runtime/build-task/bundles/index.umd.js +8 -10
- app-ng-runtime/build-task/bundles/index.umd.js.map +1 -1
- app-ng-runtime/build-task/esm2015/basic/tree/tree.build.js +3 -4
- app-ng-runtime/build-task/esm2015/data/form/form-field/form-field.build.js +2 -2
- app-ng-runtime/build-task/esm2015/navigation/popover/popover.build.js +3 -3
- app-ng-runtime/build-task/fesm2015/index.js +8 -10
- app-ng-runtime/build-task/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +29 -4
- app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/base/esm2015/public_api.js +2 -2
- app-ng-runtime/components/base/esm2015/utils/widget-utils.js +22 -4
- app-ng-runtime/components/base/esm2015/widgets/common/base/base-field-validations.js +3 -2
- app-ng-runtime/components/base/esm2015/widgets/common/dialog/dialog.service.js +7 -1
- app-ng-runtime/components/base/fesm2015/index.js +30 -6
- app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/base/index.metadata.json +1 -1
- app-ng-runtime/components/base/public_api.d.ts +1 -1
- app-ng-runtime/components/base/utils/widget-utils.d.ts +8 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +280 -256
- app-ng-runtime/components/basic/tree/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/basic/tree/esm2015/public_api.js +2 -2
- app-ng-runtime/components/basic/tree/esm2015/tree.component.js +322 -0
- app-ng-runtime/components/basic/tree/esm2015/tree.module.js +3 -3
- app-ng-runtime/components/basic/tree/fesm2015/index.js +260 -248
- app-ng-runtime/components/basic/tree/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/basic/tree/index.metadata.json +1 -1
- app-ng-runtime/components/basic/tree/public_api.d.ts +1 -1
- app-ng-runtime/components/basic/tree/tree.component.d.ts +34 -0
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +39 -23
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/containers/tabs/esm2015/tab-pane/tab-pane.component.js +8 -1
- app-ng-runtime/components/containers/tabs/esm2015/tabs.animator.js +33 -13
- app-ng-runtime/components/containers/tabs/fesm2015/index.js +40 -13
- app-ng-runtime/components/containers/tabs/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/containers/tabs/tabs.animator.d.ts +5 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +37 -13
- app-ng-runtime/components/data/form/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/data/form/esm2015/form-field/form-field.directive.js +26 -7
- app-ng-runtime/components/data/form/esm2015/form.component.js +10 -5
- app-ng-runtime/components/data/form/fesm2015/index.js +34 -10
- app-ng-runtime/components/data/form/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/data/form/index.metadata.json +1 -1
- app-ng-runtime/components/data/list/bundles/index.umd.js +52 -43
- app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/data/list/esm2015/list.component.js +52 -43
- app-ng-runtime/components/data/list/fesm2015/index.js +51 -42
- app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/data/list/index.metadata.json +1 -1
- app-ng-runtime/components/data/list/list.component.d.ts +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +22 -5
- app-ng-runtime/components/data/pagination/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/data/pagination/esm2015/pagination.component.js +23 -6
- app-ng-runtime/components/data/pagination/fesm2015/index.js +22 -5
- app-ng-runtime/components/data/pagination/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/data/pagination/index.metadata.json +1 -1
- app-ng-runtime/components/data/pagination/pagination.component.d.ts +1 -0
- app-ng-runtime/components/data/table/bundles/index.umd.js +64 -12
- app-ng-runtime/components/data/table/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/data/table/esm2015/table.component.js +63 -13
- app-ng-runtime/components/data/table/esm2015/table.props.js +3 -1
- app-ng-runtime/components/data/table/fesm2015/index.js +64 -12
- app-ng-runtime/components/data/table/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/data/table/index.metadata.json +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +9 -0
- app-ng-runtime/components/dialogs/default/base-dialog.d.ts +1 -0
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +17 -3
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/dialogs/default/esm2015/base-dialog.js +18 -5
- app-ng-runtime/components/dialogs/default/fesm2015/index.js +17 -4
- app-ng-runtime/components/dialogs/default/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/dialogs/default/index.metadata.json +1 -1
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +78 -35
- app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/input/epoch/date-time/date-time-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +55 -31
- app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +3 -3
- app-ng-runtime/components/input/epoch/esm2015/date-time/date-time-picker.component.js +31 -11
- app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.component.js +2 -2
- app-ng-runtime/components/input/epoch/fesm2015/index.js +87 -43
- app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +25 -19
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/navigation/menu/esm2015/menu-dropdown-item/menu-dropdown-item.component.js +15 -5
- app-ng-runtime/components/navigation/menu/esm2015/menu.component.js +14 -19
- app-ng-runtime/components/navigation/menu/fesm2015/index.js +25 -20
- app-ng-runtime/components/navigation/menu/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/navigation/menu/index.metadata.json +1 -1
- app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +7 -4
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +3 -7
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +3 -1
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/navigation/popover/esm2015/popover.component.js +5 -3
- app-ng-runtime/components/navigation/popover/fesm2015/index.js +4 -2
- app-ng-runtime/components/navigation/popover/fesm2015/index.js.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +7 -1
- app-ng-runtime/core/bundles/index.umd.js.map +1 -1
- app-ng-runtime/core/esm2015/services/pagination.service.js +8 -2
- app-ng-runtime/core/fesm2015/index.js +7 -1
- app-ng-runtime/core/fesm2015/index.js.map +1 -1
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +24 -6
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js.map +1 -1
- app-ng-runtime/mobile/components/page/default/esm2015/page.directive.js +20 -3
- app-ng-runtime/mobile/components/page/default/fesm2015/index.js +19 -2
- app-ng-runtime/mobile/components/page/default/fesm2015/index.js.map +1 -1
- app-ng-runtime/mobile/components/page/default/index.metadata.json +1 -1
- app-ng-runtime/mobile/components/page/default/page.directive.d.ts +4 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +86 -36
- app-ng-runtime/scripts/tree-keyboard-navigation/keyboard-navigation.js +251 -0
- app-ng-runtime/variables/bundles/index.umd.js +14 -4
- app-ng-runtime/variables/bundles/index.umd.js.map +1 -1
- app-ng-runtime/variables/esm2015/manager/action/notification-action.manager.js +5 -6
- app-ng-runtime/variables/esm2015/service/variables.service.js +8 -1
- app-ng-runtime/variables/fesm2015/index.js +11 -5
- app-ng-runtime/variables/fesm2015/index.js.map +1 -1
- app-ng-runtime/variables/index.metadata.json +1 -1
- app-ng-runtime/variables/service/variables.service.d.ts +4 -0
- app-ng-runtime/components/basic/tree/esm2015/tree.directive.js +0 -310
- app-ng-runtime/components/basic/tree/tree.directive.d.ts +0 -35
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, Injector, Attribute, HostBinding, ContentChildren, NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { PROP_STRING, PROP_ANY, PROP_NUMBER, PROP_BOOLEAN, register, StylableComponent, styler, APPLY_STYLES_TYPE, provideAsWidgetRef, RedrawableDirective, createArrayFrom, WmComponentsModule } from '@wm/components/base';
|
|
4
|
-
import {
|
|
4
|
+
import { setCSSFromObj, addClass, setCSS, $appDigest, isMobileApp, noop, removeAttr, removeClass, appendNode, DynamicComponentRefProvider, StatePersistence } from '@wm/core';
|
|
5
5
|
import { SwipeAnimation } from '@swipey';
|
|
6
6
|
|
|
7
7
|
class TabsAnimator extends SwipeAnimation {
|
|
@@ -9,19 +9,32 @@ class TabsAnimator extends SwipeAnimation {
|
|
|
9
9
|
super();
|
|
10
10
|
this.tabs = tabs;
|
|
11
11
|
this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');
|
|
12
|
-
const childEls = this._$el.find('>[wmTabPane]');
|
|
13
|
-
this._noOfTabs = childEls.length;
|
|
14
|
-
const maxWidth = `${this._noOfTabs * 100}%`;
|
|
15
|
-
addClass(this.tabs.getNativeElement(), 'has-transition');
|
|
16
|
-
setCSSFromObj(this._$el[0], { maxWidth: maxWidth, width: maxWidth });
|
|
17
|
-
const width = `${100 / this._noOfTabs}%`;
|
|
18
|
-
for (const child of Array.from(childEls)) {
|
|
19
|
-
setCSS(child, 'width', width);
|
|
20
|
-
}
|
|
21
12
|
this.init(this._$el);
|
|
22
13
|
}
|
|
14
|
+
calibrate() {
|
|
15
|
+
const activeTabIndex = this.tabs.getActiveTabIndex();
|
|
16
|
+
const panes = this._$el.find('>.tab-pane');
|
|
17
|
+
let activeTabVisibleIndex = 0;
|
|
18
|
+
let noOfVisiblePanes = 0;
|
|
19
|
+
let visiblePanes = [];
|
|
20
|
+
panes.each((i, p) => {
|
|
21
|
+
if (!$(p).prop('hidden')) {
|
|
22
|
+
noOfVisiblePanes++;
|
|
23
|
+
if (i === activeTabIndex) {
|
|
24
|
+
activeTabVisibleIndex = noOfVisiblePanes - 1;
|
|
25
|
+
}
|
|
26
|
+
visiblePanes.push(p);
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
activeTabIndex: activeTabVisibleIndex,
|
|
32
|
+
noOfTabs: noOfVisiblePanes,
|
|
33
|
+
panes: visiblePanes
|
|
34
|
+
};
|
|
35
|
+
}
|
|
23
36
|
bounds() {
|
|
24
|
-
const activeTabIndex = this.
|
|
37
|
+
const { activeTabIndex, noOfTabs, panes } = this.calibrate(), w = $(panes[0]).width(), centerVal = -1 * activeTabIndex * w;
|
|
25
38
|
this.clearContentFocus();
|
|
26
39
|
return {
|
|
27
40
|
strict: false,
|
|
@@ -49,8 +62,15 @@ class TabsAnimator extends SwipeAnimation {
|
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
64
|
transitionTabIntoView() {
|
|
52
|
-
const activeTabIndex = this.
|
|
53
|
-
|
|
65
|
+
const { activeTabIndex, noOfTabs, panes } = this.calibrate();
|
|
66
|
+
const maxWidth = `${noOfTabs * 100}%`;
|
|
67
|
+
setCSSFromObj(this._$el[0], { maxWidth: maxWidth, width: maxWidth });
|
|
68
|
+
addClass(this.tabs.getNativeElement(), 'has-transition');
|
|
69
|
+
const width = `${100 / noOfTabs}%`;
|
|
70
|
+
panes.forEach(p => {
|
|
71
|
+
setCSS(p, 'width', width);
|
|
72
|
+
});
|
|
73
|
+
setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);
|
|
54
74
|
}
|
|
55
75
|
onUpper($event) {
|
|
56
76
|
this.tabs.prev($event);
|
|
@@ -183,6 +203,7 @@ class TabPaneComponent extends StylableComponent {
|
|
|
183
203
|
}
|
|
184
204
|
}
|
|
185
205
|
onPropertyChange(key, nv, ov) {
|
|
206
|
+
var _a;
|
|
186
207
|
if (key === 'content') {
|
|
187
208
|
if (this.isActive) {
|
|
188
209
|
setTimeout(() => this.$lazyLoad(), 100);
|
|
@@ -195,6 +216,12 @@ class TabPaneComponent extends StylableComponent {
|
|
|
195
216
|
if (this._isFirstLoad) {
|
|
196
217
|
this.tabsRef.selectDefaultPaneByIndex(this.tabsRef.defaultpaneindex);
|
|
197
218
|
}
|
|
219
|
+
else if (!nv && this.isActive) {
|
|
220
|
+
this.tabsRef.next();
|
|
221
|
+
}
|
|
222
|
+
else if (nv || !this.isActive) {
|
|
223
|
+
(_a = this.tabsRef.tabsAnimator) === null || _a === void 0 ? void 0 : _a.transitionTabIntoView();
|
|
224
|
+
}
|
|
198
225
|
this._isFirstLoad = false;
|
|
199
226
|
}
|
|
200
227
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.module.ts","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n private _noOfTabs;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n const childEls = this._$el.find('>[wmTabPane]');\n this._noOfTabs = childEls.length;\n\n const maxWidth = `${this._noOfTabs * 100}%`;\n addClass(this.tabs.getNativeElement(), 'has-transition');\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n const width = `${100 / this._noOfTabs}%`;\n for (const child of Array.from(childEls)) {\n setCSS(child as HTMLElement, 'width', width);\n }\n this.init(this._$el);\n }\n\n public bounds() {\n const activeTabIndex = this.tabs.getActiveTabIndex(),\n w = this._$el.find('>.tab-pane').first().width(),\n noOfTabs = this._$el.find('>.tab-pane:visible').length,\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / this._noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING]\n ]\n );\n if (isMobileApp()) {\n props.set('transition', {value: 'slide', ...PROP_STRING});\n }\n register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}]\n ]\n )\n );\n};\n","import { AfterViewInit, Attribute, Component, ContentChildren, HostBinding, Injector, OnInit } from '@angular/core';\n\nimport { noop, removeAttr } from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, RedrawableDirective, styler, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './tab-pane.props';\nimport { TabsComponent } from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n constructor(\n inj: Injector,\n private tabsRef: TabsComponent,\n @Attribute('heading') public heading,\n @Attribute('title') public title\n ) {\n super(inj, WIDGET_CONFIG);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event) {\n this.tabsRef.notifyChange(this, evt);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n}\n","import { AfterContentInit, AfterViewInit, Attribute, Component, ContentChildren, Injector, OnInit, QueryList } from '@angular/core';\n\nimport { addClass, appendNode, DynamicComponentRefProvider, noop, removeClass, StatePersistence } from '@wm/core';\nimport {\n APPLY_STYLES_TYPE,\n IWidgetConfig,\n provideAsWidgetRef,\n styler,\n StylableComponent,\n createArrayFrom\n} from '@wm/components/base';\n\nimport { TabsAnimator } from './tabs.animator';\nimport { registerProps } from './tabs.props';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\ndeclare const _, $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = _.find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = _.find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!_.isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n _.forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = _.find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = _.indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = _.get(pane, 'params');\n\n _.forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n _.forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj});\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!_.isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs) { \n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return _.findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return _.find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n this.prev();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n this.next();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\nconst components = [\n TabPaneComponent,\n TabsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class TabsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵb} from './tab-pane/tab-pane.props';\nexport {registerProps as ɵa} from './tabs.props';"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.module.ts","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('>.tab-pane');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING]\n ]\n );\n if (isMobileApp()) {\n props.set('transition', {value: 'slide', ...PROP_STRING});\n }\n register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}]\n ]\n )\n );\n};\n","import { AfterViewInit, Attribute, Component, ContentChildren, HostBinding, Injector, OnInit } from '@angular/core';\n\nimport { noop, removeAttr } from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, RedrawableDirective, styler, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './tab-pane.props';\nimport { TabsComponent } from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n constructor(\n inj: Injector,\n private tabsRef: TabsComponent,\n @Attribute('heading') public heading,\n @Attribute('title') public title\n ) {\n super(inj, WIDGET_CONFIG);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event) {\n this.tabsRef.notifyChange(this, evt);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n}\n","import { AfterContentInit, AfterViewInit, Attribute, Component, ContentChildren, Injector, OnInit, QueryList } from '@angular/core';\n\nimport { addClass, appendNode, DynamicComponentRefProvider, noop, removeClass, StatePersistence } from '@wm/core';\nimport {\n APPLY_STYLES_TYPE,\n IWidgetConfig,\n provideAsWidgetRef,\n styler,\n StylableComponent,\n createArrayFrom\n} from '@wm/components/base';\n\nimport { TabsAnimator } from './tabs.animator';\nimport { registerProps } from './tabs.props';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\ndeclare const _, $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = _.find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = _.find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!_.isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n _.forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = _.find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = _.indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = _.get(pane, 'params');\n\n _.forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n _.forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj});\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!_.isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs) { \n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return _.findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return _.find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n this.prev();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n this.next();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\nconst components = [\n TabPaneComponent,\n TabsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class TabsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵb} from './tab-pane/tab-pane.props';\nexport {registerProps as ɵa} from './tabs.props';"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
|
|
@@ -3,8 +3,12 @@ import { TabsComponent } from './tabs.component';
|
|
|
3
3
|
export declare class TabsAnimator extends SwipeAnimation {
|
|
4
4
|
private tabs;
|
|
5
5
|
private _$el;
|
|
6
|
-
private _noOfTabs;
|
|
7
6
|
constructor(tabs: TabsComponent);
|
|
7
|
+
calibrate(): {
|
|
8
|
+
activeTabIndex: number;
|
|
9
|
+
noOfTabs: number;
|
|
10
|
+
panes: any[];
|
|
11
|
+
};
|
|
8
12
|
bounds(): {
|
|
9
13
|
strict: boolean;
|
|
10
14
|
lower: number;
|
|
@@ -436,16 +436,21 @@
|
|
|
436
436
|
};
|
|
437
437
|
};
|
|
438
438
|
var ɵ2 = findInvalidElement;
|
|
439
|
-
var setTouchedState = function (ngForm) {
|
|
439
|
+
var setTouchedState = function (self, ngForm, fieldName) {
|
|
440
|
+
var _a, _b;
|
|
440
441
|
if (ngForm.valid) {
|
|
441
442
|
return;
|
|
442
443
|
}
|
|
443
444
|
if (ngForm.controls) {
|
|
444
|
-
_.forEach(ngForm.controls, function (ctrl) {
|
|
445
|
-
setTouchedState(ctrl);
|
|
445
|
+
_.forEach(ngForm.controls, function (ctrl, fieldName) {
|
|
446
|
+
setTouchedState(self, ctrl, fieldName);
|
|
446
447
|
});
|
|
447
448
|
}
|
|
448
449
|
else {
|
|
450
|
+
var element = self.$element.find("[wmformfield][key=\"" + fieldName + "\"]");
|
|
451
|
+
element[0].setAttribute('__errormsg', element[0].getAttribute('__validationId'));
|
|
452
|
+
(_a = element[0].querySelector('input')) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-invalid', ngForm.invalid);
|
|
453
|
+
(_b = element[0].querySelector('input')) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-describedby', element[0].getAttribute('__validationId'));
|
|
449
454
|
ngForm.markAsTouched();
|
|
450
455
|
}
|
|
451
456
|
};
|
|
@@ -766,7 +771,7 @@
|
|
|
766
771
|
};
|
|
767
772
|
// This method loops through the form fields and highlights the invalid fields by setting state to touched
|
|
768
773
|
FormComponent.prototype.highlightInvalidFields = function () {
|
|
769
|
-
setTouchedState(this.ngform);
|
|
774
|
+
setTouchedState(this, this.ngform, '');
|
|
770
775
|
};
|
|
771
776
|
// Disable the form submit if form is in invalid state. Highlight all the invalid fields if validation type is default
|
|
772
777
|
FormComponent.prototype.validateFieldsOnSubmit = function () {
|
|
@@ -1357,8 +1362,8 @@
|
|
|
1357
1362
|
FormComponent.prototype.generateFormFields = function () {
|
|
1358
1363
|
return __awaiter(this, void 0, void 0, function () {
|
|
1359
1364
|
var noOfColumns, $gridLayout, columnWidth, fieldTemplate, colCount, index, userFields, fields, colTmpl, componentFactoryRef, component;
|
|
1360
|
-
return __generator(this, function (
|
|
1361
|
-
switch (
|
|
1365
|
+
return __generator(this, function (_c) {
|
|
1366
|
+
switch (_c.label) {
|
|
1362
1367
|
case 0:
|
|
1363
1368
|
// Check if grid layout is present or not for first time
|
|
1364
1369
|
if (_.isUndefined(this._isGridLayoutPresent)) {
|
|
@@ -1416,7 +1421,7 @@
|
|
|
1416
1421
|
transpile: true
|
|
1417
1422
|
})];
|
|
1418
1423
|
case 1:
|
|
1419
|
-
componentFactoryRef =
|
|
1424
|
+
componentFactoryRef = _c.sent();
|
|
1420
1425
|
component = this.dynamicFormRef.createComponent(componentFactoryRef, 0, this.inj);
|
|
1421
1426
|
core.extendProto(component.instance, this._dynamicContext);
|
|
1422
1427
|
$gridLayout[0].appendChild(component.location.nativeElement);
|
|
@@ -1828,10 +1833,20 @@
|
|
|
1828
1833
|
$($evt.target).closest('.live-field').addClass('active');
|
|
1829
1834
|
};
|
|
1830
1835
|
FormFieldDirective.prototype._onBlurField = function ($evt) {
|
|
1831
|
-
var _a, _b;
|
|
1836
|
+
var _a, _b, _c, _d;
|
|
1832
1837
|
$($evt.target).closest('.live-field').removeClass('active');
|
|
1833
|
-
|
|
1834
|
-
|
|
1838
|
+
var ele = this.nativeElement.querySelector('p.text-danger');
|
|
1839
|
+
// Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes
|
|
1840
|
+
if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {
|
|
1841
|
+
this.nativeElement.setAttribute('__errormsg', "" + this.nativeElement.getAttribute('__validationId'));
|
|
1842
|
+
(_a = this.nativeElement.querySelector('input')) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-invalid', "" + this.ngform.controls[this._fieldName].invalid);
|
|
1843
|
+
(_b = this.nativeElement.querySelector('input')) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-describedby', "" + this.nativeElement.getAttribute('__validationId'));
|
|
1844
|
+
}
|
|
1845
|
+
else {
|
|
1846
|
+
this.nativeElement.removeAttribute('__errormsg');
|
|
1847
|
+
(_c = this.nativeElement.querySelector('input')) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-invalid');
|
|
1848
|
+
(_d = this.nativeElement.querySelector('input')) === null || _d === void 0 ? void 0 : _d.removeAttribute('aria-describedby');
|
|
1849
|
+
}
|
|
1835
1850
|
this._activeField = false;
|
|
1836
1851
|
this._triggeredByUser = false;
|
|
1837
1852
|
this._clicktriggeredByUser = false;
|
|
@@ -2067,7 +2082,7 @@
|
|
|
2067
2082
|
};
|
|
2068
2083
|
// On field value change, propagate event to parent form
|
|
2069
2084
|
FormFieldDirective.prototype.onValueChange = function (val) {
|
|
2070
|
-
var _a, _b;
|
|
2085
|
+
var _a, _b, _c, _d;
|
|
2071
2086
|
if (!this.isDestroyed) {
|
|
2072
2087
|
var captionEl = $(this.nativeElement).find('.caption-floating');
|
|
2073
2088
|
if (captionEl.length > 0) {
|
|
@@ -2077,8 +2092,17 @@
|
|
|
2077
2092
|
var hasValue = ((core.isDefined(val) && val !== '' && val !== null) || captionEl.find('input').val()) || captionEl.find('input:-webkit-autofill').length;
|
|
2078
2093
|
this.app.notify('captionPositionAnimate', { displayVal: hasValue, nativeEl: captionEl, isSelectMultiple: this.formWidget && this.formWidget.multiple, isFocused: this._activeField });
|
|
2079
2094
|
}
|
|
2080
|
-
|
|
2081
|
-
(
|
|
2095
|
+
// Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes
|
|
2096
|
+
if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {
|
|
2097
|
+
this.nativeElement.setAttribute('__errormsg', "" + this.nativeElement.getAttribute('__validationId'));
|
|
2098
|
+
(_a = this.nativeElement.querySelector('input')) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-invalid', this._triggeredByUser && this.ngform.controls[this._fieldName].invalid ? 'true' : 'false');
|
|
2099
|
+
(_b = this.nativeElement.querySelector('input')) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-describedby', "" + this.nativeElement.getAttribute('__validationId'));
|
|
2100
|
+
}
|
|
2101
|
+
else {
|
|
2102
|
+
this.nativeElement.removeAttribute('__errormsg');
|
|
2103
|
+
(_c = this.nativeElement.querySelector('input')) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-invalid');
|
|
2104
|
+
(_d = this.nativeElement.querySelector('input')) === null || _d === void 0 ? void 0 : _d.removeAttribute('aria-describedby');
|
|
2105
|
+
}
|
|
2082
2106
|
this.form.onFieldValueChange(this, val);
|
|
2083
2107
|
this.notifyChanges();
|
|
2084
2108
|
// Do mark as touched, only incase when user has entered an input but not through the script. Hence added mousedown event check
|