@wavemaker/app-ng-runtime 11.14.2-rc.6311 → 11.15.0-1.246

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/build-task/bundles/index.umd.js +13 -2
  2. package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +9 -2
  3. package/build-task/esm2022/input/default/radioset/radioset.build.mjs +6 -2
  4. package/build-task/fesm2022/index.mjs +13 -2
  5. package/build-task/fesm2022/index.mjs.map +1 -1
  6. package/components/base/bundles/index.umd.js +271 -128
  7. package/components/base/esm2022/public_api.mjs +2 -2
  8. package/components/base/esm2022/utils/autolayout-utils.mjs +252 -0
  9. package/components/base/esm2022/utils/live-utils.mjs +10 -7
  10. package/components/base/esm2022/utils/widget-utils.mjs +8 -1
  11. package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -8
  12. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +4 -1
  13. package/components/base/esm2022/widgets/common/container/container.directive.mjs +28 -150
  14. package/components/base/esm2022/widgets/common/container/container.props.mjs +6 -2
  15. package/components/base/fesm2022/index.mjs +273 -129
  16. package/components/base/fesm2022/index.mjs.map +1 -1
  17. package/components/base/public_api.d.ts +1 -1
  18. package/components/base/utils/autolayout-utils.d.ts +29 -0
  19. package/components/base/utils/widget-utils.d.ts +1 -0
  20. package/components/base/widgets/common/container/container.directive.d.ts +7 -9
  21. package/components/basic/label/bundles/index.umd.js +4 -0
  22. package/components/basic/label/esm2022/label.directive.mjs +5 -1
  23. package/components/basic/label/fesm2022/index.mjs +4 -0
  24. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  25. package/components/basic/search/bundles/index.umd.js +13 -11
  26. package/components/basic/search/esm2022/search.component.mjs +14 -12
  27. package/components/basic/search/fesm2022/index.mjs +13 -11
  28. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  29. package/components/chart/bundles/index.umd.js +2 -2
  30. package/components/chart/esm2022/chart.utils.mjs +3 -3
  31. package/components/chart/fesm2022/index.mjs +2 -2
  32. package/components/chart/fesm2022/index.mjs.map +1 -1
  33. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -0
  34. package/components/containers/accordion/accordion.directive.d.ts +4 -0
  35. package/components/containers/accordion/bundles/index.umd.js +34 -0
  36. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +6 -2
  37. package/components/containers/accordion/esm2022/accordion.directive.mjs +32 -2
  38. package/components/containers/accordion/fesm2022/index.mjs +36 -2
  39. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  40. package/components/containers/tabs/bundles/index.umd.js +34 -0
  41. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +6 -2
  42. package/components/containers/tabs/esm2022/tabs.component.mjs +33 -4
  43. package/components/containers/tabs/fesm2022/index.mjs +36 -2
  44. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  45. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -0
  46. package/components/containers/tabs/tabs.component.d.ts +5 -1
  47. package/components/containers/wizard/bundles/index.umd.js +46 -2
  48. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +8 -2
  49. package/components/containers/wizard/esm2022/wizard.component.mjs +42 -4
  50. package/components/containers/wizard/fesm2022/index.mjs +48 -4
  51. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  52. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +4 -0
  53. package/components/containers/wizard/wizard.component.d.ts +1 -0
  54. package/components/data/form/bundles/index.umd.js +28 -1
  55. package/components/data/form/esm2022/form-field/form-field.directive.mjs +4 -1
  56. package/components/data/form/esm2022/form.component.mjs +24 -2
  57. package/components/data/form/esm2022/form.props.mjs +3 -2
  58. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +2 -1
  59. package/components/data/form/fesm2022/index.mjs +29 -2
  60. package/components/data/form/fesm2022/index.mjs.map +1 -1
  61. package/components/data/form/form.component.d.ts +3 -0
  62. package/components/data/list/bundles/index.umd.js +0 -9
  63. package/components/data/list/esm2022/list-item.directive.mjs +1 -10
  64. package/components/data/list/fesm2022/index.mjs +0 -9
  65. package/components/data/list/fesm2022/index.mjs.map +1 -1
  66. package/components/data/pagination/bundles/index.umd.js +6 -2
  67. package/components/data/pagination/esm2022/pagination.component.mjs +7 -3
  68. package/components/data/pagination/fesm2022/index.mjs +6 -2
  69. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  70. package/components/data/table/bundles/index.umd.js +21 -4
  71. package/components/data/table/esm2022/table.component.mjs +22 -5
  72. package/components/data/table/fesm2022/index.mjs +21 -4
  73. package/components/data/table/fesm2022/index.mjs.map +1 -1
  74. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +6 -2
  75. package/components/dialogs/alert-dialog/bundles/index.umd.js +18 -8
  76. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +17 -7
  77. package/components/dialogs/alert-dialog/fesm2022/index.mjs +15 -5
  78. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  79. package/components/input/checkbox/bundles/index.umd.js +12 -3
  80. package/components/input/checkbox/checkbox.component.d.ts +2 -0
  81. package/components/input/checkbox/esm2022/checkbox.component.mjs +9 -3
  82. package/components/input/checkbox/esm2022/checkbox.props.mjs +5 -2
  83. package/components/input/checkbox/fesm2022/index.mjs +12 -3
  84. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  85. package/components/input/checkboxset/bundles/index.umd.js +12 -1
  86. package/components/input/checkboxset/checkboxset.component.d.ts +1 -0
  87. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +11 -1
  88. package/components/input/checkboxset/esm2022/checkboxset.props.mjs +3 -2
  89. package/components/input/checkboxset/fesm2022/index.mjs +12 -1
  90. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  91. package/components/input/epoch/base-date-time/base-date-time.component.d.ts +0 -1
  92. package/components/input/epoch/base-date-time/bundles/index.umd.js +29 -27
  93. package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +30 -28
  94. package/components/input/epoch/base-date-time/fesm2022/index.mjs +29 -27
  95. package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -1
  96. package/components/input/epoch/date/bundles/index.umd.js +4 -3
  97. package/components/input/epoch/date/esm2022/date.component.mjs +5 -4
  98. package/components/input/epoch/date/fesm2022/index.mjs +4 -3
  99. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  100. package/components/input/epoch/date-time/bundles/index.umd.js +5 -4
  101. package/components/input/epoch/date-time/esm2022/date-time.component.mjs +7 -6
  102. package/components/input/epoch/date-time/fesm2022/index.mjs +6 -5
  103. package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -1
  104. package/components/input/file-upload/bundles/index.umd.js +1 -1
  105. package/components/input/file-upload/esm2022/file-upload.props.mjs +2 -2
  106. package/components/input/file-upload/fesm2022/index.mjs +1 -1
  107. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  108. package/components/input/radioset/bundles/index.umd.js +13 -1
  109. package/components/input/radioset/esm2022/radioset.component.mjs +11 -1
  110. package/components/input/radioset/esm2022/radioset.props.mjs +4 -2
  111. package/components/input/radioset/fesm2022/index.mjs +13 -1
  112. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  113. package/components/input/radioset/radioset.component.d.ts +1 -0
  114. package/components/input/slider/bundles/index.umd.js +86 -16
  115. package/components/input/slider/esm2022/slider.component.mjs +76 -9
  116. package/components/input/slider/esm2022/slider.props.mjs +5 -1
  117. package/components/input/slider/fesm2022/index.mjs +79 -8
  118. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  119. package/components/input/slider/slider.component.d.ts +12 -3
  120. package/components/input/text/bundles/index.umd.js +24 -3
  121. package/components/input/text/esm2022/input-text/input-text.component.mjs +6 -3
  122. package/components/input/text/esm2022/input-text/input-text.props.mjs +5 -2
  123. package/components/input/text/esm2022/number-locale/number-locale.mjs +16 -1
  124. package/components/input/text/fesm2022/index.mjs +24 -3
  125. package/components/input/text/fesm2022/index.mjs.map +1 -1
  126. package/components/input/text/input-text/input-text.component.d.ts +4 -0
  127. package/components/input/text/number-locale/number-locale.d.ts +12 -0
  128. package/components/navigation/breadcrumb/bundles/index.umd.js +2 -2
  129. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +3 -3
  130. package/components/navigation/breadcrumb/fesm2022/index.mjs +2 -2
  131. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  132. package/components/navigation/popover/bundles/index.umd.js +12 -0
  133. package/components/navigation/popover/esm2022/popover.component.mjs +13 -1
  134. package/components/navigation/popover/fesm2022/index.mjs +12 -0
  135. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  136. package/components/navigation/popover/popover.component.d.ts +2 -0
  137. package/components/page/default/bundles/index.umd.js +0 -4
  138. package/components/page/default/esm2022/router-outlet.directive.mjs +1 -5
  139. package/components/page/default/fesm2022/index.mjs +0 -4
  140. package/components/page/default/fesm2022/index.mjs.map +1 -1
  141. package/components/page/header/bundles/index.umd.js +4 -3
  142. package/components/page/header/esm2022/header.component.mjs +5 -4
  143. package/components/page/header/fesm2022/index.mjs +4 -3
  144. package/components/page/header/fesm2022/index.mjs.map +1 -1
  145. package/components/page/header/header.component.d.ts +2 -1
  146. package/core/bundles/index.umd.js +90 -6
  147. package/core/enums/enums.d.ts +1 -0
  148. package/core/esm2022/enums/enums.mjs +2 -1
  149. package/core/esm2022/utils/build-utils.mjs +5 -1
  150. package/core/esm2022/utils/utils.mjs +5 -2
  151. package/core/esm2022/utils/watcher.mjs +83 -4
  152. package/core/fesm2022/index.mjs +91 -4
  153. package/core/fesm2022/index.mjs.map +1 -1
  154. package/core/utils/watcher.d.ts +2 -0
  155. package/npm-shrinkwrap.json +2 -2
  156. package/oAuth/esm2022/oAuth.service.mjs +1 -1
  157. package/oAuth/fesm2022/index.mjs.map +1 -1
  158. package/oAuth/oAuth.service.d.ts +1 -1
  159. package/package-lock.json +2 -2
  160. package/package.json +1 -1
  161. package/runtime/base/bundles/index.umd.js +33 -31
  162. package/runtime/base/components/base-prefab.component.d.ts +6 -4
  163. package/runtime/base/esm2022/components/app-component/app.component.mjs +1 -1
  164. package/runtime/base/esm2022/components/base-page.component.mjs +2 -5
  165. package/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
  166. package/runtime/base/esm2022/components/base-prefab.component.mjs +20 -12
  167. package/runtime/base/esm2022/components/base-spa-page.component.mjs +1 -4
  168. package/runtime/base/esm2022/services/http-interceptor.services.mjs +14 -13
  169. package/runtime/base/fesm2022/index.mjs +34 -31
  170. package/runtime/base/fesm2022/index.mjs.map +1 -1
  171. package/runtime/base/runtime-base.module.d.ts +2 -1
  172. package/runtime/dynamic/app/app.config.d.ts +1 -1
  173. package/runtime/dynamic/bundles/index.umd.js +1 -1
  174. package/runtime/dynamic/esm2022/app/app.config.mjs +7 -7
  175. package/runtime/dynamic/fesm2022/index.mjs +2 -2
  176. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  177. package/scripts/datatable/datatable.js +17 -15
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.props.ts","../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.component.ts","../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.component.html","../../../../../../projects/components/widgets/input/epoch/date-time/src/index.ts"],"sourcesContent":["import {FormWidgetType} from '@wm/core';\nimport {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['hourstep', { value: 1, ...PROP_NUMBER }],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['minutestep', { value: 15, ...PROP_NUMBER }],\n ['name', PROP_STRING],\n ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['secondsstep', { value: 1, ...PROP_NUMBER }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', PROP_BOOLEAN],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['timestamp', PROP_STRING],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }],\n ['showampmbuttons',{ value: false, ...PROP_BOOLEAN }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-datetime',\n dateTimeProps\n );\n registerFormWidget(\n FormWidgetType.DATETIME,\n new Map(dateTimeProps)\n );\n registerFormWidget(\n FormWidgetType.TIMESTAMP,\n new Map(dateTimeProps)\n );\n};\n","import {FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {DateTimePickerComponent} from '@wm/components/input/epoch/date-time-picker';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Injector,\n NgZone,\n OnDestroy,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {BsDatepickerDirective, BsDatepickerModule} from 'ngx-bootstrap/datepicker';\nimport {TimepickerConfig, TimepickerModule} from 'ngx-bootstrap/timepicker';\n\nimport {\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n adjustContainerRightEdges,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDateObj,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getMomentLocaleObject,\n getNativeDateObject\n} from '@wm/core';\nimport {provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from '@wm/components/input/epoch/base-date-time';\nimport {registerProps} from './date-time.props';\nimport {debounce, forEach, includes, isNaN, parseInt} from \"lodash-es\";\nimport {BsDropdownModule} from \"ngx-bootstrap/dropdown\";\nimport * as momentLib from 'moment';\n\ndeclare const $;\nconst moment = momentLib.default || window['moment'];\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n standalone: true,\n imports: [FormsModule, DateTimePickerComponent, BsDropdownModule, BsDatepickerModule, TimepickerModule,CommonModule],\n selector: '[wmDateTime]',\n templateUrl: './date-time.component.html',\n providers: [\n provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DatetimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DatetimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n /**\n * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n * The bsDateTimeValue = bsDateValue + bsTimeValue.\n */\n private bsDateTimeValue: any;\n public bsDateValue;\n private bsTimeValue;\n private proxyModel;\n private app: App;\n public hint: string;\n public arialabel: string;\n public showdropdownon: string;\n private deregisterDatepickerEventListener;\n private deregisterTimepickeEventListener;\n private isEnterPressedOnDateInput = false;\n private focusTrap;\n\n get timestamp() {\n return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n }\n\n /**\n * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n * @returns {any|string}\n */\n get displayValue(): any {\n const display= getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n return this.safeReplaceMeridians(display);\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n /**\n * This property checks if the timePicker is Open\n */\n public isTimeOpen = false;\n\n /**\n * This property checks if the datePicker is Open\n */\n public isDateOpen = false;\n\n /**\n * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n */\n private timeinterval: any;\n\n /**\n * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n */\n public isCurrentDate = false;\n\n private _debouncedOnChange: Function = debounce(this.invokeOnChange, 10);\n\n private dateContainerCls: string;\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentDate && !this.proxyModel) {\n return CURRENT_DATE;\n }\n return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the date selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal === CURRENT_DATE) {\n this.isCurrentDate = true;\n this.setTimeInterval();\n } else {\n this.proxyModel = newVal ? getDateObj(newVal, { isNativePicker: this.loadNativeDateInput }, this.timeZone) : undefined;\n this.clearTimeInterval();\n this.isCurrentDate = false;\n }\n this.bsTimeValue = this.bsDateValue = this.proxyModel;\n this.cdRef.detectChanges();\n }\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n app: App,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.registerDestroyListener(() => this.clearTimeInterval());\n styler(this.nativeElement, this);\n this.app = app;\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval(() => {\n const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n this.onModelUpdate(currentTime);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This is an internal method to toggle the time picker\n */\n public toggleTimePicker(newVal, $event?: any) {\n if (this.loadNativeDateInput) {\n this.onDateTimeInputFocus();\n return;\n }\n this.isTimeOpen = newVal;\n if ($event && $event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n }\n this.addTimepickerClickListener(this.isTimeOpen);\n }\n\n private addTimepickerClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.toggleTimePicker(false);\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.isTimeOpen = val;\n }\n\n private hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.toggleTimePicker(false);\n if (this.deregisterTimepickeEventListener) {\n this.deregisterTimepickeEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', { displayVal: this.displayValue, nativeEl: parentEl });\n }\n }\n\n /**\n * This is an internal method to add a click listener once the time dropdown is open\n */\n public onTimepickerOpen() {\n // adding class for time widget dropdown menu\n const tpElements = document.querySelectorAll('timepicker');\n forEach(tpElements, (element) => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n if (this.bsDropdown && (this.dateNotInRange || this.invalidDateTimeFormat)) {\n this.bsTimeValue = null;\n }\n this.bsDatePickerDirective.hide();\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public onDatePickerOpen() {\n this.isDateOpen = !this.isDateOpen;\n this.toggleTimePicker(false);\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n\n this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n if (!this.bsDateValue) {\n this.hightlightToday(this.activeDate);\n }\n this.addDatepickerKeyboardEvents(this, true);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n\n /**\n * This is an internal method to update the model\n */\n public onModelUpdate(newVal, type?) {\n\n if (type === 'date') {\n this.invalidDateTimeFormat = false;\n const formatted = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n if (this.safeReplaceMeridians(formatted) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n }\n\n if (newVal && !this.bsDateValue && this.timeZone) {\n newVal = getMomentLocaleObject(this.timeZone, newVal);\n }\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (!newVal) {\n // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n } else {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n }\n // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n this._debouncedOnChange(this.datavalue, {}, true);\n }\n return;\n }\n if (type === 'date') {\n if (this.isDateOpen) {\n this.toggleTimePicker(true);\n }\n }\n if (!this.dateNotInRange && !this.invalidDateTimeFormat) {\n this.proxyModel = newVal;\n if (this.proxyModel) {\n this.bsDateValue = this.bsTimeValue = newVal;\n }\n if(this.datavalue=== this.getPrevDataValue()){\n const time=getFormattedDate(this.datePipe, this.datavalue, this.datepattern, this.timeZone, null, null, this) || ''\n $(this.nativeElement).find('.display-input').val(time?.replace(this.meridians[0], this.am)?.replace(this.meridians[1], this.pm)) ;}\n }else {\n this.proxyModel = newVal;\n }\n this._debouncedOnChange(this.datavalue, {}, true);\n this.cdRef.detectChanges();\n\n // Update timepicker with formatted time, when timezone is provided.\n const timePickerFields = $('.bs-timepicker-field');\n if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n this.updateTimepickerFields(this.safeReplaceMeridians(formattedDate), timePickerFields);\n }\n }\n\n // deduces the timepattern from datepattern set in the studio\n private getTimePattern() {\n let timepattern;\n const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n if (timePatternEndIndex > -1) {\n // adding the index to +3 to incluse :ss\n timePatternEndIndex += 3;\n } else {\n timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n // adding the index to +3 to incluse :mm\n if (timePatternEndIndex > -1) {\n timePatternEndIndex += 3;\n }\n }\n const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n if (hasMeridian > -1)\n timepattern += ' a';\n return timepattern;\n }\n\n private updateTimepickerFields(date, timePickerFields) {\n const meridianField = $('timepicker button.text-center');\n const formattedArr = date.split(' ');\n const formattedTime = formattedArr[0].split(':');\n for (let i = 0; i < timePickerFields.length; i++) {\n timePickerFields[i].value = formattedTime[i]\n }\n if (meridianField?.html()?.trim() !== formattedArr[1]) {\n meridianField.text(formattedArr[1]);\n }\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if (!skipFocus) {\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n if (this.bsDatePickerDirective && (this.dateNotInRange||this.invalidDateTimeFormat)) {\n this.bsDatePickerDirective._bsValue = null;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.bsDatePickerDirective.hide();\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n public hideDatepickerDropdown() {\n this.isDateOpen = false;\n this.focusTrap?.deactivate();\n this.invokeOnTouched();\n this.bsDatePickerDirective.hide();\n\n // To open the timepicker menu when user wants to update time without changing the date.\n if (this.bsDateValue) {\n this.toggleTimePicker(true);\n }\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterDatepickerEventListener) {\n this.deregisterDatepickerEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', { displayVal: this.displayValue, nativeEl: parentEl });\n }\n this.blurDateInput(this.isDateOpen);\n }\n\n public onDateChange($event, isNativePicker?: boolean) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n let newVal = $event.target.value.trim();\n newVal = newVal ? getNativeDateObject(newVal?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]), { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput }) : undefined;\n // datetime pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onModelUpdate(newVal);\n }\n\n /**\n * This is an internal method triggered when pressing key on the datetime input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n let newVal = event.target.value.trim();\n if (event.key === 'Enter' || event.key === 'ArrowDown') {\n newVal = newVal ? getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians }) : undefined;\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n const formattedDateWithMeridians = this.safeReplaceMeridians(formattedDate);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDateWithMeridians) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = newVal;\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val()?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]);\n const newVal = getNativeDateObject(enteredDate, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput });\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n}\n","<div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n [attr.aria-expanded]=\"isDateOpen\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">{{appLocale.LABEL_AM ||\"AM\"}}</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">{{appLocale.LABEL_PM ||\"PM\"}}</button>\n </div>\n }\n </div>\n </div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.props.ts","../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.component.ts","../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.component.html","../../../../../../projects/components/widgets/input/epoch/date-time/src/index.ts"],"sourcesContent":["import {FormWidgetType} from '@wm/core';\nimport {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['hourstep', { value: 1, ...PROP_NUMBER }],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['minutestep', { value: 15, ...PROP_NUMBER }],\n ['name', PROP_STRING],\n ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['secondsstep', { value: 1, ...PROP_NUMBER }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', PROP_BOOLEAN],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['timestamp', PROP_STRING],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }],\n ['showampmbuttons',{ value: false, ...PROP_BOOLEAN }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-datetime',\n dateTimeProps\n );\n registerFormWidget(\n FormWidgetType.DATETIME,\n new Map(dateTimeProps)\n );\n registerFormWidget(\n FormWidgetType.TIMESTAMP,\n new Map(dateTimeProps)\n );\n};\n","import {FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {DateTimePickerComponent} from '@wm/components/input/epoch/date-time-picker';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Injector,\n NgZone,\n OnDestroy,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {BsDatepickerDirective, BsDatepickerModule} from 'ngx-bootstrap/datepicker';\nimport {TimepickerConfig, TimepickerModule} from 'ngx-bootstrap/timepicker';\n\nimport {\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n adjustContainerRightEdges,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDateObj,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getMomentLocaleObject,\n getNativeDateObject\n} from '@wm/core';\nimport {provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from '@wm/components/input/epoch/base-date-time';\nimport {registerProps} from './date-time.props';\nimport {debounce, forEach, includes, isNaN, parseInt} from \"lodash-es\";\nimport {BsDropdownModule} from \"ngx-bootstrap/dropdown\";\nimport * as momentLib from 'moment';\n\ndeclare const $;\nconst moment = momentLib.default || window['moment'];\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n standalone: true,\n imports: [FormsModule, DateTimePickerComponent, BsDropdownModule, BsDatepickerModule, TimepickerModule,CommonModule],\n selector: '[wmDateTime]',\n templateUrl: './date-time.component.html',\n providers: [\n provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DatetimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DatetimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n /**\n * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n * The bsDateTimeValue = bsDateValue + bsTimeValue.\n */\n private bsDateTimeValue: any;\n public bsDateValue;\n private bsTimeValue;\n private proxyModel;\n private app: App;\n public hint: string;\n public arialabel: string;\n public showdropdownon: string;\n private deregisterDatepickerEventListener;\n private deregisterTimepickeEventListener;\n private isEnterPressedOnDateInput = false;\n private focusTrap;\n\n get timestamp() {\n return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n }\n\n /**\n * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n * @returns {any|string}\n */\n get displayValue(): any {\n const display= getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n return this.safeReplaceMeridians(display);\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n /**\n * This property checks if the timePicker is Open\n */\n public isTimeOpen = false;\n\n /**\n * This property checks if the datePicker is Open\n */\n public isDateOpen = false;\n\n /**\n * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n */\n private timeinterval: any;\n\n /**\n * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n */\n public isCurrentDate = false;\n\n private _debouncedOnChange: Function = debounce(this.invokeOnChange, 10);\n\n private dateContainerCls: string;\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentDate && !this.proxyModel) {\n return CURRENT_DATE;\n }\n return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the date selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal === CURRENT_DATE) {\n this.isCurrentDate = true;\n this.setTimeInterval();\n } else {\n this.proxyModel = newVal ? getDateObj(newVal, { isNativePicker: this.loadNativeDateInput }, this.timeZone) : undefined;\n this.clearTimeInterval();\n this.isCurrentDate = false;\n }\n this.bsTimeValue = this.bsDateValue = this.proxyModel;\n this.cdRef.detectChanges();\n }\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n app: App,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.registerDestroyListener(() => this.clearTimeInterval());\n styler(this.nativeElement, this);\n this.app = app;\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this._dateOptions.customTodayClass='current-date';\n this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval(() => {\n const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n this.onModelUpdate(currentTime);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This is an internal method to toggle the time picker\n */\n public toggleTimePicker(newVal, $event?: any) {\n if (this.loadNativeDateInput) {\n this.onDateTimeInputFocus();\n return;\n }\n this.isTimeOpen = newVal;\n if ($event && $event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n }\n this.addTimepickerClickListener(this.isTimeOpen);\n }\n\n private addTimepickerClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.toggleTimePicker(false);\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.isTimeOpen = val;\n }\n\n private hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.toggleTimePicker(false);\n if (this.deregisterTimepickeEventListener) {\n this.deregisterTimepickeEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', { displayVal: this.displayValue, nativeEl: parentEl });\n }\n }\n\n /**\n * This is an internal method to add a click listener once the time dropdown is open\n */\n public onTimepickerOpen() {\n // adding class for time widget dropdown menu\n const tpElements = document.querySelectorAll('timepicker');\n forEach(tpElements, (element) => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n if (this.bsDropdown && (this.dateNotInRange || this.invalidDateTimeFormat)) {\n this.bsTimeValue = null;\n }\n this.bsDatePickerDirective.hide();\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n// adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public onDatePickerOpen() {\n this.isDateOpen = !this.isDateOpen;\n this.toggleTimePicker(false);\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n\n this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n // if (!this.bsDateValue) {\n // this.hightlightToday(this.activeDate);\n // }\n this.addDatepickerKeyboardEvents(this, true);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n\n /**\n * This is an internal method to update the model\n */\n public onModelUpdate(newVal, type?) {\n\n if (type === 'date') {\n this.invalidDateTimeFormat = false;\n const formatted = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n if (this.safeReplaceMeridians(formatted) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n }\n\n if (newVal && !this.bsDateValue && this.timeZone) {\n newVal = getMomentLocaleObject(this.timeZone, newVal);\n }\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (!newVal) {\n // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n } else {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n }\n // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n this._debouncedOnChange(this.datavalue, {}, true);\n }\n return;\n }\n if (type === 'date') {\n if (this.isDateOpen) {\n this.toggleTimePicker(true);\n }\n }\n if (!this.dateNotInRange && !this.invalidDateTimeFormat) {\n this.proxyModel = newVal;\n if (this.proxyModel) {\n this.bsDateValue = this.bsTimeValue = newVal;\n }\n if(this.datavalue=== this.getPrevDataValue()){\n const time=getFormattedDate(this.datePipe, this.datavalue, this.datepattern, this.timeZone, null, null, this) || ''\n $(this.nativeElement).find('.display-input').val(time?.replace(this.meridians[0], this.am)?.replace(this.meridians[1], this.pm)) ;}\n }else {\n this.proxyModel = newVal;\n }\n this._debouncedOnChange(this.datavalue, {}, true);\n this.cdRef.detectChanges();\n\n // Update timepicker with formatted time, when timezone is provided.\n const timePickerFields = $('.bs-timepicker-field');\n if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n this.updateTimepickerFields(this.safeReplaceMeridians(formattedDate), timePickerFields);\n }\n }\n\n // deduces the timepattern from datepattern set in the studio\n private getTimePattern() {\n let timepattern;\n const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n if (timePatternEndIndex > -1) {\n // adding the index to +3 to incluse :ss\n timePatternEndIndex += 3;\n } else {\n timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n // adding the index to +3 to incluse :mm\n if (timePatternEndIndex > -1) {\n timePatternEndIndex += 3;\n }\n }\n const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n if (hasMeridian > -1)\n timepattern += ' a';\n return timepattern;\n }\n\n private updateTimepickerFields(date, timePickerFields) {\n const meridianField = $('timepicker button.text-center');\n const formattedArr = date.split(' ');\n const formattedTime = formattedArr[0].split(':');\n for (let i = 0; i < timePickerFields.length; i++) {\n timePickerFields[i].value = formattedTime[i]\n }\n if (meridianField?.html()?.trim() !== formattedArr[1]) {\n meridianField.text(formattedArr[1]);\n }\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if (!skipFocus) {\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n if (this.bsDatePickerDirective && (this.dateNotInRange||this.invalidDateTimeFormat)) {\n this.bsDatePickerDirective._bsValue = null;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.bsDatePickerDirective.hide();\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n public hideDatepickerDropdown() {\n this.isDateOpen = false;\n this.focusTrap?.deactivate();\n this.invokeOnTouched();\n this.bsDatePickerDirective.hide();\n\n // To open the timepicker menu when user wants to update time without changing the date.\n if (this.bsDateValue) {\n this.toggleTimePicker(true);\n }\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterDatepickerEventListener) {\n this.deregisterDatepickerEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', { displayVal: this.displayValue, nativeEl: parentEl });\n }\n this.blurDateInput(this.isDateOpen);\n }\n\n public onDateChange($event, isNativePicker?: boolean) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n let newVal = $event.target.value.trim();\n newVal = newVal ? getNativeDateObject(newVal?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]), { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput }) : undefined;\n // datetime pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onModelUpdate(newVal);\n }\n\n /**\n * This is an internal method triggered when pressing key on the datetime input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n let newVal = event.target.value.trim();\n if (event.key === 'Enter' || event.key === 'ArrowDown') {\n newVal = newVal ? getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians }) : undefined;\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n const formattedDateWithMeridians = this.safeReplaceMeridians(formattedDate);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDateWithMeridians) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = newVal;\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val()?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]);\n const newVal = getNativeDateObject(enteredDate, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput });\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n}\n","<div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n [attr.aria-expanded]=\"isDateOpen\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">{{appLocale.LABEL_AM ||\"AM\"}}</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">{{appLocale.LABEL_PM ||\"PM\"}}</button>\n </div>\n }\n </div>\n </div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@
38
38
  ['disabled', base.PROP_BOOLEAN],
39
39
  ['contenttype', base.PROP_STRING],
40
40
  ['maxfilesize', base.PROP_NUMBER],
41
- ['iconclass', { value: 'wm-sl-l sl-cloud-upload', ...base.PROP_STRING }],
41
+ ['iconclass', { value: 'wi wi-file-upload', ...base.PROP_STRING }],
42
42
  ['cleariconclass', { value: '', ...base.PROP_STRING }],
43
43
  ['cleariconhint', { value: 'Clear', ...base.PROP_STRING }],
44
44
  ['class', base.PROP_STRING],
@@ -13,7 +13,7 @@ export const registerProps = () => {
13
13
  ['disabled', PROP_BOOLEAN],
14
14
  ['contenttype', PROP_STRING],
15
15
  ['maxfilesize', PROP_NUMBER],
16
- ['iconclass', { value: 'wm-sl-l sl-cloud-upload', ...PROP_STRING }],
16
+ ['iconclass', { value: 'wi wi-file-upload', ...PROP_STRING }],
17
17
  ['cleariconclass', { value: '', ...PROP_STRING }],
18
18
  ['cleariconhint', { value: 'Clear', ...PROP_STRING }],
19
19
  ['class', PROP_STRING],
@@ -36,4 +36,4 @@ export const registerProps = () => {
36
36
  ['required', PROP_BOOLEAN]
37
37
  ]));
38
38
  };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQucHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZmlsZS11cGxvYWQvc3JjL2ZpbGUtdXBsb2FkLnByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDOUIsUUFBUSxDQUNKLGVBQWUsRUFDZixJQUFJLEdBQUcsQ0FDSDtRQUNJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztRQUN4QixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7UUFDckIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQ3JCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztRQUMxQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7UUFDekIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO1FBQzFCLENBQUMsbUJBQW1CLEVBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLFlBQVksRUFBQyxDQUFDO1FBQ3hDLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztRQUMxQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7UUFDNUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQzVCLENBQUMsV0FBVyxFQUFFLEVBQUMsS0FBSyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7UUFDakUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztRQUMvQyxDQUFDLGVBQWUsRUFBRSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztRQUNuRCxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7UUFDdEIsQ0FBQyxZQUFZLEVBQUUsRUFBQyxHQUFHLFdBQVcsRUFBQyxDQUFDO1FBQ2hDLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztRQUMzQixDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7UUFDOUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQzVCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO1FBQy9CLENBQUMsT0FBTyxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO1FBQzFDLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO1FBQ2pDLENBQUMsMkJBQTJCLEVBQUUsWUFBWSxDQUFDO1FBQzNDLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7S0FDeEQsQ0FDSixDQUNKLENBQUM7SUFDRixrQkFBa0IsQ0FDZCxjQUFjLENBQUMsTUFBTSxFQUNyQixJQUFJLEdBQUcsQ0FBQztRQUNKLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztRQUMxQixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7UUFDM0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDO1FBQ3pCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztRQUMxQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7UUFDMUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0tBQzdCLENBQUMsQ0FDTCxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQUk9QX0JPT0xFQU4sIFBST1BfTlVNQkVSLCBQUk9QX1NUUklORywgcmVnaXN0ZXIsIHJlZ2lzdGVyRm9ybVdpZGdldH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0Zvcm1XaWRnZXRUeXBlfSBmcm9tICdAd20vY29yZSc7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlclByb3BzID0gKCkgPT4ge1xuICAgIHJlZ2lzdGVyKFxuICAgICAgICAnd20tZmlsZXVwbG9hZCcsXG4gICAgICAgIG5ldyBNYXAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWydjYXB0aW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgICAgIFsnbmFtZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgICAgICBbJ2hpbnQnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydhcmlhbGFiZWwnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWyd0YWJpbmRleCcsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgICAgICAgICBbJ211bHRpcGxlJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgICAgICAgICBbJ2ZpbGV1cGxvYWRtZXNzYWdlJyAsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgICAgICBbJ3Nob3cnLCB7dmFsdWU6IHRydWUsIC4uLlBST1BfQk9PTEVBTn1dLFxuICAgICAgICAgICAgICAgIFsnZGlzYWJsZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICAgICAgICAgIFsnY29udGVudHR5cGUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydtYXhmaWxlc2l6ZScsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgICAgICAgICBbJ2ljb25jbGFzcycsIHt2YWx1ZTogJ3dtLXNsLWwgc2wtY2xvdWQtdXBsb2FkJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgICAgICBbJ2NsZWFyaWNvbmNsYXNzJywge3ZhbHVlOiAnJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgICAgICBbJ2NsZWFyaWNvbmhpbnQnLCB7dmFsdWU6ICdDbGVhcicsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgICAgICAgICAgWydjbGFzcycsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgICAgICBbJ3VwbG9hZHBhdGgnLCB7Li4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgICAgICBbJ2RhdGFzb3VyY2UnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydzZWxlY3RlZEZpbGVzJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgICAgIFsnZGVzdGluYXRpb24nLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydmaWxlbGlzdGhlaWdodCcsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgICAgICAgICBbJ3dpZHRoJywge3ZhbHVlOiAnYXV0bycsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgICAgICAgICAgWydzaG93cHJvZ3Jlc3NiYXInLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICAgICAgICAgIFsnc2hvd3Byb2dyZXNzYmFycGVyY2VudGFnZScsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICAgICAgWydkZWxldGVpY29uaGludCcsIHt2YWx1ZTogJ0RlbGV0ZScsIC4uLlBST1BfU1RSSU5HfV1cbiAgICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICk7XG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0KFxuICAgICAgICBGb3JtV2lkZ2V0VHlwZS5VUExPQUQsXG4gICAgICAgIG5ldyBNYXAoW1xuICAgICAgICAgICAgWydkaXNhYmxlZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICBbJ2V4dGVuc2lvbnMnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ2ZpbGV0eXBlJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgWydtdWx0aXBsZScsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICBbJ3JlYWRvbmx5JywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgICAgIFsncmVxdWlyZWQnLCBQUk9QX0JPT0xFQU5dXG4gICAgICAgIF0pXG4gICAgKTtcbn07XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQucHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZmlsZS11cGxvYWQvc3JjL2ZpbGUtdXBsb2FkLnByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDOUIsUUFBUSxDQUNKLGVBQWUsRUFDZixJQUFJLEdBQUcsQ0FDSDtRQUNJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztRQUN4QixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7UUFDckIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQ3JCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztRQUMxQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7UUFDekIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO1FBQzFCLENBQUMsbUJBQW1CLEVBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLFlBQVksRUFBQyxDQUFDO1FBQ3hDLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztRQUMxQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7UUFDNUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQzVCLENBQUMsV0FBVyxFQUFFLEVBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7UUFDM0QsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztRQUMvQyxDQUFDLGVBQWUsRUFBRSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztRQUNuRCxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7UUFDdEIsQ0FBQyxZQUFZLEVBQUUsRUFBQyxHQUFHLFdBQVcsRUFBQyxDQUFDO1FBQ2hDLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztRQUMzQixDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7UUFDOUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQzVCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO1FBQy9CLENBQUMsT0FBTyxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO1FBQzFDLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO1FBQ2pDLENBQUMsMkJBQTJCLEVBQUUsWUFBWSxDQUFDO1FBQzNDLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7S0FDeEQsQ0FDSixDQUNKLENBQUM7SUFDRixrQkFBa0IsQ0FDZCxjQUFjLENBQUMsTUFBTSxFQUNyQixJQUFJLEdBQUcsQ0FBQztRQUNKLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztRQUMxQixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7UUFDM0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDO1FBQ3pCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztRQUMxQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7UUFDMUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0tBQzdCLENBQUMsQ0FDTCxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQUk9QX0JPT0xFQU4sIFBST1BfTlVNQkVSLCBQUk9QX1NUUklORywgcmVnaXN0ZXIsIHJlZ2lzdGVyRm9ybVdpZGdldH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0Zvcm1XaWRnZXRUeXBlfSBmcm9tICdAd20vY29yZSc7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlclByb3BzID0gKCkgPT4ge1xuICAgIHJlZ2lzdGVyKFxuICAgICAgICAnd20tZmlsZXVwbG9hZCcsXG4gICAgICAgIG5ldyBNYXAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWydjYXB0aW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgICAgIFsnbmFtZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgICAgICBbJ2hpbnQnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydhcmlhbGFiZWwnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWyd0YWJpbmRleCcsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgICAgICAgICBbJ211bHRpcGxlJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgICAgICAgICBbJ2ZpbGV1cGxvYWRtZXNzYWdlJyAsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgICAgICBbJ3Nob3cnLCB7dmFsdWU6IHRydWUsIC4uLlBST1BfQk9PTEVBTn1dLFxuICAgICAgICAgICAgICAgIFsnZGlzYWJsZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICAgICAgICAgIFsnY29udGVudHR5cGUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydtYXhmaWxlc2l6ZScsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgICAgICAgICBbJ2ljb25jbGFzcycsIHt2YWx1ZTogJ3dpIHdpLWZpbGUtdXBsb2FkJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgICAgICBbJ2NsZWFyaWNvbmNsYXNzJywge3ZhbHVlOiAnJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgICAgICBbJ2NsZWFyaWNvbmhpbnQnLCB7dmFsdWU6ICdDbGVhcicsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgICAgICAgICAgWydjbGFzcycsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgICAgICBbJ3VwbG9hZHBhdGgnLCB7Li4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgICAgICBbJ2RhdGFzb3VyY2UnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydzZWxlY3RlZEZpbGVzJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgICAgIFsnZGVzdGluYXRpb24nLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICAgICAgWydmaWxlbGlzdGhlaWdodCcsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgICAgICAgICBbJ3dpZHRoJywge3ZhbHVlOiAnYXV0bycsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgICAgICAgICAgWydzaG93cHJvZ3Jlc3NiYXInLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICAgICAgICAgIFsnc2hvd3Byb2dyZXNzYmFycGVyY2VudGFnZScsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICAgICAgWydkZWxldGVpY29uaGludCcsIHt2YWx1ZTogJ0RlbGV0ZScsIC4uLlBST1BfU1RSSU5HfV1cbiAgICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICk7XG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0KFxuICAgICAgICBGb3JtV2lkZ2V0VHlwZS5VUExPQUQsXG4gICAgICAgIG5ldyBNYXAoW1xuICAgICAgICAgICAgWydkaXNhYmxlZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICBbJ2V4dGVuc2lvbnMnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ2ZpbGV0eXBlJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgWydtdWx0aXBsZScsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICBbJ3JlYWRvbmx5JywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgICAgIFsncmVxdWlyZWQnLCBQUk9QX0JPT0xFQU5dXG4gICAgICAgIF0pXG4gICAgKTtcbn07XG4iXX0=
@@ -21,7 +21,7 @@ const registerProps = () => {
21
21
  ['disabled', PROP_BOOLEAN],
22
22
  ['contenttype', PROP_STRING],
23
23
  ['maxfilesize', PROP_NUMBER],
24
- ['iconclass', { value: 'wm-sl-l sl-cloud-upload', ...PROP_STRING }],
24
+ ['iconclass', { value: 'wi wi-file-upload', ...PROP_STRING }],
25
25
  ['cleariconclass', { value: '', ...PROP_STRING }],
26
26
  ['cleariconhint', { value: 'Clear', ...PROP_STRING }],
27
27
  ['class', PROP_STRING],
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/file-upload/src/file-upload.props.ts","../../../../../projects/components/widgets/input/file-upload/src/file-upload.component.ts","../../../../../projects/components/widgets/input/file-upload/src/file-upload.component.html","../../../../../projects/components/widgets/input/file-upload/src/index.ts"],"sourcesContent":["import {PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const registerProps = () => {\n register(\n 'wm-fileupload',\n new Map(\n [\n ['caption', PROP_STRING],\n ['name', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['tabindex', PROP_NUMBER],\n ['multiple', PROP_BOOLEAN],\n ['fileuploadmessage' , PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['disabled', PROP_BOOLEAN],\n ['contenttype', PROP_STRING],\n ['maxfilesize', PROP_NUMBER],\n ['iconclass', {value: 'wm-sl-l sl-cloud-upload', ...PROP_STRING}],\n ['cleariconclass', {value: '', ...PROP_STRING}],\n ['cleariconhint', {value: 'Clear', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['uploadpath', {...PROP_STRING}],\n ['datasource', PROP_STRING],\n ['selectedFiles', PROP_STRING],\n ['destination', PROP_STRING],\n ['filelistheight', PROP_NUMBER],\n ['width', {value: 'auto', ...PROP_STRING}],\n ['showprogressbar', PROP_BOOLEAN],\n ['showprogressbarpercentage', PROP_BOOLEAN],\n ['deleteiconhint', {value: 'Delete', ...PROP_STRING}]\n ]\n )\n );\n registerFormWidget(\n FormWidgetType.UPLOAD,\n new Map([\n ['disabled', PROP_BOOLEAN],\n ['extensions', PROP_STRING],\n ['filetype', PROP_STRING],\n ['multiple', PROP_BOOLEAN],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN]\n ])\n );\n};\n","import { CommonModule } from '@angular/common';\nimport {AfterViewInit, Attribute, Component, Inject, Injector, OnDestroy, OnInit, Optional} from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\n\nimport { App, DataSource, getWmProjectProperties, isAudioFile, isImageFile, isVideoFile, AbstractDialogService, IDGenerator } from '@wm/core';\nimport {FileIconClassPipe, FileSizePipe, provideAsWidgetRef, StateClassPipe, StylableComponent, styler } from '@wm/components/base';\n\nimport {registerProps} from './file-upload.props';\nimport {forEach, includes, isEmpty, toLower} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-fileupload';\nconst WIDGET_CONFIG = {\n widgetType: 'wm-fileupload',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, FileIconClassPipe, StateClassPipe, FileSizePipe],\n selector: '[wmFileUpload]',\n templateUrl: './file-upload.component.html',\n providers: [\n provideAsWidgetRef(FileUploadComponent)\n ]\n})\n\nexport class FileUploadComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n selectedFiles: any = [];\n uploadedFiles: any = [];\n selectedFolders: any = [];\n progressObservable: Subject<any>;\n deleteFileObservable: Subject<any>;\n name;\n hint;\n arialabel;\n multiple;\n fileTransfers = {};\n caption = 'Upload';\n formName = '';\n maxfilesize;\n cleariconclass;\n cleariconhint;\n selectedUploadTypePath;\n DEFAULT_CAPTIONS = {\n MULTIPLE_SELECT: 'Drop your files here.',\n SELECT: 'Select'\n };\n DEVICE_CONTENTTYPES = {\n IMAGE: 'image',\n VIDEO: 'video',\n AUDIO: 'audio',\n FILES: 'files'\n };\n FILESIZE_MB = 1048576;\n widgetProps;\n _isMobileType;\n // parentPrefabScope = element.closest('.app-prefab').isolateScope(),\n CONSTANT_FILE_SERVICE = 'FileService';\n uploadData = {\n file: undefined,\n uploadPath: undefined\n };\n allowedFileUploadExtensions = getWmProjectProperties().allowedFileUploadExtensions;\n defaultAllowedExtensions = this.allowedFileUploadExtensions.split(',').map(item => item.trim()).map(item => item.endsWith('/*') ? item : `.${item}`);\n chooseFilter = this.defaultAllowedExtensions.includes('*/*') ? '' : this.defaultAllowedExtensions;\n datasource;\n deletedatasource;\n fileUploadMessage = 'Drop your files here or click here to browse';\n highlightDropArea;\n showprogressbar;\n showprogressbarpercentage;\n deleteiconhint;\n private uploadProgressSubscription: Subscription;\n private deleteProgressSubscription: Subscription;\n private idGenerator = new IDGenerator('file-');\n // MEMORY LEAK FIX: Store bound functions for proper cleanup\n private boundDragOverCb: (e: Event) => void;\n private boundDropCb: () => void;\n private boundDisableDropZone: () => void;\n /*_hasOnSuccessEvt = WM.isDefined(attrs.onSuccess);\n _hasOnErrorEvt = WM.isDefined(attrs.onError);*/\n\n // Checking if the selected file is valid for the choosen filter type\n isValidFile(filename, contenttype, extensionName, isMobileType) {\n let isValid, contentTypes;\n\n if (!contenttype) {\n return true;\n }\n contentTypes = toLower(contenttype).split(',');\n\n if (includes(contentTypes, 'image/*') || (includes(contentTypes, 'image') && isMobileType)) {\n isValid = isImageFile(filename);\n // If one of the content type chosen is image and user uploads image it is valid file\n if (isValid) {\n return isValid;\n }\n }\n if (includes(contentTypes, 'audio/*') || (includes(contentTypes, 'audio') && isMobileType)) {\n isValid = isAudioFile(filename);\n // If one of the content type chosen is audio/* and user uploads audio it is valid file\n if (isValid) {\n return isValid;\n }\n }\n if (includes(contentTypes, 'video/*') || (includes(contentTypes, 'video') && isMobileType)) {\n isValid = isVideoFile(filename);\n // If one of the content type chosen is video/* and user uploads video it is valid file\n if (isValid) {\n return isValid;\n }\n }\n /*content type and the uploaded file extension should be same*/\n if (includes(contentTypes, '.' + toLower(extensionName))) {\n isValid = true;\n }\n return isValid;\n }\n\n /* this return the array of files which are having the file size not more than maxfilesize and filters based on contenttype */\n getValidFiles($files) {\n const validFiles = [];\n const errorFiles = [];\n const MAXFILEUPLOAD_SIZE = parseFloat(this.maxfilesize) * this.FILESIZE_MB || this.FILESIZE_MB;\n const MAX_FILE_UPLOAD_FORMATTED_SIZE = (this.maxfilesize || '1') + 'MB';\n\n // if contenttype is files for mobile projects.\n if (this.chooseFilter === this.DEVICE_CONTENTTYPES.FILES) {\n this.chooseFilter = '';\n }\n\n forEach($files, (file) => {\n /* check for the file content type before uploading */\n if (!this.isValidFile(file.name, this.chooseFilter, this.getFileExtension(file.name), this._isMobileType)) {\n const msg = `${this.appLocale.LABEL_FILE_EXTENTION_VALIDATION_MESSAGE} ${this.chooseFilter}`;\n this.handleErrorFiles('INVALID_FILE_EXTENSION', msg, file, errorFiles);\n return;\n }\n if (file.size > MAXFILEUPLOAD_SIZE) {\n const msg = `${this.appLocale.LABEL_FILE_EXCEED_VALIDATION_MESSAGE} ${MAX_FILE_UPLOAD_FORMATTED_SIZE}`;\n this.handleErrorFiles('INVALID_FILE_SIZE', msg, file, errorFiles);\n return;\n }\n validFiles.push(file);\n });\n return {\n validFiles: validFiles,\n errorFiles: errorFiles\n };\n }\n\n handleErrorFiles(key, msg, file, errorFiles) {\n // Check whether the error callback exist or not. If it exists then dont show taoster message\n if (!this.hasEventCallback('error')) {\n this.app.notifyApp(msg, 'Error');\n }\n const error = {\n key: key,\n message: msg\n };\n file.error = error;\n errorFiles.push(file);\n }\n\n /*Overwrite the caption only if they are default*/\n getCaption(caption, isMultiple, isMobileType) {\n if (includes(this.DEFAULT_CAPTIONS, caption)) {\n return isMultiple && !isMobileType ? this.DEFAULT_CAPTIONS.MULTIPLE_SELECT : this.DEFAULT_CAPTIONS.SELECT;\n }\n return caption;\n }\n\n uploadUrl = 'services';\n\n /* change server path based on user option */\n changeServerUploadPath(path) {\n this.selectedUploadTypePath = path;\n }\n\n /* this function returns the fileextension */\n getFileExtension(fileName) {\n if (fileName && includes(fileName, '.')) {\n return fileName.substring(fileName.lastIndexOf('.') + 1);\n }\n return 'file';\n }\n\n /**\n * Calls select Event\n * @param $event\n * @param $files\n */\n onSelectEventCall($event, $files) {\n $files.forEach(file => {\n file.uniqueId = this.idGenerator.nextUid();\n })\n this.selectedFiles = $files;\n this.uploadedFiles = this.multiple ? [...this.uploadedFiles, ...$files] : $files;\n setTimeout(() => {\n this.invokeEventCallback('select', {\n $event: $.extend($event.$files || {}, $files),\n selectedFiles: $files\n });\n });\n }\n\n onFileElemClick($event) {\n this.highlightDropArea = true;\n\n //The file upload widget value should be set to null to reupload the same file.\n this.$element.find('.file-input')[0].value = null;\n $event.stopPropagation();\n\n // MEMORY LEAK FIX: Use stored bound function reference\n // when the filepicker is not there on the window, remove the dropzone highlight\n window.addEventListener('focus', this.boundDisableDropZone);\n }\n\n disableDropZone() {\n this.highlightDropArea = false;\n // MEMORY LEAK FIX: Remove using stored bound function reference\n window.removeEventListener('focus', this.boundDisableDropZone);\n }\n\n /*this function to clear the specified file. if argument is not provided, it clears the complete list */\n clear(fileObj) {\n this.selectedFiles = (fileObj) ? this.clearFile(this.selectedFiles, fileObj) : [];\n this.uploadedFiles = (fileObj) ? this.clearFile(this.uploadedFiles, fileObj) : [];\n }\n\n private clearFile(files, fileObj) {\n return files.filter((file) => file?._response?.fileName !== fileObj?._response?.fileName || file?.name !== fileObj?.name || file !== fileObj);\n }\n\n /*this function to set the class names for clear icon */\n setClearIconClass(classValue) {\n this.cleariconclass = classValue;\n }\n /*this function to set the hint for clear icon */\n setClearIconHint(hint) {\n this.cleariconhint = hint;\n }\n\n\n /*this function to append upload status dom elements to widget */\n onFileSelect($event, $files) {\n let beforeSelectVal;\n const files = this.getValidFiles($files);\n $files = files.validFiles;\n\n // If the user has previously tried uploading folders using drop, and then uploading using click method we clear the folders dom\n if ($event.type === \"change\") {\n this.selectedFolders = [];\n }\n\n // Trigger error callback event if any invalid file found.\n if (!isEmpty(files.errorFiles)) {\n this.invokeEventCallback('error', {\n $event,\n files: files.errorFiles\n });\n }\n\n // Make call if there are valid files else no call is made\n if ($files.length) {\n // EVENT: ON_BEFORE_SELECT\n beforeSelectVal = this.invokeEventCallback('beforeselect', {\n $event: $.extend($event.$files || {}, $files),\n files: $files\n });\n if (this.datasource) {\n if(!this.uploadProgressSubscription) {\n this.progressObservable = new Subject();\n this.datasource._progressObservable = this.progressObservable;\n this.uploadProgressSubscription = this.datasource._progressObservable.asObservable().subscribe((progressObj) => {\n forEach(this.uploadedFiles, (file) => {\n if (file.name === progressObj.fileName && file.uniqueId === progressObj.uniqueId) {\n file.progress = progressObj.progress;\n if (file.progress === 100) {\n file.status = 'success';\n } else {\n file.status = progressObj.status;\n if (progressObj.errMsg) {\n file.errMsg = progressObj.errMsg;\n this.invokeEventCallback('error', {\n $event,\n files: file\n });\n }\n }\n }\n });\n });\n }\n } else {\n this.selectedFiles = $files;\n }\n if (beforeSelectVal !== false) {\n // EVENT: ON_SELECT\n this.onSelectEventCall($event, $files);\n }\n }\n }\n\n onFileDelete($event, file) {\n if(!file) {\n return;\n }\n\n const beforeDeleteVal = this.invokeEventCallback('beforedelete', { $event: file });\n\n if (beforeDeleteVal !== false) {\n this.dialogService.showAppConfirmDialog({\n title: \"Delete file\",\n message: \"Are you sure you want to delete this file?\",\n oktext: \"Ok\",\n canceltext: \"Cancel\",\n onOk: () => {\n if (this.deletedatasource) {\n this.deletedatasource.setInput('file', file._response.fileName || file.name);\n\n if(!this.deleteProgressSubscription) {\n this.deleteFileObservable = new Subject();\n this.deletedatasource._deleteFileObservable = this.deleteFileObservable;\n this.deletedatasource._deleteFileObservable.asObservable().subscribe((response) => {\n if(response.status === \"success\") {\n this.selectedFiles = this.selectedFiles.filter((fileObj) => file !== fileObj) || [];\n this.uploadedFiles = this.uploadedFiles.filter((fileObj) => file !== fileObj) || [];\n }\n });\n }\n }\n this.invokeEventCallback('delete', { $event: file });\n this.dialogService.closeAppConfirmDialog();\n },\n onCancel: () => {\n this.dialogService.closeAppConfirmDialog();\n },\n onOpen: () => {\n $('.cancel-action').focus();\n }\n });\n }\n }\n\n // Prevent default behavior (Prevent file from being opened)\n dragOverHandler($event) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n // Get the file data if it exists and call the onFileSelect function\n onFileDrop($event) {\n $event.preventDefault();\n let listOfFiles = [];\n this.selectedFolders = [];\n const filesData = $event.dataTransfer.items;\n if (filesData.length > 0) {\n // Use DataTransferItemList interface to access the file(s)\n for (var i = 0; i < filesData.length; i++) {\n // Get all the files and push them into an array\n if (filesData[i].webkitGetAsEntry().isFile) {\n listOfFiles.push(filesData[i].getAsFile());\n }\n // If a selected item is directory push the folder element into an array and display error message by adding to dom\n else if(filesData[i].webkitGetAsEntry().isDirectory) {\n this.selectedFolders.push(filesData[i].getAsFile());\n }\n }\n this.onFileSelect($event, listOfFiles);\n }\n }\n\n dragOverCb(e) {\n e.preventDefault();\n $(this.nativeElement).find('#dropzone').addClass('highlight-drop-box');\n }\n\n dropCb() {\n $(this.nativeElement).find('#dropzone').removeClass('highlight-drop-box');\n }\n\n // this function triggers file select window, when clicked anywhere on the file upload widget in case of multi select\n triggerFileSelect() {\n this.$element.find('.file-input').trigger('click');\n }\n\n /**\n * Aborts a file upload request\n * @param $file, the file for which the request is to be aborted\n */\n abortFileUpload($file) {\n this.datasource.execute(DataSource.Operation.CANCEL, $file);\n }\n\n isMimeType(file: string) {\n return (this.defaultAllowedExtensions.includes('image/*') && isImageFile(file))\n || (this.defaultAllowedExtensions.includes('audio/*') && isAudioFile(file))\n || (this.defaultAllowedExtensions.includes('video/*') && isVideoFile(file));\n }\n\n /* Define the property change handler. This function will be triggered when there is a change in the widget property */\n onPropertyChange(key, nv, ov) {\n /*Monitoring changes for styles or properties and accordingly handling respective changes.*/\n switch (key) {\n case 'uploadpath':\n // TODO Srinivas: why do we need uploadpath\n this.changeServerUploadPath(nv);\n break;\n case 'contenttype':\n if (this.defaultAllowedExtensions.includes('*/*')) {\n this.chooseFilter = nv.split(' ').join(',')\n } else {\n this.chooseFilter = nv.split(' ').filter(item => this.defaultAllowedExtensions.includes(item) || this.isMimeType(item)).join(',');\n if (isEmpty(this.chooseFilter)) {\n this.chooseFilter = this.defaultAllowedExtensions;\n }\n }\n\n break;\n case 'multiple':\n this.formName = this.name + (this.multiple ? '-multiple-fileupload' : '-single-fileupload');\n this.caption = this.getCaption(this.caption, this.multiple, this._isMobileType);\n break;\n case 'fileuploadmessage':\n this.fileUploadMessage = nv;\n }\n\n super.onPropertyChange(key, nv, ov);\n }\n\n constructor(inj: Injector, private app: App, @Attribute('select.event') public onSelectEvt, private dialogService: AbstractDialogService, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n // styler(this.nativeElement, this);\n }\n\n ngOnInit() {\n super.ngOnInit();\n \n // MEMORY LEAK FIX: Store bound function references for proper removal\n this.boundDragOverCb = this.dragOverCb.bind(this);\n this.boundDropCb = this.dropCb.bind(this);\n this.boundDisableDropZone = this.disableDropZone.bind(this);\n \n // adding, dragover and drop on the document as when file is dragged on to the page highlight the dropzones and remove highlight on file drop\n document.addEventListener('dragover', this.boundDragOverCb);\n document.addEventListener('drop', this.boundDropCb);\n\n // adding mouseleave evnt to remove highlight when file is dropped outside the window\n document.addEventListener('mouseleave', this.boundDropCb);\n }\n\n ngAfterViewInit() {\n styler( this.nativeElement.querySelector('.app-button, .drop-box'), this);\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Remove using stored bound function references\n if (this.boundDragOverCb) {\n document.removeEventListener('dragover', this.boundDragOverCb);\n this.boundDragOverCb = null;\n }\n if (this.boundDropCb) {\n document.removeEventListener('drop', this.boundDropCb);\n document.removeEventListener('mouseleave', this.boundDropCb);\n this.boundDropCb = null;\n }\n if (this.boundDisableDropZone) {\n window.removeEventListener('focus', this.boundDisableDropZone);\n this.boundDisableDropZone = null;\n }\n \n super.ngOnDestroy();\n\n const subscriptions = [this.uploadProgressSubscription, this.deleteProgressSubscription];\n subscriptions.forEach(subscription => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n }\n}\n","<div class=\"app-fileupload\" init-widget>\n <!-- drag and drop files UI in web -->\n @if (!_isMobileType && multiple) {\n <div class=\"app-multi-file-upload\">\n <div id=\"dropzone\" class=\"drop-box\" (click)=\"triggerFileSelect()\" [ngClass]=\"{'highlight-drop-box' : highlightDropArea}\" (dragover)=\"dragOverHandler($event);\" (drop)=\"onFileDrop($event);\">\n <i class=\"{{iconclass}}\"></i>\n <div class=\"message\">\n <label [innerHtml]=\"caption\" class=\"upload-label\"></label>\n <form class=\"form-horizontal\" name=\"{{formName}}\">\n @if (multiple) {\n <input class=\"file-input\" [attr.aria-label]=\"hint || 'File selection field'\" type=\"file\" name=\"files\" [disabled]=\"disabled\" [accept]=\"chooseFilter\" (click)=\"onFileElemClick($event)\" (change)=\"onFileSelect($event, $event.target.files)\" multiple >\n }\n <a class=\"app-anchor upload-label\" href=\"javascript:void(0);\">{{ fileUploadMessage }}</a>\n </form>\n @if (chooseFilter) {\n <label [innerHtml]=\"chooseFilter + ' only '\" class=\"upload-extensions\"></label>\n }\n @if (chooseFilter && maxfilesize) {\n <span class=\"upload-extensions\"> . </span>\n }\n @if (maxfilesize) {\n <label [innerHtml]=\"maxfilesize + 'MB max'\" class=\"upload-extensions\"></label>\n }\n </div>\n </div>\n </div>\n }\n <!-- single file upload in web and single , multiple file upload UI in mobile runmode -->\n @if ((!multiple || _isMobileType)) {\n <div class=\"app-single-file-upload\">\n <div class=\"app-button-wrapper\">\n <form class=\"form-horizontal\" name=\"{{formName}}\">\n <!-- support for file upload in Mobileapp in its runmode (Web) -->\n @if (multiple) {\n <input (change)=\"onFileSelect($event, $event.target.files)\" (click)=\"onFileElemClick($event)\"\n [accept]=\"chooseFilter\" [attr.aria-label]=\"arialabel || 'File selection field'\" [disabled]=\"disabled\" class=\"file-input\"\n multiple name=\"files\" type=\"file\">\n }\n @if (!multiple) {\n <input (change)=\"onFileSelect($event, $event.target.files)\" (click)=\"onFileElemClick($event)\"\n [accept]=\"chooseFilter\" [attr.aria-label]=\"arialabel || 'File selection field'\" [disabled]=\"disabled\" class=\"file-input\"\n name=\"files\" type=\"file\">\n }\n <button id=\"dropzone\" focus-target class=\"app-button btn btn-default\" [ngClass]=\"{'highlight-drop-box' : highlightDropArea}\">\n <i class=\"{{iconclass}}\" aria-hidden=\"true\"></i>\n <span class=\"caption\" [innerHTML]=\"caption\"></span>\n </button>\n </form>\n </div>\n <div class=\"app-files-upload-status single\"></div>\n </div>\n }\n <!-- list of selectedfiles UI -->\n @if (uploadedFiles.length > 0) {\n <ul class=\"list-group file-upload\" [ngStyle]=\"{height: filelistheight, overflow: overflow}\"\n tabindex=\"0\">\n @for (ft of uploadedFiles; track ft) {\n @if (ft.status !== 'abort') {\n <li class=\"list-group-item file-upload-status\" tabindex=\"0\">\n <div class=\"media upload-file-list\">\n <div class=\"media-left media-middle file-icon {{getFileExtension(ft.name) | fileIconClass}}\" title=\"{{getFileExtension(ft.name)}}\"></div>\n <div class=\"media-body media-middle file-details\">\n <p class=\"uploaddetails col-md-3\">\n <span class=\"upload-title\">{{ ft.storageName || ft.name }}</span>\n @if (ft.status === 'success' && (!datasource || (datasource && ft._response?.success))) {\n <span\n class=\"status-icon {{ft.status | stateClass }}\"></span>\n }\n <br/>\n @if (ft.fileLength !== 0) {\n <span class=\"filesize\">{{ft.size | filesize:0}}</span>\n }\n @if (ft.status === 'error') {\n <span\n class=\"status-icon {{ft.status | stateClass }}\"\n title=\"{{ft.errMsg || this.appLocale.MESSAGE_FILE_UPLOAD_FAILED}}\"></span>\n }\n @if (ft.status === 'error') {\n <span class=\"error-message\">Upload Failed</span>\n }\n </p>\n @if (ft.status === 'onProgress' || showprogressbar) {\n <div\n class=\"progress col-md-7 upload-progress\">\n <div [ngClass]=\"ft.status === 'error' ? 'progress-bar-danger' : 'progress-bar-info'\"\n [ngStyle]=\"{width: (ft.progress +'%')}\"\n class=\"progress-bar progress-bar-striped\"></div>\n </div>\n }\n @if ((ft.status === 'onProgress' || showprogressbar && showprogressbarpercentage) && ft.progress ) {\n <div\n class=\"col-md-1 upload-progress-percentage\">{{ ft.progress + '%' }}\n </div>\n }\n </div>\n @if (ft.status === 'onProgress' || ft.status === 'queued') {\n <div class=\"media-right media-middle\">\n <a href=\"javascript:void(0)\" class=\"btn btn-transparent file-upload-stop\" type=\"button\"\n (click)=\"abortFileUpload(ft)\">\n <i class=\"wi wi-close\"></i>\n </a>\n </div>\n }\n <div class=\"media-right media-middle\">\n @if (cleariconclass !== '' && ft.status !== 'onProgress') {\n <a href=\"javascript:void(0)\" (click)=\"clear(ft)\"\n class=\"btn btn-transparent btn-default status-icon\" title=\"{{cleariconhint}}\" type=\"button\">\n <i class=\"{{cleariconclass}}\"></i>\n </a>\n }\n </div>\n @if (ft.status === 'success' && (!datasource || (datasource && ft._response?.success))) {\n <div class=\"media-right media-middle\">\n <a href=\"javascript:void(0)\" (click)=\"onFileDelete($event, ft)\"\n class=\"btn btn-transparent btn-default status-icon\" title=\"{{deleteiconhint}}\" type=\"button\">\n <i class=\"wi wi-delete\"></i>\n </a>\n </div>\n }\n </div>\n </li>\n }\n }\n </ul>\n }\n <!-- list of selectedfolders UI to show the error in title -->\n @if (selectedFolders.length > 0) {\n <ul class=\"list-group file-upload\" [ngStyle]=\"{height: filelistheight, overflow: overflow}\" title=\"{{this.appLocale.MESSAGE_FOLDER_UPLOADS_NOT_ALLOWED}}\" >\n @for (ft of selectedFolders; track ft) {\n <li class=\"list-group-item file-upload-status\">\n <div class=\"media upload-file-list\">\n <div class=\"media-left media-middle file-icon fa fa-folder-o\"></div>\n <div class=\"media-body media-middle file-details\">\n <p class=\"uploaddetails\">\n <label class=\"upload-title\">{{ft.name}}</label><br/>\n </p>\n </div>\n <div class=\"media-right media-middle\" >\n <span class=\"status-icon wi wi-cancel text-danger\"></span>\n </div>\n </div>\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/file-upload/src/file-upload.props.ts","../../../../../projects/components/widgets/input/file-upload/src/file-upload.component.ts","../../../../../projects/components/widgets/input/file-upload/src/file-upload.component.html","../../../../../projects/components/widgets/input/file-upload/src/index.ts"],"sourcesContent":["import {PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const registerProps = () => {\n register(\n 'wm-fileupload',\n new Map(\n [\n ['caption', PROP_STRING],\n ['name', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['tabindex', PROP_NUMBER],\n ['multiple', PROP_BOOLEAN],\n ['fileuploadmessage' , PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['disabled', PROP_BOOLEAN],\n ['contenttype', PROP_STRING],\n ['maxfilesize', PROP_NUMBER],\n ['iconclass', {value: 'wi wi-file-upload', ...PROP_STRING}],\n ['cleariconclass', {value: '', ...PROP_STRING}],\n ['cleariconhint', {value: 'Clear', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['uploadpath', {...PROP_STRING}],\n ['datasource', PROP_STRING],\n ['selectedFiles', PROP_STRING],\n ['destination', PROP_STRING],\n ['filelistheight', PROP_NUMBER],\n ['width', {value: 'auto', ...PROP_STRING}],\n ['showprogressbar', PROP_BOOLEAN],\n ['showprogressbarpercentage', PROP_BOOLEAN],\n ['deleteiconhint', {value: 'Delete', ...PROP_STRING}]\n ]\n )\n );\n registerFormWidget(\n FormWidgetType.UPLOAD,\n new Map([\n ['disabled', PROP_BOOLEAN],\n ['extensions', PROP_STRING],\n ['filetype', PROP_STRING],\n ['multiple', PROP_BOOLEAN],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN]\n ])\n );\n};\n","import { CommonModule } from '@angular/common';\nimport {AfterViewInit, Attribute, Component, Inject, Injector, OnDestroy, OnInit, Optional} from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\n\nimport { App, DataSource, getWmProjectProperties, isAudioFile, isImageFile, isVideoFile, AbstractDialogService, IDGenerator } from '@wm/core';\nimport {FileIconClassPipe, FileSizePipe, provideAsWidgetRef, StateClassPipe, StylableComponent, styler } from '@wm/components/base';\n\nimport {registerProps} from './file-upload.props';\nimport {forEach, includes, isEmpty, toLower} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-fileupload';\nconst WIDGET_CONFIG = {\n widgetType: 'wm-fileupload',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, FileIconClassPipe, StateClassPipe, FileSizePipe],\n selector: '[wmFileUpload]',\n templateUrl: './file-upload.component.html',\n providers: [\n provideAsWidgetRef(FileUploadComponent)\n ]\n})\n\nexport class FileUploadComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n selectedFiles: any = [];\n uploadedFiles: any = [];\n selectedFolders: any = [];\n progressObservable: Subject<any>;\n deleteFileObservable: Subject<any>;\n name;\n hint;\n arialabel;\n multiple;\n fileTransfers = {};\n caption = 'Upload';\n formName = '';\n maxfilesize;\n cleariconclass;\n cleariconhint;\n selectedUploadTypePath;\n DEFAULT_CAPTIONS = {\n MULTIPLE_SELECT: 'Drop your files here.',\n SELECT: 'Select'\n };\n DEVICE_CONTENTTYPES = {\n IMAGE: 'image',\n VIDEO: 'video',\n AUDIO: 'audio',\n FILES: 'files'\n };\n FILESIZE_MB = 1048576;\n widgetProps;\n _isMobileType;\n // parentPrefabScope = element.closest('.app-prefab').isolateScope(),\n CONSTANT_FILE_SERVICE = 'FileService';\n uploadData = {\n file: undefined,\n uploadPath: undefined\n };\n allowedFileUploadExtensions = getWmProjectProperties().allowedFileUploadExtensions;\n defaultAllowedExtensions = this.allowedFileUploadExtensions.split(',').map(item => item.trim()).map(item => item.endsWith('/*') ? item : `.${item}`);\n chooseFilter = this.defaultAllowedExtensions.includes('*/*') ? '' : this.defaultAllowedExtensions;\n datasource;\n deletedatasource;\n fileUploadMessage = 'Drop your files here or click here to browse';\n highlightDropArea;\n showprogressbar;\n showprogressbarpercentage;\n deleteiconhint;\n private uploadProgressSubscription: Subscription;\n private deleteProgressSubscription: Subscription;\n private idGenerator = new IDGenerator('file-');\n // MEMORY LEAK FIX: Store bound functions for proper cleanup\n private boundDragOverCb: (e: Event) => void;\n private boundDropCb: () => void;\n private boundDisableDropZone: () => void;\n /*_hasOnSuccessEvt = WM.isDefined(attrs.onSuccess);\n _hasOnErrorEvt = WM.isDefined(attrs.onError);*/\n\n // Checking if the selected file is valid for the choosen filter type\n isValidFile(filename, contenttype, extensionName, isMobileType) {\n let isValid, contentTypes;\n\n if (!contenttype) {\n return true;\n }\n contentTypes = toLower(contenttype).split(',');\n\n if (includes(contentTypes, 'image/*') || (includes(contentTypes, 'image') && isMobileType)) {\n isValid = isImageFile(filename);\n // If one of the content type chosen is image and user uploads image it is valid file\n if (isValid) {\n return isValid;\n }\n }\n if (includes(contentTypes, 'audio/*') || (includes(contentTypes, 'audio') && isMobileType)) {\n isValid = isAudioFile(filename);\n // If one of the content type chosen is audio/* and user uploads audio it is valid file\n if (isValid) {\n return isValid;\n }\n }\n if (includes(contentTypes, 'video/*') || (includes(contentTypes, 'video') && isMobileType)) {\n isValid = isVideoFile(filename);\n // If one of the content type chosen is video/* and user uploads video it is valid file\n if (isValid) {\n return isValid;\n }\n }\n /*content type and the uploaded file extension should be same*/\n if (includes(contentTypes, '.' + toLower(extensionName))) {\n isValid = true;\n }\n return isValid;\n }\n\n /* this return the array of files which are having the file size not more than maxfilesize and filters based on contenttype */\n getValidFiles($files) {\n const validFiles = [];\n const errorFiles = [];\n const MAXFILEUPLOAD_SIZE = parseFloat(this.maxfilesize) * this.FILESIZE_MB || this.FILESIZE_MB;\n const MAX_FILE_UPLOAD_FORMATTED_SIZE = (this.maxfilesize || '1') + 'MB';\n\n // if contenttype is files for mobile projects.\n if (this.chooseFilter === this.DEVICE_CONTENTTYPES.FILES) {\n this.chooseFilter = '';\n }\n\n forEach($files, (file) => {\n /* check for the file content type before uploading */\n if (!this.isValidFile(file.name, this.chooseFilter, this.getFileExtension(file.name), this._isMobileType)) {\n const msg = `${this.appLocale.LABEL_FILE_EXTENTION_VALIDATION_MESSAGE} ${this.chooseFilter}`;\n this.handleErrorFiles('INVALID_FILE_EXTENSION', msg, file, errorFiles);\n return;\n }\n if (file.size > MAXFILEUPLOAD_SIZE) {\n const msg = `${this.appLocale.LABEL_FILE_EXCEED_VALIDATION_MESSAGE} ${MAX_FILE_UPLOAD_FORMATTED_SIZE}`;\n this.handleErrorFiles('INVALID_FILE_SIZE', msg, file, errorFiles);\n return;\n }\n validFiles.push(file);\n });\n return {\n validFiles: validFiles,\n errorFiles: errorFiles\n };\n }\n\n handleErrorFiles(key, msg, file, errorFiles) {\n // Check whether the error callback exist or not. If it exists then dont show taoster message\n if (!this.hasEventCallback('error')) {\n this.app.notifyApp(msg, 'Error');\n }\n const error = {\n key: key,\n message: msg\n };\n file.error = error;\n errorFiles.push(file);\n }\n\n /*Overwrite the caption only if they are default*/\n getCaption(caption, isMultiple, isMobileType) {\n if (includes(this.DEFAULT_CAPTIONS, caption)) {\n return isMultiple && !isMobileType ? this.DEFAULT_CAPTIONS.MULTIPLE_SELECT : this.DEFAULT_CAPTIONS.SELECT;\n }\n return caption;\n }\n\n uploadUrl = 'services';\n\n /* change server path based on user option */\n changeServerUploadPath(path) {\n this.selectedUploadTypePath = path;\n }\n\n /* this function returns the fileextension */\n getFileExtension(fileName) {\n if (fileName && includes(fileName, '.')) {\n return fileName.substring(fileName.lastIndexOf('.') + 1);\n }\n return 'file';\n }\n\n /**\n * Calls select Event\n * @param $event\n * @param $files\n */\n onSelectEventCall($event, $files) {\n $files.forEach(file => {\n file.uniqueId = this.idGenerator.nextUid();\n })\n this.selectedFiles = $files;\n this.uploadedFiles = this.multiple ? [...this.uploadedFiles, ...$files] : $files;\n setTimeout(() => {\n this.invokeEventCallback('select', {\n $event: $.extend($event.$files || {}, $files),\n selectedFiles: $files\n });\n });\n }\n\n onFileElemClick($event) {\n this.highlightDropArea = true;\n\n //The file upload widget value should be set to null to reupload the same file.\n this.$element.find('.file-input')[0].value = null;\n $event.stopPropagation();\n\n // MEMORY LEAK FIX: Use stored bound function reference\n // when the filepicker is not there on the window, remove the dropzone highlight\n window.addEventListener('focus', this.boundDisableDropZone);\n }\n\n disableDropZone() {\n this.highlightDropArea = false;\n // MEMORY LEAK FIX: Remove using stored bound function reference\n window.removeEventListener('focus', this.boundDisableDropZone);\n }\n\n /*this function to clear the specified file. if argument is not provided, it clears the complete list */\n clear(fileObj) {\n this.selectedFiles = (fileObj) ? this.clearFile(this.selectedFiles, fileObj) : [];\n this.uploadedFiles = (fileObj) ? this.clearFile(this.uploadedFiles, fileObj) : [];\n }\n\n private clearFile(files, fileObj) {\n return files.filter((file) => file?._response?.fileName !== fileObj?._response?.fileName || file?.name !== fileObj?.name || file !== fileObj);\n }\n\n /*this function to set the class names for clear icon */\n setClearIconClass(classValue) {\n this.cleariconclass = classValue;\n }\n /*this function to set the hint for clear icon */\n setClearIconHint(hint) {\n this.cleariconhint = hint;\n }\n\n\n /*this function to append upload status dom elements to widget */\n onFileSelect($event, $files) {\n let beforeSelectVal;\n const files = this.getValidFiles($files);\n $files = files.validFiles;\n\n // If the user has previously tried uploading folders using drop, and then uploading using click method we clear the folders dom\n if ($event.type === \"change\") {\n this.selectedFolders = [];\n }\n\n // Trigger error callback event if any invalid file found.\n if (!isEmpty(files.errorFiles)) {\n this.invokeEventCallback('error', {\n $event,\n files: files.errorFiles\n });\n }\n\n // Make call if there are valid files else no call is made\n if ($files.length) {\n // EVENT: ON_BEFORE_SELECT\n beforeSelectVal = this.invokeEventCallback('beforeselect', {\n $event: $.extend($event.$files || {}, $files),\n files: $files\n });\n if (this.datasource) {\n if(!this.uploadProgressSubscription) {\n this.progressObservable = new Subject();\n this.datasource._progressObservable = this.progressObservable;\n this.uploadProgressSubscription = this.datasource._progressObservable.asObservable().subscribe((progressObj) => {\n forEach(this.uploadedFiles, (file) => {\n if (file.name === progressObj.fileName && file.uniqueId === progressObj.uniqueId) {\n file.progress = progressObj.progress;\n if (file.progress === 100) {\n file.status = 'success';\n } else {\n file.status = progressObj.status;\n if (progressObj.errMsg) {\n file.errMsg = progressObj.errMsg;\n this.invokeEventCallback('error', {\n $event,\n files: file\n });\n }\n }\n }\n });\n });\n }\n } else {\n this.selectedFiles = $files;\n }\n if (beforeSelectVal !== false) {\n // EVENT: ON_SELECT\n this.onSelectEventCall($event, $files);\n }\n }\n }\n\n onFileDelete($event, file) {\n if(!file) {\n return;\n }\n\n const beforeDeleteVal = this.invokeEventCallback('beforedelete', { $event: file });\n\n if (beforeDeleteVal !== false) {\n this.dialogService.showAppConfirmDialog({\n title: \"Delete file\",\n message: \"Are you sure you want to delete this file?\",\n oktext: \"Ok\",\n canceltext: \"Cancel\",\n onOk: () => {\n if (this.deletedatasource) {\n this.deletedatasource.setInput('file', file._response.fileName || file.name);\n\n if(!this.deleteProgressSubscription) {\n this.deleteFileObservable = new Subject();\n this.deletedatasource._deleteFileObservable = this.deleteFileObservable;\n this.deletedatasource._deleteFileObservable.asObservable().subscribe((response) => {\n if(response.status === \"success\") {\n this.selectedFiles = this.selectedFiles.filter((fileObj) => file !== fileObj) || [];\n this.uploadedFiles = this.uploadedFiles.filter((fileObj) => file !== fileObj) || [];\n }\n });\n }\n }\n this.invokeEventCallback('delete', { $event: file });\n this.dialogService.closeAppConfirmDialog();\n },\n onCancel: () => {\n this.dialogService.closeAppConfirmDialog();\n },\n onOpen: () => {\n $('.cancel-action').focus();\n }\n });\n }\n }\n\n // Prevent default behavior (Prevent file from being opened)\n dragOverHandler($event) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n // Get the file data if it exists and call the onFileSelect function\n onFileDrop($event) {\n $event.preventDefault();\n let listOfFiles = [];\n this.selectedFolders = [];\n const filesData = $event.dataTransfer.items;\n if (filesData.length > 0) {\n // Use DataTransferItemList interface to access the file(s)\n for (var i = 0; i < filesData.length; i++) {\n // Get all the files and push them into an array\n if (filesData[i].webkitGetAsEntry().isFile) {\n listOfFiles.push(filesData[i].getAsFile());\n }\n // If a selected item is directory push the folder element into an array and display error message by adding to dom\n else if(filesData[i].webkitGetAsEntry().isDirectory) {\n this.selectedFolders.push(filesData[i].getAsFile());\n }\n }\n this.onFileSelect($event, listOfFiles);\n }\n }\n\n dragOverCb(e) {\n e.preventDefault();\n $(this.nativeElement).find('#dropzone').addClass('highlight-drop-box');\n }\n\n dropCb() {\n $(this.nativeElement).find('#dropzone').removeClass('highlight-drop-box');\n }\n\n // this function triggers file select window, when clicked anywhere on the file upload widget in case of multi select\n triggerFileSelect() {\n this.$element.find('.file-input').trigger('click');\n }\n\n /**\n * Aborts a file upload request\n * @param $file, the file for which the request is to be aborted\n */\n abortFileUpload($file) {\n this.datasource.execute(DataSource.Operation.CANCEL, $file);\n }\n\n isMimeType(file: string) {\n return (this.defaultAllowedExtensions.includes('image/*') && isImageFile(file))\n || (this.defaultAllowedExtensions.includes('audio/*') && isAudioFile(file))\n || (this.defaultAllowedExtensions.includes('video/*') && isVideoFile(file));\n }\n\n /* Define the property change handler. This function will be triggered when there is a change in the widget property */\n onPropertyChange(key, nv, ov) {\n /*Monitoring changes for styles or properties and accordingly handling respective changes.*/\n switch (key) {\n case 'uploadpath':\n // TODO Srinivas: why do we need uploadpath\n this.changeServerUploadPath(nv);\n break;\n case 'contenttype':\n if (this.defaultAllowedExtensions.includes('*/*')) {\n this.chooseFilter = nv.split(' ').join(',')\n } else {\n this.chooseFilter = nv.split(' ').filter(item => this.defaultAllowedExtensions.includes(item) || this.isMimeType(item)).join(',');\n if (isEmpty(this.chooseFilter)) {\n this.chooseFilter = this.defaultAllowedExtensions;\n }\n }\n\n break;\n case 'multiple':\n this.formName = this.name + (this.multiple ? '-multiple-fileupload' : '-single-fileupload');\n this.caption = this.getCaption(this.caption, this.multiple, this._isMobileType);\n break;\n case 'fileuploadmessage':\n this.fileUploadMessage = nv;\n }\n\n super.onPropertyChange(key, nv, ov);\n }\n\n constructor(inj: Injector, private app: App, @Attribute('select.event') public onSelectEvt, private dialogService: AbstractDialogService, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n // styler(this.nativeElement, this);\n }\n\n ngOnInit() {\n super.ngOnInit();\n \n // MEMORY LEAK FIX: Store bound function references for proper removal\n this.boundDragOverCb = this.dragOverCb.bind(this);\n this.boundDropCb = this.dropCb.bind(this);\n this.boundDisableDropZone = this.disableDropZone.bind(this);\n \n // adding, dragover and drop on the document as when file is dragged on to the page highlight the dropzones and remove highlight on file drop\n document.addEventListener('dragover', this.boundDragOverCb);\n document.addEventListener('drop', this.boundDropCb);\n\n // adding mouseleave evnt to remove highlight when file is dropped outside the window\n document.addEventListener('mouseleave', this.boundDropCb);\n }\n\n ngAfterViewInit() {\n styler( this.nativeElement.querySelector('.app-button, .drop-box'), this);\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Remove using stored bound function references\n if (this.boundDragOverCb) {\n document.removeEventListener('dragover', this.boundDragOverCb);\n this.boundDragOverCb = null;\n }\n if (this.boundDropCb) {\n document.removeEventListener('drop', this.boundDropCb);\n document.removeEventListener('mouseleave', this.boundDropCb);\n this.boundDropCb = null;\n }\n if (this.boundDisableDropZone) {\n window.removeEventListener('focus', this.boundDisableDropZone);\n this.boundDisableDropZone = null;\n }\n \n super.ngOnDestroy();\n\n const subscriptions = [this.uploadProgressSubscription, this.deleteProgressSubscription];\n subscriptions.forEach(subscription => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n }\n}\n","<div class=\"app-fileupload\" init-widget>\n <!-- drag and drop files UI in web -->\n @if (!_isMobileType && multiple) {\n <div class=\"app-multi-file-upload\">\n <div id=\"dropzone\" class=\"drop-box\" (click)=\"triggerFileSelect()\" [ngClass]=\"{'highlight-drop-box' : highlightDropArea}\" (dragover)=\"dragOverHandler($event);\" (drop)=\"onFileDrop($event);\">\n <i class=\"{{iconclass}}\"></i>\n <div class=\"message\">\n <label [innerHtml]=\"caption\" class=\"upload-label\"></label>\n <form class=\"form-horizontal\" name=\"{{formName}}\">\n @if (multiple) {\n <input class=\"file-input\" [attr.aria-label]=\"hint || 'File selection field'\" type=\"file\" name=\"files\" [disabled]=\"disabled\" [accept]=\"chooseFilter\" (click)=\"onFileElemClick($event)\" (change)=\"onFileSelect($event, $event.target.files)\" multiple >\n }\n <a class=\"app-anchor upload-label\" href=\"javascript:void(0);\">{{ fileUploadMessage }}</a>\n </form>\n @if (chooseFilter) {\n <label [innerHtml]=\"chooseFilter + ' only '\" class=\"upload-extensions\"></label>\n }\n @if (chooseFilter && maxfilesize) {\n <span class=\"upload-extensions\"> . </span>\n }\n @if (maxfilesize) {\n <label [innerHtml]=\"maxfilesize + 'MB max'\" class=\"upload-extensions\"></label>\n }\n </div>\n </div>\n </div>\n }\n <!-- single file upload in web and single , multiple file upload UI in mobile runmode -->\n @if ((!multiple || _isMobileType)) {\n <div class=\"app-single-file-upload\">\n <div class=\"app-button-wrapper\">\n <form class=\"form-horizontal\" name=\"{{formName}}\">\n <!-- support for file upload in Mobileapp in its runmode (Web) -->\n @if (multiple) {\n <input (change)=\"onFileSelect($event, $event.target.files)\" (click)=\"onFileElemClick($event)\"\n [accept]=\"chooseFilter\" [attr.aria-label]=\"arialabel || 'File selection field'\" [disabled]=\"disabled\" class=\"file-input\"\n multiple name=\"files\" type=\"file\">\n }\n @if (!multiple) {\n <input (change)=\"onFileSelect($event, $event.target.files)\" (click)=\"onFileElemClick($event)\"\n [accept]=\"chooseFilter\" [attr.aria-label]=\"arialabel || 'File selection field'\" [disabled]=\"disabled\" class=\"file-input\"\n name=\"files\" type=\"file\">\n }\n <button id=\"dropzone\" focus-target class=\"app-button btn btn-default\" [ngClass]=\"{'highlight-drop-box' : highlightDropArea}\">\n <i class=\"{{iconclass}}\" aria-hidden=\"true\"></i>\n <span class=\"caption\" [innerHTML]=\"caption\"></span>\n </button>\n </form>\n </div>\n <div class=\"app-files-upload-status single\"></div>\n </div>\n }\n <!-- list of selectedfiles UI -->\n @if (uploadedFiles.length > 0) {\n <ul class=\"list-group file-upload\" [ngStyle]=\"{height: filelistheight, overflow: overflow}\"\n tabindex=\"0\">\n @for (ft of uploadedFiles; track ft) {\n @if (ft.status !== 'abort') {\n <li class=\"list-group-item file-upload-status\" tabindex=\"0\">\n <div class=\"media upload-file-list\">\n <div class=\"media-left media-middle file-icon {{getFileExtension(ft.name) | fileIconClass}}\" title=\"{{getFileExtension(ft.name)}}\"></div>\n <div class=\"media-body media-middle file-details\">\n <p class=\"uploaddetails col-md-3\">\n <span class=\"upload-title\">{{ ft.storageName || ft.name }}</span>\n @if (ft.status === 'success' && (!datasource || (datasource && ft._response?.success))) {\n <span\n class=\"status-icon {{ft.status | stateClass }}\"></span>\n }\n <br/>\n @if (ft.fileLength !== 0) {\n <span class=\"filesize\">{{ft.size | filesize:0}}</span>\n }\n @if (ft.status === 'error') {\n <span\n class=\"status-icon {{ft.status | stateClass }}\"\n title=\"{{ft.errMsg || this.appLocale.MESSAGE_FILE_UPLOAD_FAILED}}\"></span>\n }\n @if (ft.status === 'error') {\n <span class=\"error-message\">Upload Failed</span>\n }\n </p>\n @if (ft.status === 'onProgress' || showprogressbar) {\n <div\n class=\"progress col-md-7 upload-progress\">\n <div [ngClass]=\"ft.status === 'error' ? 'progress-bar-danger' : 'progress-bar-info'\"\n [ngStyle]=\"{width: (ft.progress +'%')}\"\n class=\"progress-bar progress-bar-striped\"></div>\n </div>\n }\n @if ((ft.status === 'onProgress' || showprogressbar && showprogressbarpercentage) && ft.progress ) {\n <div\n class=\"col-md-1 upload-progress-percentage\">{{ ft.progress + '%' }}\n </div>\n }\n </div>\n @if (ft.status === 'onProgress' || ft.status === 'queued') {\n <div class=\"media-right media-middle\">\n <a href=\"javascript:void(0)\" class=\"btn btn-transparent file-upload-stop\" type=\"button\"\n (click)=\"abortFileUpload(ft)\">\n <i class=\"wi wi-close\"></i>\n </a>\n </div>\n }\n <div class=\"media-right media-middle\">\n @if (cleariconclass !== '' && ft.status !== 'onProgress') {\n <a href=\"javascript:void(0)\" (click)=\"clear(ft)\"\n class=\"btn btn-transparent btn-default status-icon\" title=\"{{cleariconhint}}\" type=\"button\">\n <i class=\"{{cleariconclass}}\"></i>\n </a>\n }\n </div>\n @if (ft.status === 'success' && (!datasource || (datasource && ft._response?.success))) {\n <div class=\"media-right media-middle\">\n <a href=\"javascript:void(0)\" (click)=\"onFileDelete($event, ft)\"\n class=\"btn btn-transparent btn-default status-icon\" title=\"{{deleteiconhint}}\" type=\"button\">\n <i class=\"wi wi-delete\"></i>\n </a>\n </div>\n }\n </div>\n </li>\n }\n }\n </ul>\n }\n <!-- list of selectedfolders UI to show the error in title -->\n @if (selectedFolders.length > 0) {\n <ul class=\"list-group file-upload\" [ngStyle]=\"{height: filelistheight, overflow: overflow}\" title=\"{{this.appLocale.MESSAGE_FOLDER_UPLOADS_NOT_ALLOWED}}\" >\n @for (ft of selectedFolders; track ft) {\n <li class=\"list-group-item file-upload-status\">\n <div class=\"media upload-file-list\">\n <div class=\"media-left media-middle file-icon fa fa-folder-o\"></div>\n <div class=\"media-body media-middle file-details\">\n <p class=\"uploaddetails\">\n <label class=\"upload-title\">{{ft.name}}</label><br/>\n </p>\n </div>\n <div class=\"media-right media-middle\" >\n <span class=\"status-icon wi wi-cancel text-danger\"></span>\n </div>\n </div>\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -50,7 +50,9 @@
50
50
  ['showcount', base.PROP_BOOLEAN],
51
51
  ['showindevice', { displayType: 'inline-block', value: 'all', ...base.PROP_STRING }],
52
52
  ['tabindex', { value: 0, ...base.PROP_NUMBER }],
53
- ['usekeys', base.PROP_BOOLEAN]
53
+ ['usekeys', base.PROP_BOOLEAN],
54
+ ['hint', base.PROP_STRING],
55
+ ['layout', base.PROP_STRING]
54
56
  ]);
55
57
  const registerProps = () => {
56
58
  base.register('wm-radioset', radiosetProps);
@@ -106,6 +108,9 @@
106
108
  if (key === 'tabindex') {
107
109
  return;
108
110
  }
111
+ else if (key === 'layout') {
112
+ this.handleLayout(nv);
113
+ }
109
114
  if (key === 'itemsperrow') {
110
115
  core.setListClass(this);
111
116
  }
@@ -113,6 +118,13 @@
113
118
  super.onPropertyChange(key, nv, ov);
114
119
  }
115
120
  }
121
+ handleLayout(layout) {
122
+ const direction = layout === 'vertical' ? 'column' : 'row';
123
+ this.$element.css({
124
+ display: 'flex',
125
+ flexDirection: direction
126
+ });
127
+ }
116
128
  ngOnDestroy() {
117
129
  // MEMORY LEAK FIX: Remove all event listeners
118
130
  if (this.eventListeners && this.eventListeners.size > 0) {