@wavemaker/app-ng-runtime 11.8.0-next.24904 → 11.8.0-next.27301
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/bundles/index.umd.js +5 -5
- app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +2 -1
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +5 -5
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +6 -6
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +4 -3
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +203 -171
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +1 -1
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +12 -11
- app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
- app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
- app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +47 -41
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
- app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +4 -3
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +24 -21
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +12 -11
- app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +40 -14
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +6 -5
- app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
- app-ng-runtime/components/base/fesm2022/index.mjs +206 -173
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/base/utils/data-utils.d.ts +0 -1
- app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
- app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +4 -3
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +6 -5
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +7 -6
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +13 -13
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +5 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +6 -5
- app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +10 -9
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +15 -10
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +14 -8
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +13 -7
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
- app-ng-runtime/components/basic/search/bundles/index.umd.js +67 -65
- app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
- app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
- app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +31 -30
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +66 -63
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +9 -9
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +7 -6
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +6 -5
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +72 -63
- app-ng-runtime/components/chart/chart.component.d.ts +1 -1
- app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +58 -48
- app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
- app-ng-runtime/components/chart/fesm2022/index.mjs +69 -59
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +16 -16
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +14 -13
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +13 -12
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +5 -5
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +3 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/panel.component.d.ts +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +17 -17
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +15 -14
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +14 -13
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +75 -75
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +10 -9
- app-ng-runtime/components/data/form/esm2022/form.component.mjs +54 -53
- app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +11 -10
- app-ng-runtime/components/data/form/fesm2022/index.mjs +77 -76
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form.component.d.ts +2 -2
- app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
- app-ng-runtime/components/data/list/bundles/index.umd.js +692 -687
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +1 -1
- app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +687 -682
- app-ng-runtime/components/data/list/fesm2022/index.mjs +690 -684
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/list.component.d.ts +53 -53
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +1 -1
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +14 -14
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +12 -11
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +11 -10
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +175 -172
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +19 -18
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +7 -6
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +53 -55
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +98 -91
- app-ng-runtime/components/data/table/fesm2022/index.mjs +172 -168
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +6 -6
- app-ng-runtime/components/data/table/table.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
- app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +1 -1
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +33 -31
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +31 -28
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +30 -27
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +29 -28
- app-ng-runtime/components/input/chips/chips.component.d.ts +1 -1
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +27 -25
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +26 -24
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
- app-ng-runtime/components/input/default/bundles/index.umd.js +75 -62
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +14 -8
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +3 -2
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +6 -4
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +29 -23
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +4 -3
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +4 -3
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -3
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +20 -18
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
- app-ng-runtime/components/input/default/fesm2022/index.mjs +75 -62
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +53 -51
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +34 -31
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +5 -4
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -6
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +1 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +6 -5
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +48 -45
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +15 -15
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +13 -12
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +12 -11
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/bundles/index.umd.js +12 -12
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +10 -9
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +9 -8
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +1 -1
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +23 -22
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +3 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +6 -5
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +10 -8
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +20 -18
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +1 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/bundles/index.umd.js +6 -6
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +3 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +119 -130
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +3 -2
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +3 -2
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +7 -6
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +17 -16
- app-ng-runtime/core/esm2022/services/utils.service.mjs +3 -2
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +3 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/expression-parser.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
- app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
- app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
- app-ng-runtime/core/fesm2022/index.mjs +117 -123
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/services/pagination.service.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +5 -9
- app-ng-runtime/http/bundles/index.umd.js +7 -7
- app-ng-runtime/http/esm2022/http.service.mjs +5 -4
- app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
- app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
- app-ng-runtime/http/fesm2022/index.mjs +4 -3
- app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +24 -20
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +5 -4
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +12 -8
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +5 -3
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +3 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +5 -4
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +21 -16
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +7 -7
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +4 -3
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -3
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +8 -8
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +4 -3
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +3 -2
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +3 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +9 -9
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +7 -6
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +6 -5
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/bundles/index.umd.js +25 -25
- app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +3 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +4 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +6 -5
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +3 -2
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +9 -8
- app-ng-runtime/mobile/core/fesm2022/index.mjs +22 -21
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
- app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
- app-ng-runtime/mobile/offline/bundles/index.umd.js +161 -144
- app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +7 -6
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +37 -35
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +54 -45
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +5 -4
- app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
- app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
- app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
- app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
- app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +156 -138
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +11 -8
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +3 -2
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +6 -2
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +4 -3
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +8 -4
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +3 -3
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/bundles/index.umd.js +23 -16
- app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +2 -2
- app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
- app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
- app-ng-runtime/mobile/variables/fesm2022/index.mjs +19 -11
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/bundles/index.umd.js +12 -12
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +4 -3
- app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
- app-ng-runtime/oAuth/fesm2022/index.mjs +9 -8
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +121 -120
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +14 -13
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +13 -12
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +15 -14
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +14 -13
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +6 -5
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -10
- app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +1 -1
- app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +3 -2
- app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +1 -1
- app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +17 -14
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +7 -6
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +3 -2
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +12 -10
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +8 -7
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +3 -2
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +7 -6
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +6 -5
- app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +6 -7
- app-ng-runtime/runtime/base/fesm2022/index.mjs +119 -117
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -3
- app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +4 -3
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
- app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
- app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
- app-ng-runtime/security/bundles/index.umd.js +14 -14
- app-ng-runtime/security/esm2022/security.service.mjs +12 -11
- app-ng-runtime/security/fesm2022/index.mjs +11 -10
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/security/security.service.d.ts +1 -1
- app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
- app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
- app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +155 -145
- app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
- app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
- app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
- app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
- app-ng-runtime/variables/esm2022/service/variables.service.mjs +7 -6
- app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
- app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
- app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
- app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
- app-ng-runtime/variables/fesm2022/index.mjs +169 -158
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
|
@@ -3,9 +3,10 @@ import { InjectionToken, forwardRef, ElementRef, inject, ViewContainerRef, Injec
|
|
|
3
3
|
import * as i1$1 from '@angular/common';
|
|
4
4
|
import { Location, CommonModule } from '@angular/common';
|
|
5
5
|
import * as i1 from '@wm/core';
|
|
6
|
-
import { FormWidgetType, checkIsCustomPipeExpression, $parseExpr, isValidWebURL, encodeUrl, stringStartsWith, prettifyLabel, deHyphenate, initCaps, getClonedObject, setCSS, isDefined, IDGenerator, toBoolean, isChangeFromWatch, $unwatch, resetChangeFromWatch, isObject, toDimension, $appDigest, removeClass, addClass, setCSSFromObj, App, findParent, setAttr, isMobileApp, switchClass, removeAttr, $parseEvent, $invokeWatchers, $watch, transformFileURI, ComponentType, noop as noop$1, isLargeTabletLandscape, isLargeTabletPortrait, isKitkatDevice, debounce, hasOffsetStr, AbstractI18nService, CURRENCY_INFO, isMobile, AbstractDialogService, DataSource, processFilterExpBindNode, MatchMode, isEqualWithFields, getFormattedDate, isAndroid, isNumberType, DataType, findValueOf, validateAccessRoles, VALIDATOR, isIos } from '@wm/core';
|
|
6
|
+
import { FormWidgetType, checkIsCustomPipeExpression, $parseExpr, isValidWebURL, encodeUrl, stringStartsWith, prettifyLabel, deHyphenate, initCaps, getClonedObject, setCSS, isDefined, IDGenerator, toBoolean, isChangeFromWatch, $unwatch, resetChangeFromWatch, isObject as isObject$1, toDimension, $appDigest, removeClass, addClass, setCSSFromObj, App, findParent, setAttr, isMobileApp, switchClass, removeAttr, $parseEvent, $invokeWatchers, $watch, transformFileURI, ComponentType, noop as noop$1, isLargeTabletLandscape, isLargeTabletPortrait, isKitkatDevice, debounce as debounce$1, hasOffsetStr, AbstractI18nService, CURRENCY_INFO, isMobile, AbstractDialogService, DataSource, processFilterExpBindNode, MatchMode, isEqualWithFields, getFormattedDate, isAndroid, isNumberType, DataType, findValueOf, validateAccessRoles, VALIDATOR, isIos } from '@wm/core';
|
|
7
7
|
import { SecurityModule, SecurityService } from '@wm/security';
|
|
8
|
-
import { createFocusTrap } from '@wavemaker/focus-trap
|
|
8
|
+
import { createFocusTrap } from '@wavemaker/focus-trap';
|
|
9
|
+
import { isNull, get, forEach, join, union, isArray, isObject, includes, split, isString, assignWith, startsWith, isFunction, extend, camelCase, map, pickBy, assign, debounce, isDate, isUndefined, filter as filter$1, isEmpty, keys, head, replace, each, intersection, cloneDeep, orderBy, trim, isEqual, uniqWith, uniqBy, sortBy, groupBy, toLower, values, first, omitBy, toUpper, find, concat } from 'lodash-es';
|
|
9
10
|
import * as i1$2 from '@angular/platform-browser';
|
|
10
11
|
import { EventManager } from '@angular/platform-browser';
|
|
11
12
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
@@ -88,7 +89,7 @@ const getObjValueByKey = (obj, strKey) => {
|
|
|
88
89
|
/* convert indexes to properties, so as to work for even 'key1[0].child1'*/
|
|
89
90
|
strKey.replace(/\[(\w+)\]/g, '.$1').split('.').forEach(key => {
|
|
90
91
|
// If obj is null, then assign val to null.
|
|
91
|
-
val = (val && val[key]) || (
|
|
92
|
+
val = (val && val[key]) || (isNull(obj) ? obj : obj[key]);
|
|
92
93
|
});
|
|
93
94
|
return val;
|
|
94
95
|
}
|
|
@@ -123,7 +124,7 @@ const getEvaluatedData = (dataObj, options, context) => {
|
|
|
123
124
|
// Handling field name with special charecters
|
|
124
125
|
// Ex: field = "f name"
|
|
125
126
|
if (!bindExpr && !expr) {
|
|
126
|
-
return
|
|
127
|
+
return get(dataObj, field);
|
|
127
128
|
}
|
|
128
129
|
return $parseExpr(expressionValue)(context, Object.assign({}, dataObj, { __1: dataObj }));
|
|
129
130
|
};
|
|
@@ -160,12 +161,12 @@ const hasLinkToCurrentPage = (nodes, routeUrl) => {
|
|
|
160
161
|
const getOrderByExpr = pageableObj => {
|
|
161
162
|
pageableObj = pageableObj || [];
|
|
162
163
|
const expressions = [], KEY_VAL_SEPARATOR = ' ', FIELD_SEPARATOR = ',';
|
|
163
|
-
|
|
164
|
+
forEach(pageableObj, obj => {
|
|
164
165
|
if (obj.direction) {
|
|
165
166
|
expressions.push(obj.property + KEY_VAL_SEPARATOR + obj.direction.toLowerCase());
|
|
166
167
|
}
|
|
167
168
|
});
|
|
168
|
-
return
|
|
169
|
+
return join(expressions, FIELD_SEPARATOR);
|
|
169
170
|
};
|
|
170
171
|
const isDataSetWidget = widget => {
|
|
171
172
|
return DATASET_WIDGETS.has(widget);
|
|
@@ -255,13 +256,13 @@ const getMatchModeTypesMap = (multiMode) => {
|
|
|
255
256
|
modes.string.push('in', 'notin');
|
|
256
257
|
modes.character.push('in', 'notin');
|
|
257
258
|
}
|
|
258
|
-
|
|
259
|
-
|
|
259
|
+
forEach(typesMap, (types, primType) => {
|
|
260
|
+
forEach(types, type => {
|
|
260
261
|
matchModeTypesMap[type] = modes[primType];
|
|
261
262
|
});
|
|
262
263
|
});
|
|
263
264
|
// this is used in filter criteria when the user types the column name manually and where we dont know the type of the column
|
|
264
|
-
matchModeTypesMap['default'] =
|
|
265
|
+
matchModeTypesMap['default'] = union(modes['number'], modes['string'], modes['character'], modes['date'], modes['date']);
|
|
265
266
|
return matchModeTypesMap;
|
|
266
267
|
};
|
|
267
268
|
const getMatchModeMsgs = (appLocale) => {
|
|
@@ -293,14 +294,14 @@ const getMatchModeMsgs = (appLocale) => {
|
|
|
293
294
|
// Returns array of classes that are evaluated true for given object or array
|
|
294
295
|
const getClassesArray = classVal => {
|
|
295
296
|
let classes = [];
|
|
296
|
-
if (
|
|
297
|
+
if (isArray(classVal)) {
|
|
297
298
|
classVal.forEach(v => {
|
|
298
299
|
classes = classes.concat(getClassesArray(v));
|
|
299
300
|
});
|
|
300
301
|
return classes;
|
|
301
302
|
}
|
|
302
|
-
if (
|
|
303
|
-
|
|
303
|
+
if (isObject(classVal)) {
|
|
304
|
+
forEach(classVal, (val, key) => {
|
|
304
305
|
if (val) {
|
|
305
306
|
classes = classes.concat(key.split(' '));
|
|
306
307
|
}
|
|
@@ -314,9 +315,9 @@ const getConditionalClasses = (nv, ov) => {
|
|
|
314
315
|
// if the conditional class property has already toAdd and toRemove arrays then take that otherwise build those arrays
|
|
315
316
|
const classToAdd = nv.toAdd || nv;
|
|
316
317
|
const classToRemove = nv.toRemove || ov;
|
|
317
|
-
if (
|
|
318
|
-
toAdd =
|
|
319
|
-
toRemove = classToRemove ? (
|
|
318
|
+
if (isObject(nv)) {
|
|
319
|
+
toAdd = isArray(classToAdd) ? classToAdd : getClassesArray(classToAdd || []);
|
|
320
|
+
toRemove = classToRemove ? (isArray(classToRemove) ? classToRemove : getClassesArray(classToRemove)) : [];
|
|
320
321
|
}
|
|
321
322
|
else {
|
|
322
323
|
toAdd = classToAdd ? [classToAdd] : [];
|
|
@@ -331,9 +332,9 @@ const pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {
|
|
|
331
332
|
if (!options) {
|
|
332
333
|
options = {};
|
|
333
334
|
}
|
|
334
|
-
|
|
335
|
-
if (
|
|
336
|
-
relatedInfo =
|
|
335
|
+
forEach(dataObject, (value, title) => {
|
|
336
|
+
if (includes(title, '.')) {
|
|
337
|
+
relatedInfo = split(title, '.');
|
|
337
338
|
relatedTable = relatedInfo[0];
|
|
338
339
|
relatedField = relatedInfo[1];
|
|
339
340
|
isRelated = true;
|
|
@@ -342,7 +343,7 @@ const pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {
|
|
|
342
343
|
modifiedTitle = title;
|
|
343
344
|
}
|
|
344
345
|
else {
|
|
345
|
-
if (
|
|
346
|
+
if (isString(title)) {
|
|
346
347
|
modifiedTitle = prettifyLabel(title);
|
|
347
348
|
modifiedTitle = deHyphenate(modifiedTitle);
|
|
348
349
|
modifiedTitle = namePrefix ? initCaps(namePrefix) + ' ' + modifiedTitle : modifiedTitle;
|
|
@@ -354,7 +355,7 @@ const pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {
|
|
|
354
355
|
title = namePrefix ? namePrefix + '.' + title : title;
|
|
355
356
|
if (isRelated) {
|
|
356
357
|
// For related columns, shorten the title to last two words
|
|
357
|
-
fieldName =
|
|
358
|
+
fieldName = split(modifiedTitle, ' ');
|
|
358
359
|
fieldName = fieldName.length > 1 ? fieldName[fieldName.length - 2] + ' ' + fieldName[fieldName.length - 1] : fieldName[0];
|
|
359
360
|
}
|
|
360
361
|
else {
|
|
@@ -363,7 +364,7 @@ const pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {
|
|
|
363
364
|
const defObj = options.setBindingField ? { 'displayName': fieldName, 'field': title, 'relatedTable': relatedTable, 'relatedField': relatedField || modifiedTitle }
|
|
364
365
|
: { 'displayName': fieldName, 'relatedTable': relatedTable, 'relatedField': relatedField || modifiedTitle };
|
|
365
366
|
/*if field is a leaf node, push it in the columnDefs*/
|
|
366
|
-
if (!
|
|
367
|
+
if (!isObject(value) || (isArray(value) && !value[0])) {
|
|
367
368
|
/*if the column counter has reached upperBound return*/
|
|
368
369
|
if (options.upperBound && options.columnCount === options.upperBound) {
|
|
369
370
|
return;
|
|
@@ -379,7 +380,7 @@ const pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {
|
|
|
379
380
|
columnDefObj.objects.push(defObj);
|
|
380
381
|
}
|
|
381
382
|
/* if field is an array node, process its first child */
|
|
382
|
-
if (
|
|
383
|
+
if (isArray(value) && value[0]) {
|
|
383
384
|
pushFieldDef(value[0], columnDefObj, title + '[0]', options);
|
|
384
385
|
}
|
|
385
386
|
else {
|
|
@@ -390,17 +391,17 @@ const pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {
|
|
|
390
391
|
};
|
|
391
392
|
const getMetaDataFromData = (data) => {
|
|
392
393
|
let dataObject;
|
|
393
|
-
if (
|
|
394
|
-
if (
|
|
394
|
+
if (isArray(data)) {
|
|
395
|
+
if (isObject(data[0])) {
|
|
395
396
|
dataObject = getClonedObject(data[0]);
|
|
396
397
|
/*Loop over the object to find out any null values. If any null values are present in the first row, check and assign the values from other row.
|
|
397
398
|
* As column generation is dependent on data, for related fields if first row value is null, columns are not generated.
|
|
398
399
|
* To prevent this, check the data in other rows and generate the columns. New keys from others rows are also added*/
|
|
399
|
-
|
|
400
|
+
forEach(data, (row, index) => {
|
|
400
401
|
if ((index + 1) >= 10) { // Limit the data search to first 10 records
|
|
401
402
|
return false;
|
|
402
403
|
}
|
|
403
|
-
|
|
404
|
+
assignWith(dataObject, row, (objValue, srcValue) => {
|
|
404
405
|
return (objValue === null || objValue === undefined) ? srcValue : objValue;
|
|
405
406
|
});
|
|
406
407
|
});
|
|
@@ -789,11 +790,11 @@ const globalPropertyChangeHandler = (component, key, nv) => {
|
|
|
789
790
|
}
|
|
790
791
|
}
|
|
791
792
|
// Set the value in the component and trigger appDigest when there is a change in the value
|
|
792
|
-
if (nv !== ov || isObject(nv) || isObject(ov)) {
|
|
793
|
+
if (nv !== ov || isObject$1(nv) || isObject$1(ov)) {
|
|
793
794
|
if (isDimensionProp(key)) {
|
|
794
795
|
nv = toDimension(nv);
|
|
795
796
|
}
|
|
796
|
-
else if (
|
|
797
|
+
else if (startsWith(nv, 'resources/')) {
|
|
797
798
|
const ref = component;
|
|
798
799
|
if (ref._parentPrefab_ === undefined) {
|
|
799
800
|
ref._parentPrefab_ = component.$element.parent().closest('[prefabname][prefabname!="__self__"]').attr('prefabname') || '';
|
|
@@ -834,7 +835,7 @@ const proxyHandler = {
|
|
|
834
835
|
},
|
|
835
836
|
get: (target, key) => {
|
|
836
837
|
const v = target[key];
|
|
837
|
-
if (
|
|
838
|
+
if (isFunction(v)) { // bind the proper context for the methods
|
|
838
839
|
return v.bind(target);
|
|
839
840
|
}
|
|
840
841
|
return v;
|
|
@@ -863,7 +864,7 @@ class WidgetProxyProvider {
|
|
|
863
864
|
// bind proper context for the methods
|
|
864
865
|
invokeLater(() => {
|
|
865
866
|
for (const key in instance) {
|
|
866
|
-
if (
|
|
867
|
+
if (isFunction(instance[key]) && key !== 'constructor' && key !== 'super' && !startsWith(key, 'ng')) {
|
|
867
868
|
instance[key] = instance[key].bind(instance);
|
|
868
869
|
}
|
|
869
870
|
}
|
|
@@ -894,21 +895,21 @@ class WidgetProxyProvider {
|
|
|
894
895
|
// Gets list of classes to add and remove and applies on the $el
|
|
895
896
|
const updateClasses = (toAdd, toRemove, el) => {
|
|
896
897
|
if (toRemove && toRemove.length) {
|
|
897
|
-
removeClass(el,
|
|
898
|
+
removeClass(el, join(toRemove, ' '));
|
|
898
899
|
}
|
|
899
900
|
if (toAdd && toAdd.length) {
|
|
900
|
-
addClass(el,
|
|
901
|
+
addClass(el, join(toAdd, ' '));
|
|
901
902
|
}
|
|
902
903
|
};
|
|
903
904
|
// To add and remove styles on the $el
|
|
904
905
|
const updateStyles = (nv, ov, el) => {
|
|
905
|
-
if (ov &&
|
|
906
|
+
if (ov && isObject(ov)) {
|
|
906
907
|
const keys = Object.keys(ov || {});
|
|
907
908
|
keys.forEach(function (key) {
|
|
908
909
|
setCSS(el, key, '');
|
|
909
910
|
});
|
|
910
911
|
}
|
|
911
|
-
if (nv &&
|
|
912
|
+
if (nv && isObject(nv)) {
|
|
912
913
|
setCSSFromObj(el, nv);
|
|
913
914
|
}
|
|
914
915
|
};
|
|
@@ -1020,7 +1021,7 @@ class BaseComponent {
|
|
|
1020
1021
|
});
|
|
1021
1022
|
}
|
|
1022
1023
|
if (explicitContext) {
|
|
1023
|
-
|
|
1024
|
+
extend(this.context, explicitContext);
|
|
1024
1025
|
}
|
|
1025
1026
|
}
|
|
1026
1027
|
getNativeElement() {
|
|
@@ -1094,8 +1095,8 @@ class BaseComponent {
|
|
|
1094
1095
|
}
|
|
1095
1096
|
if (parentContexts) {
|
|
1096
1097
|
let parentContextObj = {};
|
|
1097
|
-
if (
|
|
1098
|
-
|
|
1098
|
+
if (isArray(parentContexts)) {
|
|
1099
|
+
forEach(parentContexts, (contextObj) => {
|
|
1099
1100
|
Object.assign(parentContextObj, contextObj);
|
|
1100
1101
|
});
|
|
1101
1102
|
}
|
|
@@ -1253,7 +1254,7 @@ class BaseComponent {
|
|
|
1253
1254
|
this.eventHandlers.set(this.getMappedEventName(eventName), { callback: eventCallback, locals });
|
|
1254
1255
|
// prepend eventName with on and convert it to camelcase.
|
|
1255
1256
|
// eg, "click" ---> onClick
|
|
1256
|
-
const onEventName =
|
|
1257
|
+
const onEventName = camelCase(`on-${eventName}`);
|
|
1257
1258
|
// save the eventCallback in widgetScope.
|
|
1258
1259
|
this[onEventName] = eventCallback;
|
|
1259
1260
|
// events needs to be setup after viewInit
|
|
@@ -1335,7 +1336,7 @@ class BaseComponent {
|
|
|
1335
1336
|
if (_tNodeAttrs === null) {
|
|
1336
1337
|
return actualAttrs.sort();
|
|
1337
1338
|
}
|
|
1338
|
-
|
|
1339
|
+
forEach(_tNodeAttrs, (attr, i) => {
|
|
1339
1340
|
if (typeof attr === 'number') {
|
|
1340
1341
|
return false;
|
|
1341
1342
|
}
|
|
@@ -1360,7 +1361,7 @@ class BaseComponent {
|
|
|
1360
1361
|
* Process the attributes
|
|
1361
1362
|
*/
|
|
1362
1363
|
processAttrs() {
|
|
1363
|
-
|
|
1364
|
+
map(this.getAttributes(), (attrName) => {
|
|
1364
1365
|
let attrValue = this.nativeElement.attributes[attrName].value;
|
|
1365
1366
|
this.$attrs.set(attrName, attrValue);
|
|
1366
1367
|
this.processAttr(attrName, attrValue);
|
|
@@ -1549,9 +1550,9 @@ class BaseContainerComponent extends StylableComponent {
|
|
|
1549
1550
|
super(inj, WIDGET_CONFIG, explicitContext);
|
|
1550
1551
|
}
|
|
1551
1552
|
updateRedrawableComponents(widgets) {
|
|
1552
|
-
|
|
1553
|
+
pickBy(widgets, widget => {
|
|
1553
1554
|
// check for redrawable widget and whether it is already exist in reDrawableComponents query list or not
|
|
1554
|
-
if (widget && widget.nativeElement && widget.nativeElement.hasAttribute('redrawable') && !
|
|
1555
|
+
if (widget && widget.nativeElement && widget.nativeElement.hasAttribute('redrawable') && !includes(this.reDrawableComponents._results, widget)) {
|
|
1555
1556
|
this.reDrawableComponents._results.push(widget);
|
|
1556
1557
|
}
|
|
1557
1558
|
if (widget && widget.Widgets) {
|
|
@@ -1892,7 +1893,7 @@ class PartialDirective extends StylableComponent {
|
|
|
1892
1893
|
this.registerDestroyListener(this.viewport.subscribe("orientationchange" /* ViewportEvent.ORIENTATION_CHANGE */, data => this.callback('orientationchange', data)));
|
|
1893
1894
|
}
|
|
1894
1895
|
callback(eventName, locals) {
|
|
1895
|
-
locals =
|
|
1896
|
+
locals = assign({ widget: this }, locals);
|
|
1896
1897
|
this.invokeEventCallback(eventName, locals);
|
|
1897
1898
|
}
|
|
1898
1899
|
ngOnAttach() {
|
|
@@ -1937,7 +1938,7 @@ class PartialParamHandlerDirective {
|
|
|
1937
1938
|
if (!value && bindExpr) {
|
|
1938
1939
|
this.widgetRef.registerDestroyListener(
|
|
1939
1940
|
//[Todo-CSP]: expr fn should be generated be default
|
|
1940
|
-
$watch(bindExpr, this.widgetRef.getViewParent(),
|
|
1941
|
+
$watch(bindExpr, this.widgetRef.getViewParent(), get(this.widgetRef, 'context'), nv => {
|
|
1941
1942
|
this.widgetRef.partialParams[name] = nv;
|
|
1942
1943
|
// notify the partial container of the param changes
|
|
1943
1944
|
this.widgetRef.params$.next();
|
|
@@ -2037,7 +2038,7 @@ class PartialContainerDirective {
|
|
|
2037
2038
|
this.resolver = resolver;
|
|
2038
2039
|
this.partialRefProvider = partialRefProvider;
|
|
2039
2040
|
this.contentInitialized = false;
|
|
2040
|
-
this.renderPartial =
|
|
2041
|
+
this.renderPartial = debounce(this._renderPartial, 200);
|
|
2041
2042
|
componentInstance.registerPropertyChangeListener((key, nv, ov) => {
|
|
2042
2043
|
if (key === 'content') {
|
|
2043
2044
|
if (componentInstance.$lazyLoad) {
|
|
@@ -2228,8 +2229,8 @@ class SmoothScrollDirective {
|
|
|
2228
2229
|
let iScroll = new IScroll(el, scrollOptions);
|
|
2229
2230
|
if ($events) {
|
|
2230
2231
|
// map all events on previous iscroll to the newly created iscroll.
|
|
2231
|
-
|
|
2232
|
-
|
|
2232
|
+
forEach($events, (listeners, key) => {
|
|
2233
|
+
forEach(listeners, l => {
|
|
2233
2234
|
iScroll.on(key, l);
|
|
2234
2235
|
});
|
|
2235
2236
|
});
|
|
@@ -2258,7 +2259,7 @@ class SmoothScrollDirective {
|
|
|
2258
2259
|
}
|
|
2259
2260
|
};
|
|
2260
2261
|
this._$el[0].iscroll = iScroll;
|
|
2261
|
-
|
|
2262
|
+
forEach(this.pendingIscrolls, (_el, index) => {
|
|
2262
2263
|
if (_el.isSameNode(this._$el[0])) {
|
|
2263
2264
|
this.app.notify('iscroll-update', { el: _el });
|
|
2264
2265
|
this.pendingIscrolls.splice(index, 1);
|
|
@@ -2296,7 +2297,7 @@ class SmoothScrollDirective {
|
|
|
2296
2297
|
}
|
|
2297
2298
|
// Check for scrollable content and if smoothscroll-container div is already added.
|
|
2298
2299
|
if (iScroll.wrapper
|
|
2299
|
-
&& !
|
|
2300
|
+
&& !includes(iScroll.wrapper.children[0].classList, 'smoothscroll-container')
|
|
2300
2301
|
&& iScroll.wrapper.scrollHeight > iScroll.wrapper.clientHeight) {
|
|
2301
2302
|
const cloneEvents = iScroll._events;
|
|
2302
2303
|
const prevActiveEl = document.activeElement;
|
|
@@ -2356,7 +2357,7 @@ const refreshIscrolls = function (iScroll) {
|
|
|
2356
2357
|
}
|
|
2357
2358
|
};
|
|
2358
2359
|
// on window resize, recalculate the iscroll position and refresh scrollers.
|
|
2359
|
-
window.addEventListener('resize', debounce(refreshIscrolls, 200));
|
|
2360
|
+
window.addEventListener('resize', debounce$1(refreshIscrolls, 200));
|
|
2360
2361
|
|
|
2361
2362
|
class TextContentDirective {
|
|
2362
2363
|
set textContent(nv) {
|
|
@@ -2386,7 +2387,7 @@ class WmPipe {
|
|
|
2386
2387
|
this.pipeName = pipeName;
|
|
2387
2388
|
this.customPipeManager = customPipeManager;
|
|
2388
2389
|
this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;
|
|
2389
|
-
this.isCustomPipe = this.pipeRef &&
|
|
2390
|
+
this.isCustomPipe = this.pipeRef && isFunction(this.pipeRef.formatter);
|
|
2390
2391
|
}
|
|
2391
2392
|
customFormatter(data, args) {
|
|
2392
2393
|
try {
|
|
@@ -2401,7 +2402,7 @@ class WmPipe {
|
|
|
2401
2402
|
const getEpochValue = data => {
|
|
2402
2403
|
let epoch;
|
|
2403
2404
|
// For data in form of string number ('123'), convert to number (123). And don't parse date objects.
|
|
2404
|
-
if (!
|
|
2405
|
+
if (!isDate(data) && !isNaN(data)) {
|
|
2405
2406
|
data = parseInt(data, 10);
|
|
2406
2407
|
}
|
|
2407
2408
|
// get the timestamp value. If data is time string, append date string to the time value
|
|
@@ -2486,7 +2487,7 @@ class ToNumberPipe {
|
|
|
2486
2487
|
if (fracSize && !String(fracSize).match(/^(\d+)?\.((\d+)(-(\d+))?)?$/)) {
|
|
2487
2488
|
fracSize = '1.' + fracSize + '-' + fracSize;
|
|
2488
2489
|
}
|
|
2489
|
-
if (!
|
|
2490
|
+
if (!isNaN(+data)) {
|
|
2490
2491
|
const locale = this.i18nService && this.i18nService.getwidgetLocale() ? this.i18nService.getwidgetLocale() : undefined;
|
|
2491
2492
|
const formattedLocale = locale ? locale['number'] : null;
|
|
2492
2493
|
return this.decimalPipe.transform(data, fracSize, formattedLocale);
|
|
@@ -2512,7 +2513,7 @@ class ToCurrencyPipe {
|
|
|
2512
2513
|
transform(data, currencySymbol, fracSize) {
|
|
2513
2514
|
const _currencySymbol = (CURRENCY_INFO[currencySymbol] || {}).symbol || currencySymbol || '';
|
|
2514
2515
|
let _val = new ToNumberPipe(this.decimalPipe, this.i18nService).transform(data, fracSize);
|
|
2515
|
-
const isNegativeNumber =
|
|
2516
|
+
const isNegativeNumber = startsWith(_val, '-');
|
|
2516
2517
|
if (isNegativeNumber) {
|
|
2517
2518
|
_val = _val.replace('-', '');
|
|
2518
2519
|
}
|
|
@@ -2536,7 +2537,7 @@ class ToCurrencyPipe {
|
|
|
2536
2537
|
}] }], null); })();
|
|
2537
2538
|
class PrefixPipe {
|
|
2538
2539
|
transform(data, padding) {
|
|
2539
|
-
return (
|
|
2540
|
+
return (isUndefined(data) || data === null || data === '') ? data : ((padding || '') + data);
|
|
2540
2541
|
}
|
|
2541
2542
|
static { this.ɵfac = function PrefixPipe_Factory(t) { return new (t || PrefixPipe)(); }; }
|
|
2542
2543
|
static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "prefix", type: PrefixPipe, pure: true }); }
|
|
@@ -2549,7 +2550,7 @@ class PrefixPipe {
|
|
|
2549
2550
|
}], null, null); })();
|
|
2550
2551
|
class SuffixPipe {
|
|
2551
2552
|
transform(data, padding) {
|
|
2552
|
-
return (
|
|
2553
|
+
return (isUndefined(data) || data === null || data === '') ? data : (data + (padding || ''));
|
|
2553
2554
|
}
|
|
2554
2555
|
static { this.ɵfac = function SuffixPipe_Factory(t) { return new (t || SuffixPipe)(); }; }
|
|
2555
2556
|
static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "suffix", type: SuffixPipe, pure: true }); }
|
|
@@ -2573,7 +2574,7 @@ class CustomPipe {
|
|
|
2573
2574
|
argumentArr.push(arguments[i]);
|
|
2574
2575
|
}
|
|
2575
2576
|
let pipeRef = this.custmeUserPipe.getCustomPipe(pipename);
|
|
2576
|
-
if (!pipeRef || !
|
|
2577
|
+
if (!pipeRef || !isFunction(pipeRef.formatter)) {
|
|
2577
2578
|
console.warn('formatter is not defined, please check the custom pipes documentation');
|
|
2578
2579
|
return data;
|
|
2579
2580
|
}
|
|
@@ -2641,12 +2642,12 @@ class FilterPipe {
|
|
|
2641
2642
|
return [];
|
|
2642
2643
|
}
|
|
2643
2644
|
// If object is passed as first paramter
|
|
2644
|
-
if (
|
|
2645
|
-
return
|
|
2645
|
+
if (isObject(field)) {
|
|
2646
|
+
return filter$1(data, field);
|
|
2646
2647
|
}
|
|
2647
2648
|
// If key value pair is provided
|
|
2648
|
-
return
|
|
2649
|
-
return
|
|
2649
|
+
return filter$1(data, item => {
|
|
2650
|
+
return includes(item[field], value);
|
|
2650
2651
|
});
|
|
2651
2652
|
}
|
|
2652
2653
|
static { this.ɵfac = function FilterPipe_Factory(t) { return new (t || FilterPipe)(); }; }
|
|
@@ -2979,7 +2980,7 @@ class DialogServiceImpl {
|
|
|
2979
2980
|
* closes all the opened dialogs
|
|
2980
2981
|
*/
|
|
2981
2982
|
closeAllDialogs() {
|
|
2982
|
-
|
|
2983
|
+
forEach(openedDialogs.reverse(), (dialog) => {
|
|
2983
2984
|
dialog.close();
|
|
2984
2985
|
});
|
|
2985
2986
|
}
|
|
@@ -3220,7 +3221,7 @@ const LIVE_CONSTANTS = {
|
|
|
3220
3221
|
};
|
|
3221
3222
|
// Returns true if widget is autocomplete or chips
|
|
3222
3223
|
function isSearchWidgetType(widget) {
|
|
3223
|
-
return
|
|
3224
|
+
return includes([FormWidgetType.AUTOCOMPLETE, FormWidgetType.TYPEAHEAD, FormWidgetType.CHIPS], widget);
|
|
3224
3225
|
}
|
|
3225
3226
|
function onSuccess(response, res, rej) {
|
|
3226
3227
|
if (response.error) {
|
|
@@ -3309,7 +3310,7 @@ function fetchRelatedFieldData(dataSource, formField, options) {
|
|
|
3309
3310
|
}
|
|
3310
3311
|
primaryKeys = dataSource.execute(DataSource.Operation.GET_RELATED_PRIMARY_KEYS, relatedField);
|
|
3311
3312
|
formField.datafield = datafield;
|
|
3312
|
-
formField._primaryKey =
|
|
3313
|
+
formField._primaryKey = isEmpty(primaryKeys) ? undefined : primaryKeys[0];
|
|
3313
3314
|
formField.compareby = primaryKeys && primaryKeys.join(',');
|
|
3314
3315
|
displayField = datafield === ALLFIELDS ? undefined : datafield;
|
|
3315
3316
|
formField.displayfield = displayField = (formField.displayfield || displayField || formField._primaryKey);
|
|
@@ -3328,12 +3329,12 @@ function fetchRelatedFieldData(dataSource, formField, options) {
|
|
|
3328
3329
|
dataSource.execute(DataSource.Operation.GET_RELATED_TABLE_DATA, {
|
|
3329
3330
|
relatedField,
|
|
3330
3331
|
pagesize: formField.limit,
|
|
3331
|
-
orderBy: formField.orderby ?
|
|
3332
|
+
orderBy: formField.orderby ? replace(formField.orderby, /:/g, ' ') : '',
|
|
3332
3333
|
filterFields: {},
|
|
3333
3334
|
filterExpr: formField.filterexpressions ? formField.filterexpressions : {}
|
|
3334
3335
|
}).then(response => {
|
|
3335
3336
|
formField.dataset = response.data;
|
|
3336
|
-
formField.displayfield = formField.displayfield ||
|
|
3337
|
+
formField.displayfield = formField.displayfield || head(keys(get(response, '[0]')));
|
|
3337
3338
|
if (formField.showPendingSpinner) {
|
|
3338
3339
|
formField.showPendingSpinner = false;
|
|
3339
3340
|
}
|
|
@@ -3348,8 +3349,8 @@ function fetchRelatedFieldData(dataSource, formField, options) {
|
|
|
3348
3349
|
* @param callbackFn - function to be called with the new replaced values if any in the filterexpressions object
|
|
3349
3350
|
*/
|
|
3350
3351
|
const interpolateBindExpressions = (context, filterexpressions, callbackFn) => {
|
|
3351
|
-
const debouncedFn = debounce(() => {
|
|
3352
|
-
if (
|
|
3352
|
+
const debouncedFn = debounce$1(() => {
|
|
3353
|
+
if (isFunction(callbackFn)) {
|
|
3353
3354
|
callbackFn(filterexpressions);
|
|
3354
3355
|
}
|
|
3355
3356
|
}, 300);
|
|
@@ -3358,8 +3359,8 @@ const interpolateBindExpressions = (context, filterexpressions, callbackFn) => {
|
|
|
3358
3359
|
* without this it will never be called. processFilterExpBindNode will be called only for the binded variable expressions.
|
|
3359
3360
|
*/
|
|
3360
3361
|
debouncedFn();
|
|
3361
|
-
const filterExpressions = filterexpressions ? (
|
|
3362
|
-
const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) :
|
|
3362
|
+
const filterExpressions = filterexpressions ? (isObject(filterexpressions) ? filterexpressions : JSON.parse(filterexpressions)) : {};
|
|
3363
|
+
const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : noop;
|
|
3363
3364
|
const filterSubscription = processFilterExpBindNode(context, filterExpressions).subscribe((response) => {
|
|
3364
3365
|
filterexpressions = JSON.stringify(response.filterExpressions);
|
|
3365
3366
|
debouncedFn();
|
|
@@ -3387,7 +3388,7 @@ const getDistinctFieldProperties = (dataSource, formField) => {
|
|
|
3387
3388
|
fieldColumn = formField['lookup-field'];
|
|
3388
3389
|
props.distinctField = fieldColumn;
|
|
3389
3390
|
props.aliasColumn = fieldColumn.replace('.', '$'); // For related fields, In response . is replaced by $
|
|
3390
|
-
props.filterExpr = formField.filterexpressions ? (
|
|
3391
|
+
props.filterExpr = formField.filterexpressions ? (isObject(formField.filterexpressions) ? formField.filterexpressions : JSON.parse(formField.filterexpressions)) : {};
|
|
3391
3392
|
}
|
|
3392
3393
|
else {
|
|
3393
3394
|
props.tableName = dataSource.execute(DataSource.Operation.GET_ENTITY_NAME);
|
|
@@ -3460,14 +3461,14 @@ function setFieldDataSet(formField, data, options) {
|
|
|
3460
3461
|
const emptySupportWidgets = [FormWidgetType.SELECT, FormWidgetType.RADIOSET];
|
|
3461
3462
|
const emptyOption = {};
|
|
3462
3463
|
const dataSet = [];
|
|
3463
|
-
if (options.isEnableEmptyFilter &&
|
|
3464
|
+
if (options.isEnableEmptyFilter && includes(emptySupportWidgets, formField[options.widget]) &&
|
|
3464
3465
|
!formField['is-range'] && !formField.multiple) {
|
|
3465
3466
|
// If empty option is selected, push an empty object in to dataSet
|
|
3466
3467
|
emptyOption[LIVE_CONSTANTS.LABEL_KEY] = LIVE_CONSTANTS.EMPTY_KEY;
|
|
3467
3468
|
emptyOption[LIVE_CONSTANTS.LABEL_VALUE] = options.EMPTY_VALUE || LIVE_CONSTANTS.EMPTY_VALUE;
|
|
3468
3469
|
dataSet.push(emptyOption);
|
|
3469
3470
|
}
|
|
3470
|
-
|
|
3471
|
+
each(data, key => {
|
|
3471
3472
|
const value = key[options.aliasColumn];
|
|
3472
3473
|
const option = {};
|
|
3473
3474
|
if (value !== null && value !== '') {
|
|
@@ -3495,7 +3496,7 @@ function setFieldDataSet(formField, data, options) {
|
|
|
3495
3496
|
*
|
|
3496
3497
|
*/
|
|
3497
3498
|
function fetchDistinctValues(dataSource, formFields, options) {
|
|
3498
|
-
if (
|
|
3499
|
+
if (isEmpty(formFields)) {
|
|
3499
3500
|
return;
|
|
3500
3501
|
}
|
|
3501
3502
|
formFields.forEach(formField => {
|
|
@@ -3607,7 +3608,7 @@ function getRangeMatchMode(minValue, maxValue) {
|
|
|
3607
3608
|
* @param {object} enableemptyfilter empty filter options
|
|
3608
3609
|
*/
|
|
3609
3610
|
function getEnableEmptyFilter(enableemptyfilter) {
|
|
3610
|
-
return enableemptyfilter &&
|
|
3611
|
+
return enableemptyfilter && intersection(enableemptyfilter.split(','), LIVE_CONSTANTS.NULL_EMPTY).length > 0;
|
|
3611
3612
|
}
|
|
3612
3613
|
/**
|
|
3613
3614
|
* @ngdoc function
|
|
@@ -3622,14 +3623,14 @@ function getEnableEmptyFilter(enableemptyfilter) {
|
|
|
3622
3623
|
*/
|
|
3623
3624
|
function getEmptyMatchMode(enableemptyfilter) {
|
|
3624
3625
|
let matchMode;
|
|
3625
|
-
const emptyFilterOptions =
|
|
3626
|
-
if (
|
|
3626
|
+
const emptyFilterOptions = split(enableemptyfilter, ',');
|
|
3627
|
+
if (intersection(emptyFilterOptions, LIVE_CONSTANTS.NULL_EMPTY).length === 2) {
|
|
3627
3628
|
matchMode = MatchMode.NULLOREMPTY;
|
|
3628
3629
|
}
|
|
3629
|
-
else if (
|
|
3630
|
+
else if (includes(emptyFilterOptions, LIVE_CONSTANTS.NULL)) {
|
|
3630
3631
|
matchMode = MatchMode.NULL;
|
|
3631
3632
|
}
|
|
3632
|
-
else if (
|
|
3633
|
+
else if (includes(emptyFilterOptions, LIVE_CONSTANTS.EMPTY)) {
|
|
3633
3634
|
matchMode = MatchMode.EMPTY;
|
|
3634
3635
|
}
|
|
3635
3636
|
return matchMode;
|
|
@@ -3645,13 +3646,13 @@ function getEmptyMatchMode(enableemptyfilter) {
|
|
|
3645
3646
|
* @returns {Array<any>}
|
|
3646
3647
|
*/
|
|
3647
3648
|
const createArrayFrom = (data) => {
|
|
3648
|
-
if (
|
|
3649
|
+
if (isUndefined(data) || isNull(data)) {
|
|
3649
3650
|
return [];
|
|
3650
3651
|
}
|
|
3651
|
-
if (
|
|
3652
|
+
if (isString(data)) {
|
|
3652
3653
|
data = data.split(',').map(Function.prototype.call, String.prototype.trim);
|
|
3653
3654
|
}
|
|
3654
|
-
if (!
|
|
3655
|
+
if (!isArray(data)) {
|
|
3655
3656
|
data = [data];
|
|
3656
3657
|
}
|
|
3657
3658
|
return data;
|
|
@@ -3671,13 +3672,13 @@ const createArrayFrom = (data) => {
|
|
|
3671
3672
|
*/
|
|
3672
3673
|
function applyFilterOnField(dataSource, filterDef, formFields, newVal, options = {}) {
|
|
3673
3674
|
const fieldName = filterDef.field || filterDef.key;
|
|
3674
|
-
const filterOnFields =
|
|
3675
|
+
const filterOnFields = filter$1(formFields, { 'filter-on': fieldName });
|
|
3675
3676
|
newVal = filterDef['is-range'] ? getRangeFieldValue(filterDef.minValue, filterDef.maxValue) : (isDefined(newVal) ? newVal : filterDef.value);
|
|
3676
|
-
if (!dataSource || (options.isFirst && (
|
|
3677
|
+
if (!dataSource || (options.isFirst && (isUndefined(newVal) || newVal === ''))) {
|
|
3677
3678
|
return;
|
|
3678
3679
|
}
|
|
3679
3680
|
// Loop over the fields for which the current field is filter on field
|
|
3680
|
-
|
|
3681
|
+
forEach(filterOnFields, filterField => {
|
|
3681
3682
|
const filterKey = filterField.field || filterField.key;
|
|
3682
3683
|
const lookUpField = filterDef['lookup-field'] || filterDef._primaryKey;
|
|
3683
3684
|
const filterWidget = filterField['edit-widget-type'] || filterField.widgettype;
|
|
@@ -3703,7 +3704,7 @@ function applyFilterOnField(dataSource, filterDef, formFields, newVal, options =
|
|
|
3703
3704
|
else {
|
|
3704
3705
|
matchMode = MatchMode.EQUALS;
|
|
3705
3706
|
}
|
|
3706
|
-
filterVal = (
|
|
3707
|
+
filterVal = (isObject(newVal) && !isArray(newVal)) ? newVal[lookUpField] : newVal;
|
|
3707
3708
|
filterFields[filterOn] = {
|
|
3708
3709
|
'value': filterVal,
|
|
3709
3710
|
'matchMode': matchMode
|
|
@@ -3738,9 +3739,9 @@ function transformData(dataObject, variableName) {
|
|
|
3738
3739
|
// data sanity testing
|
|
3739
3740
|
dataObject = dataObject || [];
|
|
3740
3741
|
// if the dataObject is not an array make it an array
|
|
3741
|
-
if (!
|
|
3742
|
+
if (!isArray(dataObject)) {
|
|
3742
3743
|
// if the data returned is of type string, make it an object inside an array
|
|
3743
|
-
if (
|
|
3744
|
+
if (isString(dataObject)) {
|
|
3744
3745
|
keys = variableName.substring(variableName.indexOf('.') + 1, variableName.length).split('.');
|
|
3745
3746
|
oldKeys = [];
|
|
3746
3747
|
numKeys = keys.length;
|
|
@@ -3764,9 +3765,9 @@ function transformData(dataObject, variableName) {
|
|
|
3764
3765
|
/*if the dataObject is an array and each value is a string, then lite-transform the string to an object
|
|
3765
3766
|
* lite-transform: just checking if the first value is string and then transforming the object, instead of traversing through the whole array
|
|
3766
3767
|
* */
|
|
3767
|
-
if (
|
|
3768
|
+
if (isString(dataObject[0])) {
|
|
3768
3769
|
tempArr = [];
|
|
3769
|
-
|
|
3770
|
+
forEach(dataObject, str => {
|
|
3770
3771
|
newObj = {};
|
|
3771
3772
|
newObj[variableName.split('.').join('-')] = str;
|
|
3772
3773
|
tempArr.push(newObj);
|
|
@@ -3809,18 +3810,18 @@ const ROLLUP_PATTERNS = {
|
|
|
3809
3810
|
/**
|
|
3810
3811
|
* function to get the ordered dataset based on the given orderby
|
|
3811
3812
|
*/
|
|
3812
|
-
const getOrderedDataset = (dataSet, orderBy, innerItem) => {
|
|
3813
|
-
if (!orderBy) {
|
|
3814
|
-
return
|
|
3813
|
+
const getOrderedDataset = (dataSet, orderBy$1, innerItem) => {
|
|
3814
|
+
if (!orderBy$1) {
|
|
3815
|
+
return cloneDeep(dataSet);
|
|
3815
3816
|
}
|
|
3816
3817
|
// The order by only works when the dataset contains list of objects.
|
|
3817
|
-
const items = orderBy.split(','), fields = [], directions = [];
|
|
3818
|
+
const items = orderBy$1.split(','), fields = [], directions = [];
|
|
3818
3819
|
items.forEach(obj => {
|
|
3819
3820
|
const item = obj.split(':');
|
|
3820
3821
|
fields.push(innerItem ? innerItem + '.' + item[0] : item[0]);
|
|
3821
3822
|
directions.push(item[1]);
|
|
3822
3823
|
});
|
|
3823
|
-
return
|
|
3824
|
+
return orderBy(dataSet, fields, directions);
|
|
3824
3825
|
};
|
|
3825
3826
|
/**
|
|
3826
3827
|
* Returns an array of object, each object contain the DataSetItem whose key, value, label are extracted from object keys.
|
|
@@ -3829,10 +3830,10 @@ const transformDataWithKeys = (dataSet) => {
|
|
|
3829
3830
|
const data = [];
|
|
3830
3831
|
// if the dataset is instance of object (not an array) or the first item in the dataset array is an object,
|
|
3831
3832
|
// then we extract the keys from the object and prepare the dataset items.
|
|
3832
|
-
if (
|
|
3833
|
+
if (isObject(dataSet[0]) || (isObject(dataSet) && !(dataSet instanceof Array))) {
|
|
3833
3834
|
// getting keys of the object
|
|
3834
3835
|
const objectKeys = Object.keys(dataSet[0] || dataSet);
|
|
3835
|
-
|
|
3836
|
+
forEach(objectKeys, (objKey, index) => {
|
|
3836
3837
|
data.push({
|
|
3837
3838
|
key: objKey,
|
|
3838
3839
|
label: objKey,
|
|
@@ -3845,21 +3846,21 @@ const transformDataWithKeys = (dataSet) => {
|
|
|
3845
3846
|
};
|
|
3846
3847
|
// Converts any type of data to array.
|
|
3847
3848
|
const extractDataAsArray = data => {
|
|
3848
|
-
if (
|
|
3849
|
+
if (isUndefined(data) || isNull(data) || trim(data) === '') {
|
|
3849
3850
|
return [];
|
|
3850
3851
|
}
|
|
3851
|
-
if (
|
|
3852
|
-
data =
|
|
3852
|
+
if (isString(data)) {
|
|
3853
|
+
data = split(data, ',').map(str => str.trim());
|
|
3853
3854
|
}
|
|
3854
|
-
if (!
|
|
3855
|
+
if (!isArray(data)) {
|
|
3855
3856
|
data = [data];
|
|
3856
3857
|
}
|
|
3857
3858
|
return data;
|
|
3858
3859
|
};
|
|
3859
3860
|
// This function return always an object containing dataset details.
|
|
3860
3861
|
const convertDataToObject = dataResult => {
|
|
3861
|
-
if (
|
|
3862
|
-
dataResult =
|
|
3862
|
+
if (isString(dataResult)) {
|
|
3863
|
+
dataResult = split(dataResult, ',').map(str => str.trim());
|
|
3863
3864
|
}
|
|
3864
3865
|
return dataResult;
|
|
3865
3866
|
};
|
|
@@ -3871,7 +3872,7 @@ const isSeachWidget = (widgetType) => {
|
|
|
3871
3872
|
const setGroupbyKey = (scope, context, dataSetItem, innerItem) => {
|
|
3872
3873
|
if (scope && isSeachWidget(scope.widgetType)) {
|
|
3873
3874
|
if (scope.groupby) {
|
|
3874
|
-
if (
|
|
3875
|
+
if (includes(scope.groupby, '(')) {
|
|
3875
3876
|
//[Todo-CSP]: can generate expr fn in page based on groupby property on widget
|
|
3876
3877
|
const groupDataByUserDefinedFn = $parseEvent(scope.groupby);
|
|
3877
3878
|
dataSetItem.groupby = groupDataByUserDefinedFn(context, { 'row': dataSetItem.dataObject || dataSetItem });
|
|
@@ -3902,10 +3903,10 @@ const transformFormData = (context, dataSet, myDataField, displayOptions, startI
|
|
|
3902
3903
|
}
|
|
3903
3904
|
dataSet = convertDataToObject(dataSet);
|
|
3904
3905
|
// startIndex is the index of the next new item.
|
|
3905
|
-
if (
|
|
3906
|
+
if (isUndefined(startIndex)) {
|
|
3906
3907
|
startIndex = 1;
|
|
3907
3908
|
}
|
|
3908
|
-
if (
|
|
3909
|
+
if (isString(dataSet)) {
|
|
3909
3910
|
dataSet = dataSet.split(',').map(str => str.trim());
|
|
3910
3911
|
dataSet.forEach((option, index) => {
|
|
3911
3912
|
const dataSetItem = { key: option, value: option, label: (isDefined(option) && option !== null) ? option.toString() : '', index: startIndex + index };
|
|
@@ -3913,17 +3914,21 @@ const transformFormData = (context, dataSet, myDataField, displayOptions, startI
|
|
|
3913
3914
|
data.push(dataSetItem);
|
|
3914
3915
|
});
|
|
3915
3916
|
}
|
|
3916
|
-
else if (
|
|
3917
|
+
else if (isArray(dataSet) && !isObject(dataSet[0])) { // array of primitive values only
|
|
3917
3918
|
dataSet.forEach((option, index) => {
|
|
3918
3919
|
const dataSetItem = { key: option, value: option, label: (isDefined(option) && option !== null) ? option.toString() : '', index: startIndex + index };
|
|
3919
3920
|
setGroupbyKey(scope, context, dataSetItem, 'value');
|
|
3920
3921
|
data.push(dataSetItem);
|
|
3921
3922
|
});
|
|
3922
3923
|
}
|
|
3923
|
-
else if (!(dataSet instanceof Array) &&
|
|
3924
|
+
else if (!(dataSet instanceof Array) && isObject(dataSet)) {
|
|
3924
3925
|
const i = 0;
|
|
3925
|
-
|
|
3926
|
-
|
|
3926
|
+
forEach(dataSet, (value, key) => {
|
|
3927
|
+
// @ts-ignore
|
|
3928
|
+
const dataSetItem = { key: trim(key), value: key, label: (isDefined(value) && value !== null) ? value.toString() : '',
|
|
3929
|
+
index: startIndex,
|
|
3930
|
+
dataObject: dataSet
|
|
3931
|
+
};
|
|
3927
3932
|
setGroupbyKey(scope, context, dataSetItem, 'value');
|
|
3928
3933
|
data.push(dataSetItem);
|
|
3929
3934
|
});
|
|
@@ -3935,7 +3940,7 @@ const transformFormData = (context, dataSet, myDataField, displayOptions, startI
|
|
|
3935
3940
|
dataSet.forEach((option, index) => {
|
|
3936
3941
|
const key = myDataField === ALLFIELDS ? startIndex + index : getObjValueByKey(option, myDataField);
|
|
3937
3942
|
// Omit all the items whose datafield (key) is null or undefined.
|
|
3938
|
-
if (!
|
|
3943
|
+
if (!isUndefined(key) && !isNull(key)) {
|
|
3939
3944
|
const label = getEvaluatedData(option, {
|
|
3940
3945
|
field: displayOptions.displayField,
|
|
3941
3946
|
expression: displayOptions.displayExpr,
|
|
@@ -3967,16 +3972,16 @@ const transformFormData = (context, dataSet, myDataField, displayOptions, startI
|
|
|
3967
3972
|
const getUniqObjsByDataField = (data, dataField, displayField, allowEmptyFields) => {
|
|
3968
3973
|
let uniqData;
|
|
3969
3974
|
const isAllFields = dataField === ALLFIELDS;
|
|
3970
|
-
uniqData = isAllFields ?
|
|
3975
|
+
uniqData = isAllFields ? uniqWith(data, isEqual) : uniqBy(data, 'key');
|
|
3971
3976
|
if (!displayField || allowEmptyFields) {
|
|
3972
3977
|
return uniqData;
|
|
3973
3978
|
}
|
|
3974
3979
|
// return objects having non empty datafield and display field values.
|
|
3975
|
-
return
|
|
3980
|
+
return filter$1(uniqData, (obj) => {
|
|
3976
3981
|
if (isAllFields) {
|
|
3977
|
-
return
|
|
3982
|
+
return trim(obj.label);
|
|
3978
3983
|
}
|
|
3979
|
-
return
|
|
3984
|
+
return trim(obj.key) && trim(obj.label);
|
|
3980
3985
|
});
|
|
3981
3986
|
};
|
|
3982
3987
|
/**
|
|
@@ -3988,7 +3993,7 @@ const getUniqObjsByDataField = (data, dataField, displayField, allowEmptyFields)
|
|
|
3988
3993
|
*/
|
|
3989
3994
|
const setItemByCompare = (datasetItems, compareWithDataObj, compareByField) => {
|
|
3990
3995
|
// compare the fields based on fields given to compareby property.
|
|
3991
|
-
|
|
3996
|
+
forEach(datasetItems, opt => {
|
|
3992
3997
|
if (isEqualWithFields(opt.value, compareWithDataObj, compareByField)) {
|
|
3993
3998
|
opt.selected = true;
|
|
3994
3999
|
return false;
|
|
@@ -4005,13 +4010,13 @@ const setItemByCompare = (datasetItems, compareWithDataObj, compareByField) => {
|
|
|
4005
4010
|
*/
|
|
4006
4011
|
const getSortedGroupedData = (groupedLiData, groupBy, orderby) => {
|
|
4007
4012
|
const _groupedData = [];
|
|
4008
|
-
|
|
4013
|
+
forEach(keys(groupedLiData), (groupkey, index) => {
|
|
4009
4014
|
const liData = getOrderedDataset(groupedLiData[groupkey], orderby, 'dataObject');
|
|
4010
4015
|
_groupedData.push({
|
|
4011
4016
|
key: groupkey,
|
|
4012
|
-
data:
|
|
4017
|
+
data: sortBy(liData, data => {
|
|
4013
4018
|
data._groupIndex = index + 1;
|
|
4014
|
-
return
|
|
4019
|
+
return get(data, groupBy) || get(data.dataObject, groupBy);
|
|
4015
4020
|
})
|
|
4016
4021
|
});
|
|
4017
4022
|
});
|
|
@@ -4031,10 +4036,11 @@ const getSortedGroupedData = (groupedLiData, groupBy, orderby) => {
|
|
|
4031
4036
|
*/
|
|
4032
4037
|
const groupData = (compRef, data, groupby, match, orderby, dateformat, datePipe, innerItem, AppDefaults) => {
|
|
4033
4038
|
let groupedLiData = {};
|
|
4034
|
-
if (
|
|
4039
|
+
if (includes(groupby, '(')) {
|
|
4035
4040
|
//[Todo-CSP]: can generate expr fn in page based on groupby property on widget
|
|
4036
4041
|
const groupDataByUserDefinedFn = $parseEvent(groupby);
|
|
4037
|
-
groupedLiData =
|
|
4042
|
+
groupedLiData = groupBy(data, val => {
|
|
4043
|
+
// @ts-ignore
|
|
4038
4044
|
return groupDataByUserDefinedFn(compRef.viewParent, { 'row': val.dataObject || val });
|
|
4039
4045
|
});
|
|
4040
4046
|
}
|
|
@@ -4060,14 +4066,14 @@ const getGroupedData = (fieldDefs, groupby, match, orderby, dateFormat, datePipe
|
|
|
4060
4066
|
}
|
|
4061
4067
|
// handling case-in-sensitive scenario
|
|
4062
4068
|
// ordering the data based on groupby field. If there is innerItem then apply orderby using the innerItem's containing the groupby field.
|
|
4063
|
-
fieldDefs =
|
|
4064
|
-
const groupKey =
|
|
4069
|
+
fieldDefs = orderBy(fieldDefs, fieldDef => {
|
|
4070
|
+
const groupKey = get(innerItem ? fieldDef[innerItem] : fieldDef, groupby);
|
|
4065
4071
|
if (groupKey) {
|
|
4066
|
-
return
|
|
4072
|
+
return toLower(groupKey);
|
|
4067
4073
|
}
|
|
4068
4074
|
});
|
|
4069
4075
|
// extract the grouped data based on the field obtained from 'groupDataByField'.
|
|
4070
|
-
const groupedLiData =
|
|
4076
|
+
const groupedLiData = groupBy(fieldDefs, groupDataByField.bind(undefined, groupby, match, innerItem, dateFormat, datePipe, AppDefaults));
|
|
4071
4077
|
momentLocale._calendar = momentCalendarOptions; // Reset to default moment calendar options
|
|
4072
4078
|
return groupedLiData;
|
|
4073
4079
|
};
|
|
@@ -4133,9 +4139,9 @@ const getTimeRolledUpString = (concatStr, rollUp, dateformat, datePipe, AppDefau
|
|
|
4133
4139
|
// groups the fields based on the groupby value.
|
|
4134
4140
|
const groupDataByField = (groupby, match, innerItem, dateFormat, datePipe, AppDefaults, liData) => {
|
|
4135
4141
|
// get the groupby field value from the liData or innerItem in the liData.
|
|
4136
|
-
let concatStr =
|
|
4142
|
+
let concatStr = get(innerItem ? liData[innerItem] : liData, groupby);
|
|
4137
4143
|
// by default set the undefined groupKey as 'others'
|
|
4138
|
-
if (
|
|
4144
|
+
if (isUndefined(concatStr) || isNull(concatStr) || concatStr.toString().trim() === '') {
|
|
4139
4145
|
return GROUP_BY_OPTIONS.OTHERS;
|
|
4140
4146
|
}
|
|
4141
4147
|
// if match prop is alphabetic ,get the starting alphabet of the word as key.
|
|
@@ -4143,7 +4149,7 @@ const groupDataByField = (groupby, match, innerItem, dateFormat, datePipe, AppDe
|
|
|
4143
4149
|
concatStr = concatStr.substr(0, 1);
|
|
4144
4150
|
}
|
|
4145
4151
|
// if match contains the time options then get the concatStr using 'getTimeRolledUpString'
|
|
4146
|
-
if (
|
|
4152
|
+
if (includes(values(TIME_ROLLUP_OPTIONS), match)) {
|
|
4147
4153
|
concatStr = getTimeRolledUpString(concatStr, match, dateFormat, datePipe, AppDefaults);
|
|
4148
4154
|
}
|
|
4149
4155
|
return concatStr;
|
|
@@ -4158,13 +4164,13 @@ const toggleAllHeaders = (el) => {
|
|
|
4158
4164
|
// toggle the collapse icon on list header.
|
|
4159
4165
|
const groupIcons = groups.find('li.list-group-header .app-icon');
|
|
4160
4166
|
if (groupIcons) {
|
|
4161
|
-
|
|
4162
|
-
icon = $(icon);
|
|
4163
|
-
if (icon.hasClass('wi-chevron-down')) {
|
|
4164
|
-
icon.removeClass('wi-chevron-down').addClass('wi-chevron-up');
|
|
4167
|
+
forEach(groupIcons, (icon) => {
|
|
4168
|
+
const $icon = $(icon);
|
|
4169
|
+
if ($icon.hasClass('wi-chevron-down')) {
|
|
4170
|
+
$icon.removeClass('wi-chevron-down').addClass('wi-chevron-up');
|
|
4165
4171
|
}
|
|
4166
4172
|
else {
|
|
4167
|
-
icon.removeClass('wi-chevron-up').addClass('wi-chevron-down');
|
|
4173
|
+
$icon.removeClass('wi-chevron-up').addClass('wi-chevron-down');
|
|
4168
4174
|
}
|
|
4169
4175
|
});
|
|
4170
4176
|
}
|
|
@@ -4229,8 +4235,8 @@ const EDIT_MODE = {
|
|
|
4229
4235
|
};
|
|
4230
4236
|
// Method to set the header config of the data table
|
|
4231
4237
|
const setHeaderConfig = (headerConfig, config, field, index) => {
|
|
4232
|
-
|
|
4233
|
-
if (
|
|
4238
|
+
forEach(headerConfig, cols => {
|
|
4239
|
+
if (get(cols, 'isGroup')) {
|
|
4234
4240
|
if (cols.field === field) {
|
|
4235
4241
|
cols.columns[index] = config;
|
|
4236
4242
|
}
|
|
@@ -4286,8 +4292,8 @@ const getFieldLayoutConfig = (captionWidth, captionPosition, os) => {
|
|
|
4286
4292
|
}
|
|
4287
4293
|
else if (captionWidth) {
|
|
4288
4294
|
// handling itemsperrow containing string of classes
|
|
4289
|
-
|
|
4290
|
-
const keys =
|
|
4295
|
+
forEach(split(captionWidth, ' '), function (cls) {
|
|
4296
|
+
const keys = split(cls, '-'), tier = keys[0];
|
|
4291
4297
|
let _captionWidth, widgetWidth;
|
|
4292
4298
|
_captionWidth = parseInt(keys[1], 10);
|
|
4293
4299
|
widgetWidth = 12 - _captionWidth;
|
|
@@ -4302,7 +4308,7 @@ const getFieldLayoutConfig = (captionWidth, captionPosition, os) => {
|
|
|
4302
4308
|
};
|
|
4303
4309
|
};
|
|
4304
4310
|
const getDefaultViewModeWidget = widget => {
|
|
4305
|
-
if (
|
|
4311
|
+
if (includes(['checkbox', 'toggle', 'rating'], widget)) {
|
|
4306
4312
|
return VIEW_MODE_OPTIONS.DEFAULT;
|
|
4307
4313
|
}
|
|
4308
4314
|
return VIEW_MODE_OPTIONS.LABEL;
|
|
@@ -4372,7 +4378,7 @@ const getDataTableFilterWidget = type => {
|
|
|
4372
4378
|
if (type === DataType.BOOLEAN) {
|
|
4373
4379
|
widget = FormWidgetType.SELECT;
|
|
4374
4380
|
}
|
|
4375
|
-
if (
|
|
4381
|
+
if (includes([FormWidgetType.TEXT, FormWidgetType.NUMBER, FormWidgetType.SELECT, FormWidgetType.AUTOCOMPLETE,
|
|
4376
4382
|
FormWidgetType.DATE, FormWidgetType.TIME, FormWidgetType.DATETIME], widget)) {
|
|
4377
4383
|
return widget;
|
|
4378
4384
|
}
|
|
@@ -4430,10 +4436,10 @@ const getValidLink = (link) => {
|
|
|
4430
4436
|
const routRegex = /^(\/|#\/|#)(?!\W).*/;
|
|
4431
4437
|
if (link) {
|
|
4432
4438
|
if (routRegex.test(link)) {
|
|
4433
|
-
link =
|
|
4439
|
+
link = first(link.match(/[\w]+.*/g)) || '';
|
|
4434
4440
|
return `#/${link}`;
|
|
4435
4441
|
}
|
|
4436
|
-
if (
|
|
4442
|
+
if (startsWith(link, 'www.')) {
|
|
4437
4443
|
return `//${link}`;
|
|
4438
4444
|
}
|
|
4439
4445
|
return link;
|
|
@@ -4445,7 +4451,7 @@ let DatasetAwareNavComponent = class DatasetAwareNavComponent extends StylableCo
|
|
|
4445
4451
|
this.nodes = [];
|
|
4446
4452
|
this.nodes$ = new Subject();
|
|
4447
4453
|
// debounce function for reset nodes functions.
|
|
4448
|
-
this._resetNodes =
|
|
4454
|
+
this._resetNodes = debounce(this.resetNodes, 50);
|
|
4449
4455
|
this.securityService = this.inj.get(SecurityService);
|
|
4450
4456
|
this.binditemlabel = this.nativeElement.getAttribute('itemlabel.bind');
|
|
4451
4457
|
this.binditemicon = this.nativeElement.getAttribute('itemicon.bind');
|
|
@@ -4465,24 +4471,49 @@ let DatasetAwareNavComponent = class DatasetAwareNavComponent extends StylableCo
|
|
|
4465
4471
|
*/
|
|
4466
4472
|
getNode(fields, node) {
|
|
4467
4473
|
const context = this.viewParent.pageScope || this.viewParent;
|
|
4468
|
-
const children = getEvaluatedData(node, {
|
|
4474
|
+
const children = getEvaluatedData(node, {
|
|
4475
|
+
field: this.itemchildren,
|
|
4476
|
+
bindExpression: this.binditemchildren
|
|
4477
|
+
}, context) || get(node, fields.childrenField);
|
|
4469
4478
|
const navNode = {
|
|
4470
|
-
action: getEvaluatedData(node, {
|
|
4471
|
-
|
|
4479
|
+
action: getEvaluatedData(node, {
|
|
4480
|
+
field: this.itemaction,
|
|
4481
|
+
bindExpression: this.binditemaction
|
|
4482
|
+
}, context) || get(node, fields.actionField),
|
|
4483
|
+
badge: getEvaluatedData(node, {
|
|
4484
|
+
field: this.itembadge,
|
|
4485
|
+
bindExpression: this.binditembadge
|
|
4486
|
+
}, context) || get(node, fields.badgeField),
|
|
4472
4487
|
children: Array.isArray(children) ? this.getNodes(children) : [],
|
|
4473
|
-
class:
|
|
4488
|
+
class: get(node, fields.classField),
|
|
4474
4489
|
disabled: node.disabled,
|
|
4475
|
-
icon: getEvaluatedData(node, {
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4490
|
+
icon: getEvaluatedData(node, {
|
|
4491
|
+
field: this.itemicon,
|
|
4492
|
+
bindExpression: this.binditemicon
|
|
4493
|
+
}, context) || get(node, fields.iconField),
|
|
4494
|
+
id: getEvaluatedData(node, {
|
|
4495
|
+
field: this.itemid,
|
|
4496
|
+
bindExpression: this.binditemid
|
|
4497
|
+
}, context) || get(node, fields.idField),
|
|
4498
|
+
label: getEvaluatedData(node, {
|
|
4499
|
+
field: this.itemlabel,
|
|
4500
|
+
bindExpression: this.binditemlabel
|
|
4501
|
+
}, context) || get(node, fields.labelField),
|
|
4502
|
+
link: getValidLink(getEvaluatedData(node, {
|
|
4503
|
+
field: this.itemlink,
|
|
4504
|
+
bindExpression: this.binditemlink
|
|
4505
|
+
}, context) || get(node, fields.linkField)),
|
|
4506
|
+
target: getValidLink(getEvaluatedData(node, {
|
|
4507
|
+
field: this.itemtarget,
|
|
4508
|
+
bindExpression: this.binditemtarget
|
|
4509
|
+
}, context) || get(node, fields.targetField)),
|
|
4480
4510
|
role: getEvaluatedData(node, { field: this.userrole, bindExpression: this.binduserrole }, context),
|
|
4481
4511
|
isactive: getEvaluatedData(node, { field: this.isactive, bindExpression: this.bindisactive }, context),
|
|
4482
4512
|
// older projects have display field & data field property for menu.
|
|
4483
4513
|
value: this.datafield ? (this.datafield === 'All Fields' ? node : findValueOf(node, this.datafield)) : node
|
|
4484
4514
|
};
|
|
4485
|
-
|
|
4515
|
+
// @ts-ignore
|
|
4516
|
+
return omitBy(navNode, isUndefined);
|
|
4486
4517
|
}
|
|
4487
4518
|
resetItemFieldMap() {
|
|
4488
4519
|
this._itemFieldMap = null;
|
|
@@ -4514,7 +4545,7 @@ let DatasetAwareNavComponent = class DatasetAwareNavComponent extends StylableCo
|
|
|
4514
4545
|
prepareNodeDataSet(nv) {
|
|
4515
4546
|
nv = createArrayFrom(nv);
|
|
4516
4547
|
return nv.map((val) => {
|
|
4517
|
-
if (!isObject(val)) {
|
|
4548
|
+
if (!isObject$1(val)) {
|
|
4518
4549
|
return {
|
|
4519
4550
|
label: val,
|
|
4520
4551
|
value: val
|
|
@@ -4620,7 +4651,7 @@ class BaseFieldValidations {
|
|
|
4620
4651
|
if (this.instance.regexp) {
|
|
4621
4652
|
_validator.push(Validators.pattern(this.instance.regexp));
|
|
4622
4653
|
}
|
|
4623
|
-
if (this.formwidget &&
|
|
4654
|
+
if (this.formwidget && isFunction(this.formwidget.validate)) {
|
|
4624
4655
|
_validator.push(this.formwidget.validate.bind(this.formwidget));
|
|
4625
4656
|
}
|
|
4626
4657
|
return _validator;
|
|
@@ -4647,7 +4678,7 @@ class BaseFieldValidations {
|
|
|
4647
4678
|
}
|
|
4648
4679
|
getPromiseList(validators) {
|
|
4649
4680
|
const arr = [];
|
|
4650
|
-
|
|
4681
|
+
forEach(validators, (fn, index) => {
|
|
4651
4682
|
let promise = fn;
|
|
4652
4683
|
if (fn instanceof Function && fn.bind) {
|
|
4653
4684
|
promise = fn(this.widgetControl, this.widgetContext);
|
|
@@ -4669,10 +4700,11 @@ class BaseFieldValidations {
|
|
|
4669
4700
|
// if err obj has validationMessage key, then set validationMessage using this value
|
|
4670
4701
|
// else return the value of the first key in the err object as validation message.
|
|
4671
4702
|
if (err.hasOwnProperty('errorMessage')) {
|
|
4672
|
-
this.instance.validationmessage =
|
|
4703
|
+
this.instance.validationmessage = get(err, 'errorMessage');
|
|
4673
4704
|
}
|
|
4674
4705
|
else {
|
|
4675
|
-
|
|
4706
|
+
// @ts-ignore
|
|
4707
|
+
const keys = keys(err);
|
|
4676
4708
|
this.instance.validationmessage = (err[keys[0]]).toString();
|
|
4677
4709
|
}
|
|
4678
4710
|
return err;
|
|
@@ -4705,7 +4737,7 @@ class BaseFieldValidations {
|
|
|
4705
4737
|
}
|
|
4706
4738
|
}
|
|
4707
4739
|
isDefaultValidator(type) {
|
|
4708
|
-
return
|
|
4740
|
+
return get(VALIDATOR, toUpper(type));
|
|
4709
4741
|
}
|
|
4710
4742
|
// default validator is bound to a function then watch for value changes
|
|
4711
4743
|
// otherwise set the value of default validator directly
|
|
@@ -4721,10 +4753,10 @@ class BaseFieldValidations {
|
|
|
4721
4753
|
}
|
|
4722
4754
|
// sets the default validation on the form field
|
|
4723
4755
|
setValidators(validators) {
|
|
4724
|
-
let _cloneValidators =
|
|
4756
|
+
let _cloneValidators = cloneDeep(validators);
|
|
4725
4757
|
this.hasValidators = true;
|
|
4726
4758
|
this._syncValidators = [];
|
|
4727
|
-
|
|
4759
|
+
forEach(_cloneValidators, (obj, index) => {
|
|
4728
4760
|
// custom validation is bound to function.
|
|
4729
4761
|
if (obj && obj instanceof Function) {
|
|
4730
4762
|
// passing formfield and form as arguments to the obj (i.e. validator function)
|
|
@@ -4733,17 +4765,17 @@ class BaseFieldValidations {
|
|
|
4733
4765
|
}
|
|
4734
4766
|
else {
|
|
4735
4767
|
// checks for default validator like required, maxchars etc.
|
|
4736
|
-
const key =
|
|
4737
|
-
this.defaultValidatorMessages[key] =
|
|
4768
|
+
const key = get(obj, 'type');
|
|
4769
|
+
this.defaultValidatorMessages[key] = get(obj, 'errorMessage');
|
|
4738
4770
|
if (this.isDefaultValidator(key)) {
|
|
4739
|
-
const value =
|
|
4771
|
+
const value = get(obj, 'validator');
|
|
4740
4772
|
this.setDefaultValidator(key, value);
|
|
4741
4773
|
_cloneValidators[index] = '';
|
|
4742
4774
|
}
|
|
4743
4775
|
}
|
|
4744
4776
|
});
|
|
4745
4777
|
// _syncValidators contains all the custom validations on the form field. will not include default validators.
|
|
4746
|
-
this._syncValidators =
|
|
4778
|
+
this._syncValidators = filter$1(_cloneValidators, val => {
|
|
4747
4779
|
if (val) {
|
|
4748
4780
|
return val;
|
|
4749
4781
|
}
|
|
@@ -4751,8 +4783,8 @@ class BaseFieldValidations {
|
|
|
4751
4783
|
this.applyDefaultValidators();
|
|
4752
4784
|
}
|
|
4753
4785
|
observeOn(fields, context) {
|
|
4754
|
-
|
|
4755
|
-
const formfield =
|
|
4786
|
+
forEach(fields, field => {
|
|
4787
|
+
const formfield = find(this.widgetContext[context], { 'key': field });
|
|
4756
4788
|
if (formfield) {
|
|
4757
4789
|
if (!formfield.notifyForFields) {
|
|
4758
4790
|
formfield.notifyForFields = [];
|
|
@@ -4783,13 +4815,13 @@ class BaseFieldValidations {
|
|
|
4783
4815
|
const watchName = `${this.instance.widgetId}_` + key + '_formField';
|
|
4784
4816
|
$unwatch(watchName);
|
|
4785
4817
|
//[Todo-CSP]: Need clarity generate this expr fn if form is present in the page
|
|
4786
|
-
this.instance.registerDestroyListener($watch('boundFn(fn)',
|
|
4818
|
+
this.instance.registerDestroyListener($watch('boundFn(fn)', extend(this.instance, this.instance.viewParent), { fn }, (nv, ov) => {
|
|
4787
4819
|
this.instance.widget[key] = nv;
|
|
4788
4820
|
this.applyDefaultValidators();
|
|
4789
4821
|
}, watchName));
|
|
4790
4822
|
}
|
|
4791
4823
|
isNullOrEmptyOrFalsy(value) {
|
|
4792
|
-
return
|
|
4824
|
+
return isEmpty(value);
|
|
4793
4825
|
}
|
|
4794
4826
|
// invokes both custom sync validations and default validations.
|
|
4795
4827
|
applyDefaultValidators() {
|
|
@@ -4800,7 +4832,7 @@ class BaseFieldValidations {
|
|
|
4800
4832
|
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4801
4833
|
opt['emitEvent'] = false;
|
|
4802
4834
|
}
|
|
4803
|
-
this.widgetControl.setValidators(
|
|
4835
|
+
this.widgetControl.setValidators(concat(this._syncValidators || [], validators));
|
|
4804
4836
|
this.widgetControl.updateValueAndValidity(opt);
|
|
4805
4837
|
this.setCustomValidationMessage();
|
|
4806
4838
|
}
|
|
@@ -4810,14 +4842,15 @@ class BaseFieldValidations {
|
|
|
4810
4842
|
return;
|
|
4811
4843
|
}
|
|
4812
4844
|
if (fieldErrors.hasOwnProperty('errorMessage')) {
|
|
4813
|
-
this.instance.validationmessage =
|
|
4845
|
+
this.instance.validationmessage = get(fieldErrors, 'errorMessage');
|
|
4814
4846
|
}
|
|
4815
4847
|
else {
|
|
4816
|
-
|
|
4848
|
+
// @ts-ignore
|
|
4849
|
+
const keys = keys(fieldErrors);
|
|
4817
4850
|
const key = keys[0];
|
|
4818
|
-
const validationMsgKey =
|
|
4851
|
+
const validationMsgKey = get(DEFAULT_VALIDATOR, key) || this.formwidget.validateType;
|
|
4819
4852
|
if (validationMsgKey) {
|
|
4820
|
-
const msg =
|
|
4853
|
+
const msg = get(this.defaultValidatorMessages, validationMsgKey) || this.instance.validationmessage;
|
|
4821
4854
|
if (msg && msg instanceof Function) {
|
|
4822
4855
|
// passing formfield and form as arguments to the errorMessage function.
|
|
4823
4856
|
this.instance.validationmessage = msg(this.widgetControl, this.widgetContext);
|