@sapphire-ion/framework 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/lib/classes/comparison/comparison-operator.mjs +18 -0
- package/esm2022/lib/classes/comparison/comparison-value-type.mjs +25 -0
- package/esm2022/lib/classes/comparison/comparison.mjs +41 -0
- package/esm2022/lib/classes/comparison/properties/bool-property.mjs +15 -0
- package/esm2022/lib/classes/comparison/properties/date-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/enum-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +12 -0
- package/esm2022/lib/classes/comparison/properties/int-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/long-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/string-property.mjs +15 -0
- package/esm2022/lib/classes/comparison/properties/time-property.mjs +27 -0
- package/esm2022/lib/classes/credentials.mjs +2 -0
- package/esm2022/lib/classes/environment.mjs +32 -0
- package/esm2022/lib/classes/filters/view-filtros.mjs +18 -0
- package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +10 -0
- package/esm2022/lib/classes/inputs/table-field.mjs +63 -0
- package/esm2022/lib/classes/page-option.mjs +2 -0
- package/esm2022/lib/classes/routes/default-routing-factory.mjs +23 -0
- package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +22 -0
- package/esm2022/lib/classes/routes/route-data.mjs +9 -0
- package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +18 -0
- package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +15 -0
- package/esm2022/lib/components/carousel/carousel.component.mjs +79 -0
- package/esm2022/lib/components/carousel/carousel.module.mjs +31 -0
- package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +16 -0
- package/esm2022/lib/components/content-block/content-block.component.mjs +27 -0
- package/esm2022/lib/components/default/default-list/abstract-list.mjs +49 -0
- package/esm2022/lib/components/default/default-list/default-list.component.mjs +94 -0
- package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +98 -0
- package/esm2022/lib/components/default/default-list/list.mjs +110 -0
- package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +123 -0
- package/esm2022/lib/components/default/default-table/default-table.component.mjs +206 -0
- package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +182 -0
- package/esm2022/lib/components/default/default-view/abstract-view.mjs +18 -0
- package/esm2022/lib/components/default/default-view/default-view.component.mjs +51 -0
- package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +72 -0
- package/esm2022/lib/components/default/default-view/view.mjs +170 -0
- package/esm2022/lib/components/default/default.module.mjs +87 -0
- package/esm2022/lib/components/default-page/default.page.mjs +73 -0
- package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +60 -0
- package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +31 -0
- package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +15 -0
- package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +34 -0
- package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +49 -0
- package/esm2022/lib/components/drawer/drawer.component.mjs +117 -0
- package/esm2022/lib/components/drawer/menu.mjs +15 -0
- package/esm2022/lib/components/filter/filter.component.mjs +124 -0
- package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +17 -0
- package/esm2022/lib/components/image/image.component.mjs +91 -0
- package/esm2022/lib/components/info-popover/info-popover.component.mjs +91 -0
- package/esm2022/lib/components/inputs/custom-input.mjs +77 -0
- package/esm2022/lib/components/inputs/custom-signal-input.mjs +74 -0
- package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +43 -0
- package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +16 -0
- package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +487 -0
- package/esm2022/lib/components/inputs/input-configuration.mjs +2 -0
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +93 -0
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +6 -0
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +119 -0
- package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +8 -0
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +269 -0
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +45 -0
- package/esm2022/lib/components/inputs/input-default-configurations.mjs +14 -0
- package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +91 -0
- package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +128 -0
- package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +11 -0
- package/esm2022/lib/components/inputs/input-loading/input-loading.component.mjs +16 -0
- package/esm2022/lib/components/inputs/input-provider-factory.mjs +15 -0
- package/esm2022/lib/components/inputs/input-select/ISelect.mjs +11 -0
- package/esm2022/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.mjs +42 -0
- package/esm2022/lib/components/inputs/input-select/input-select-option/input-select-option.component.mjs +46 -0
- package/esm2022/lib/components/inputs/input-select/input-select-template.directive.mjs +16 -0
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +322 -0
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +164 -0
- package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +50 -0
- package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +18 -0
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +47 -0
- package/esm2022/lib/components/inputs/input-type.mjs +18 -0
- package/esm2022/lib/components/inputs/input-validators.mjs +90 -0
- package/esm2022/lib/components/inputs/inputs.module.mjs +101 -0
- package/esm2022/lib/components/loading/loading.component.mjs +34 -0
- package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +52 -0
- package/esm2022/lib/components/login/login.component.mjs +93 -0
- package/esm2022/lib/components/main-content/main-content.component.mjs +62 -0
- package/esm2022/lib/components/stepper/step/step.component.mjs +43 -0
- package/esm2022/lib/components/stepper/stepper.component.mjs +36 -0
- package/esm2022/lib/components/stepper/stepper.module.mjs +25 -0
- package/esm2022/lib/components/tabs/tab/tab.component.mjs +41 -0
- package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +56 -0
- package/esm2022/lib/components/tabs/tabs.module.mjs +22 -0
- package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +51 -0
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +21 -0
- package/esm2022/lib/core.module.mjs +29 -0
- package/esm2022/lib/directives/ng-var.directive.mjs +29 -0
- package/esm2022/lib/guards/auth.guard.mjs +26 -0
- package/esm2022/lib/guards/error.interceptor.mjs +106 -0
- package/esm2022/lib/guards/token.interceptor.mjs +25 -0
- package/esm2022/lib/index.mjs +172 -0
- package/esm2022/lib/pipes/secure.pipe.mjs +42 -0
- package/esm2022/lib/services/auth.service.mjs +149 -0
- package/esm2022/lib/services/environment.service.mjs +26 -0
- package/esm2022/lib/services/generics.service.mjs +84 -0
- package/esm2022/lib/services/route/route.cache.service.mjs +15 -0
- package/esm2022/lib/services/route/route.provider.service.mjs +42 -0
- package/esm2022/lib/services/usuario.service.mjs +49 -0
- package/esm2022/lib/services/utils.service.mjs +149 -0
- package/esm2022/lib/services/web/api-url-provider.service.mjs +29 -0
- package/esm2022/lib/services/web/http.ativo.service.mjs +55 -0
- package/esm2022/lib/services/web/http.service.mjs +175 -0
- package/esm2022/lib/services/web/storage.service.mjs +115 -0
- package/esm2022/public-api.mjs +5 -0
- package/esm2022/sapphire-ion-framework.mjs +5 -0
- package/fesm2022/sapphire-ion-framework.mjs +6080 -0
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/classes/comparison/comparison-operator.d.ts +9 -0
- package/lib/classes/comparison/comparison-value-type.d.ts +23 -0
- package/lib/classes/comparison/comparison.d.ts +25 -0
- package/lib/classes/comparison/properties/bool-property.d.ts +7 -0
- package/lib/classes/comparison/properties/date-property.d.ts +11 -0
- package/lib/classes/comparison/properties/datetime-property.d.ts +11 -0
- package/lib/classes/comparison/properties/decimal-property.d.ts +11 -0
- package/lib/classes/comparison/properties/enum-property.d.ts +11 -0
- package/lib/classes/comparison/properties/implicit-property.d.ts +6 -0
- package/lib/classes/comparison/properties/int-property.d.ts +11 -0
- package/lib/classes/comparison/properties/long-property.d.ts +11 -0
- package/lib/classes/comparison/properties/string-property.d.ts +7 -0
- package/lib/classes/comparison/properties/time-property.d.ts +11 -0
- package/lib/classes/credentials.d.ts +5 -0
- package/lib/classes/environment.d.ts +13 -0
- package/lib/classes/filters/view-filtros.d.ts +10 -0
- package/lib/classes/inputs/table-field-form-builder.d.ts +5 -0
- package/lib/classes/inputs/table-field.d.ts +19 -0
- package/lib/classes/page-option.d.ts +7 -0
- package/lib/classes/routes/default-routing-factory.d.ts +8 -0
- package/lib/classes/routes/id-preloader-configuration.d.ts +28 -0
- package/lib/classes/routes/route-data.d.ts +5 -0
- package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +10 -0
- package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +9 -0
- package/lib/components/carousel/carousel.component.d.ts +32 -0
- package/lib/components/carousel/carousel.module.d.ts +12 -0
- package/lib/components/carousel/i-carousel-item.component.d.ts +9 -0
- package/lib/components/content-block/content-block.component.d.ts +15 -0
- package/lib/components/default/default-list/abstract-list.d.ts +21 -0
- package/lib/components/default/default-list/default-list.component.d.ts +42 -0
- package/lib/components/default/default-list/header-list/header-list.component.d.ts +45 -0
- package/lib/components/default/default-list/list.d.ts +37 -0
- package/lib/components/default/default-pagination/default-pagination.component.d.ts +36 -0
- package/lib/components/default/default-table/default-table.component.d.ts +71 -0
- package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +20 -0
- package/lib/components/default/default-view/abstract-view.d.ts +16 -0
- package/lib/components/default/default-view/default-view.component.d.ts +26 -0
- package/lib/components/default/default-view/header-view/header-view.component.d.ts +25 -0
- package/lib/components/default/default-view/view.d.ts +55 -0
- package/lib/components/default/default.module.d.ts +28 -0
- package/lib/components/default-page/default.page.d.ts +35 -0
- package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +14 -0
- package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +10 -0
- package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +9 -0
- package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +13 -0
- package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +22 -0
- package/lib/components/drawer/drawer.component.d.ts +23 -0
- package/lib/components/drawer/menu.d.ts +9 -0
- package/lib/components/filter/filter.component.d.ts +29 -0
- package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +8 -0
- package/lib/components/image/image.component.d.ts +23 -0
- package/lib/components/info-popover/info-popover.component.d.ts +15 -0
- package/lib/components/inputs/custom-input.d.ts +36 -0
- package/lib/components/inputs/custom-signal-input.d.ts +38 -0
- package/lib/components/inputs/input-bool/input-bool.component.d.ts +19 -0
- package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +17 -0
- package/lib/components/inputs/input-color/input-color.component.d.ts +80 -0
- package/lib/components/inputs/input-configuration.d.ts +8 -0
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +24 -0
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +5 -0
- package/lib/components/inputs/input-date/input-date.component.d.ts +30 -0
- package/lib/components/inputs/input-date/input-date.configuration.d.ts +7 -0
- package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +41 -0
- package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +25 -0
- package/lib/components/inputs/input-default-configurations.d.ts +13 -0
- package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +36 -0
- package/lib/components/inputs/input-file/input-file.component.d.ts +39 -0
- package/lib/components/inputs/input-file/input-file.configuration.d.ts +11 -0
- package/lib/components/inputs/input-loading/input-loading.component.d.ts +7 -0
- package/lib/components/inputs/input-provider-factory.d.ts +4 -0
- package/lib/components/inputs/input-select/ISelect.d.ts +21 -0
- package/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.d.ts +18 -0
- package/lib/components/inputs/input-select/input-select-option/input-select-option.component.d.ts +24 -0
- package/lib/components/inputs/input-select/input-select-template.directive.d.ts +8 -0
- package/lib/components/inputs/input-select/input-select.component.d.ts +66 -0
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +87 -0
- package/lib/components/inputs/input-string/input-string.component.d.ts +19 -0
- package/lib/components/inputs/input-string/input-string.configuration.d.ts +14 -0
- package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +18 -0
- package/lib/components/inputs/input-type.d.ts +16 -0
- package/lib/components/inputs/input-validators.d.ts +19 -0
- package/lib/components/inputs/inputs.module.d.ts +28 -0
- package/lib/components/loading/loading.component.d.ts +18 -0
- package/lib/components/login/login-admin/login-admin.component.d.ts +20 -0
- package/lib/components/login/login.component.d.ts +28 -0
- package/lib/components/main-content/main-content.component.d.ts +17 -0
- package/lib/components/stepper/step/step.component.d.ts +15 -0
- package/lib/components/stepper/stepper.component.d.ts +17 -0
- package/lib/components/stepper/stepper.module.d.ts +10 -0
- package/lib/components/tabs/tab/tab.component.d.ts +19 -0
- package/lib/components/tabs/tabs/tabs.component.d.ts +18 -0
- package/lib/components/tabs/tabs.module.d.ts +12 -0
- package/lib/components/text-tooltip/text-tooltip.component.d.ts +16 -0
- package/lib/components/tooltip/tooltip.component.d.ts +7 -0
- package/lib/core.module.d.ts +11 -0
- package/lib/directives/ng-var.directive.d.ts +12 -0
- package/lib/guards/auth.guard.d.ts +11 -0
- package/lib/guards/error.interceptor.d.ts +32 -0
- package/lib/guards/token.interceptor.d.ts +11 -0
- package/lib/index.d.ts +108 -0
- package/lib/pipes/secure.pipe.d.ts +15 -0
- package/lib/services/auth.service.d.ts +47 -0
- package/lib/services/environment.service.d.ts +10 -0
- package/lib/services/generics.service.d.ts +22 -0
- package/lib/services/route/route.cache.service.d.ts +7 -0
- package/lib/services/route/route.provider.service.d.ts +13 -0
- package/lib/services/usuario.service.d.ts +21 -0
- package/lib/services/utils.service.d.ts +36 -0
- package/lib/services/web/api-url-provider.service.d.ts +13 -0
- package/lib/services/web/http.ativo.service.d.ts +31 -0
- package/lib/services/web/http.service.d.ts +51 -0
- package/lib/services/web/storage.service.d.ts +25 -0
- package/package.json +41 -0
- package/public-api.d.ts +1 -0
- package/themes/compiled-styles.scss +2291 -0
- package/themes/components/_inputs_new/input-string/input-string.component.scss +0 -0
- package/themes/components/_inputs_new/inputs.scss +15 -0
- package/themes/components/carousel/carousel-image/carousel-image.component.scss +0 -0
- package/themes/components/carousel/carousel-item/carousel-item.component.scss +0 -0
- package/themes/components/carousel/carousel.component.scss +9 -0
- package/themes/components/content-block/content-block.component.scss +0 -0
- package/themes/components/default/default-list/default-list.component.scss +0 -0
- package/themes/components/default/default-list/header-list/header-list.component.scss +0 -0
- package/themes/components/default/default-pagination/default-pagination.component.scss +22 -0
- package/themes/components/default/default-table/default-table.component.scss +33 -0
- package/themes/components/default/default-table/th-filter/th-filter.component.scss +24 -0
- package/themes/components/default/default-view/default-view.component.scss +5 -0
- package/themes/components/default/default-view/header-view/header-view.component.scss +7 -0
- package/themes/components/default-page/default.page.scss +4 -0
- package/themes/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +9 -0
- package/themes/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
- package/themes/components/drawer/drawer-group/drawer-group.component.scss +22 -0
- package/themes/components/drawer/drawer.component.scss +46 -0
- package/themes/components/filter/filter.component.scss +0 -0
- package/themes/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +19 -0
- package/themes/components/image/image.component.scss +0 -0
- package/themes/components/info-popover/info-popover.component.scss +3 -0
- package/themes/components/inputs/input-bool/input-bool.component.scss +14 -0
- package/themes/components/inputs/input-color/input-color.component.scss +48 -0
- package/themes/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss +0 -0
- package/themes/components/inputs/input-date/input-date.component.scss +41 -0
- package/themes/components/inputs/input-decimal/input-decimal.component.scss +44 -0
- package/themes/components/inputs/input-file/download-button/download-button.component.scss +3 -0
- package/themes/components/inputs/input-file/input-file.component.scss +3 -0
- package/themes/components/inputs/input-loading/input-loading.component.scss +0 -0
- package/themes/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.scss +0 -0
- package/themes/components/inputs/input-select/input-select-option/input-select-option.component.scss +0 -0
- package/themes/components/inputs/input-select/input-select.component.scss +28 -0
- package/themes/components/inputs/input-string/input-string.component.scss +0 -0
- package/themes/components/inputs/input-textarea/input-textarea.component.scss +0 -0
- package/themes/components/inputs/inputs.scss +67 -0
- package/themes/components/loading/loading.component.scss +0 -0
- package/themes/components/login/login-admin/login-admin.component.scss +3 -0
- package/themes/components/login/login.component.scss +40 -0
- package/themes/components/main-content/main-content.component.scss +9 -0
- package/themes/components/stepper/step/step.component.scss +48 -0
- package/themes/components/stepper/stepper.component.scss +0 -0
- package/themes/components/tabs/tab/tab.component.scss +0 -0
- package/themes/components/tabs/tabs/tabs.component.scss +23 -0
- package/themes/components/text-tooltip/text-tooltip.component.scss +0 -0
- package/themes/components/tooltip/tooltip.component.scss +23 -0
- package/themes/styles/components.scss +52 -0
- package/themes/styles/core.styles.scss +409 -0
- package/themes/styles/ionic/ion-action-sheet.scss +8 -0
- package/themes/styles/ionic/ion-alert.scss +9 -0
- package/themes/styles/ionic/ion-button.scss +3 -0
- package/themes/styles/ionic/ion-card.scss +3 -0
- package/themes/styles/ionic/ion-content.scss +3 -0
- package/themes/styles/ionic/ion-datetime.scss +6 -0
- package/themes/styles/ionic/ion-item.scss +10 -0
- package/themes/styles/ionic/ion-list.scss +4 -0
- package/themes/styles/ionic/ion-modal.scss +8 -0
- package/themes/styles/ionic/ion-popover.scss +31 -0
- package/themes/styles/ionic/ion-progress-bar.scss +3 -0
- package/themes/styles/ionic/ion-searchbar.scss +4 -0
- package/themes/styles/ionic/ion-toast.scss +14 -0
- package/themes/styles/ionic.scss +13 -0
- package/themes/styles/login-default.scss +87 -0
- package/themes/styles/mixins.scss +467 -0
- package/themes/styles/styles.scss +1 -0
- package/themes/styles/translucid.scss +21 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { Component, ElementRef, Host, HostListener, Input, Optional, SkipSelf } from '@angular/core';
|
|
2
|
+
import { ControlContainer } from '@angular/forms';
|
|
3
|
+
import { formatNumber } from '@angular/common';
|
|
4
|
+
import { InputCurrencyConfiguration, InputDecimalConfiguration, InputNumberConfiguration } from './input-decimal.configuration';
|
|
5
|
+
import { InputProviderFactory } from '../input-provider-factory';
|
|
6
|
+
import { Timeout } from '../../../services/utils.service';
|
|
7
|
+
import { CustomInput } from '../custom-input';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@angular/common";
|
|
11
|
+
import * as i3 from "@ionic/angular";
|
|
12
|
+
import * as i4 from "../input-loading/input-loading.component";
|
|
13
|
+
export class InputDecimalComponent extends CustomInput {
|
|
14
|
+
constructor(controlContainer, elementRef) {
|
|
15
|
+
super();
|
|
16
|
+
this.controlContainer = controlContainer;
|
|
17
|
+
this.elementRef = elementRef;
|
|
18
|
+
this.digitsInfo = "1.2-2";
|
|
19
|
+
this.altKey = false;
|
|
20
|
+
this.ctrlKey = false;
|
|
21
|
+
this.shiftKey = false;
|
|
22
|
+
this._model = 0;
|
|
23
|
+
}
|
|
24
|
+
async ngOnInit() {
|
|
25
|
+
super.ngOnInit();
|
|
26
|
+
this.HandleSelector();
|
|
27
|
+
this.setDivider();
|
|
28
|
+
}
|
|
29
|
+
setDigitsInfo() { this.digitsInfo = `1.${this.configuration.precision}-${this.configuration.precision}`; }
|
|
30
|
+
HandleSelector() {
|
|
31
|
+
const selector = this.elementRef.nativeElement.tagName.toLowerCase().split('-')[1];
|
|
32
|
+
if (selector == "number" && !this.configuration) {
|
|
33
|
+
this.configuration = new InputNumberConfiguration();
|
|
34
|
+
}
|
|
35
|
+
else if (selector == "decimal" && !this.configuration) {
|
|
36
|
+
this.configuration = new InputDecimalConfiguration();
|
|
37
|
+
}
|
|
38
|
+
else if (selector == "currency" && !this.configuration) {
|
|
39
|
+
this.configuration = new InputCurrencyConfiguration();
|
|
40
|
+
}
|
|
41
|
+
this.setDigitsInfo();
|
|
42
|
+
}
|
|
43
|
+
writeValue(value) { this._model = value; }
|
|
44
|
+
get model() {
|
|
45
|
+
var formated = formatNumber(this._model, "pt-BR", this.digitsInfo);
|
|
46
|
+
if (this.configuration.thousandSeparator) {
|
|
47
|
+
return formated;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return formated.replaceAll(thousandSeparator, '');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
set model(value) { this._model = value; this.propagateChange(this._model); }
|
|
54
|
+
//#region [ Event Handler ]
|
|
55
|
+
onKeyDown(event) {
|
|
56
|
+
this.eventType = 0;
|
|
57
|
+
this.event = event;
|
|
58
|
+
this.key = event.key;
|
|
59
|
+
this.altKey = this.event.altKey;
|
|
60
|
+
this.ctrlKey = this.event.ctrlKey;
|
|
61
|
+
this.shiftKey = this.event.shiftKey;
|
|
62
|
+
this.startPosition = event.target.selectionStart;
|
|
63
|
+
this.endPosition = event.target.selectionEnd;
|
|
64
|
+
this.value = event.target.value;
|
|
65
|
+
this.HandleBrowser();
|
|
66
|
+
}
|
|
67
|
+
onPaste(event) {
|
|
68
|
+
this.event.preventDefault();
|
|
69
|
+
let clipboardData = event.clipboardData || window['clipboardData'];
|
|
70
|
+
let pastedText = clipboardData.getData('text');
|
|
71
|
+
const s = pastedText.replaceAll('.', '').replaceAll(',', '.');
|
|
72
|
+
const n = Number(s);
|
|
73
|
+
if (Number(s) && isFinite(n)) {
|
|
74
|
+
this.model = n;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
}
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
}
|
|
80
|
+
HandleBrowser() {
|
|
81
|
+
this.atLeft = this.value.slice(0, this.startPosition);
|
|
82
|
+
this.atRight = this.value.slice(this.endPosition, this.value.length);
|
|
83
|
+
if (["-"].includes(this.key)) {
|
|
84
|
+
return this.HandleNegative();
|
|
85
|
+
}
|
|
86
|
+
else if (["V", "v"].includes(this.key) && this.ctrlKey) {
|
|
87
|
+
//@HostListener('paste', ['$event'])
|
|
88
|
+
}
|
|
89
|
+
else if (lstNumbers.includes(this.key)) {
|
|
90
|
+
return this.HandleNumber();
|
|
91
|
+
}
|
|
92
|
+
else if (lstEspecialCases.includes(this.key)) {
|
|
93
|
+
return this.HandleEspecial();
|
|
94
|
+
}
|
|
95
|
+
else if (["A", "a"].includes(this.key) && this.ctrlKey) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
else if (["C", "c"].includes(this.key) && this.ctrlKey) {
|
|
99
|
+
return this.HandleCopy();
|
|
100
|
+
}
|
|
101
|
+
else if (lstIgnoreNotPrevent.includes(this.key)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
else
|
|
105
|
+
this.event.preventDefault();
|
|
106
|
+
}
|
|
107
|
+
setDivider() {
|
|
108
|
+
var d = "1";
|
|
109
|
+
for (let i = 0; i < this.configuration.precision; i++) {
|
|
110
|
+
d += "0";
|
|
111
|
+
}
|
|
112
|
+
this.divider = Number(d);
|
|
113
|
+
}
|
|
114
|
+
async HandleNumber() {
|
|
115
|
+
this.event.preventDefault();
|
|
116
|
+
var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;
|
|
117
|
+
/** [ Remove decimalSeparator & thousandSeparator ] */
|
|
118
|
+
const f = this.atLeft + this.key + this.atRight;
|
|
119
|
+
const CurrentValue = this.SanitizeValue(f);
|
|
120
|
+
if (CurrentValue == this._model) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
if (CurrentValue > decimalMaxValue) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
//[ Handle Set Cursor Position]
|
|
127
|
+
this.model = CurrentValue;
|
|
128
|
+
const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;
|
|
129
|
+
//Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element
|
|
130
|
+
await Timeout(0);
|
|
131
|
+
this.event.target.setSelectionRange(newPos, newPos);
|
|
132
|
+
if (focusEnd) {
|
|
133
|
+
this.event.target.setSelectionRange(this.model.length, this.model.length);
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
async HandleNegative() {
|
|
138
|
+
this.event.preventDefault();
|
|
139
|
+
var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;
|
|
140
|
+
/** [ Remove decimalSeparator & thousandSeparator ] */
|
|
141
|
+
var f;
|
|
142
|
+
if (!this.atLeft.includes('-')) {
|
|
143
|
+
f = this.key + this.atLeft + this.atRight;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
f = (this.atLeft + this.atRight).replace('-', '');
|
|
147
|
+
}
|
|
148
|
+
if (f == "-") {
|
|
149
|
+
if (this.value.includes('-')) {
|
|
150
|
+
f = this.value.replace('-', '');
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
f = `-${this.value}`;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const CurrentValue = this.SanitizeValue(f);
|
|
157
|
+
if (CurrentValue == this._model) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
//[ Handle Set Cursor Position]
|
|
161
|
+
this.model = CurrentValue;
|
|
162
|
+
const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;
|
|
163
|
+
//Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element
|
|
164
|
+
await Timeout(0);
|
|
165
|
+
this.event.target.setSelectionRange(newPos, newPos);
|
|
166
|
+
if (focusEnd) {
|
|
167
|
+
this.event.target.setSelectionRange(this.model.length, this.model.length);
|
|
168
|
+
}
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
async HandleEspecial() {
|
|
172
|
+
this.event.preventDefault();
|
|
173
|
+
if (this.startPosition == this.endPosition) {
|
|
174
|
+
if (this.key == "Backspace") {
|
|
175
|
+
if (this.startPosition == this.endPosition && this.startPosition == 0) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
const previousChar = this.atLeft[this.atLeft.length - 1];
|
|
179
|
+
const isNumber = lstNumbers.includes(previousChar);
|
|
180
|
+
const f = this.atLeft.slice(0, this.atLeft.length - (isNumber ? 1 : 2)) + this.atRight;
|
|
181
|
+
const CurrentValue = this.SanitizeValue(f);
|
|
182
|
+
//[ Handle Set Cursor Position]
|
|
183
|
+
this.model = CurrentValue;
|
|
184
|
+
await Timeout(0);
|
|
185
|
+
this.event.target.setSelectionRange(this.startPosition, this.startPosition);
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
else if (this.key == "Delete") {
|
|
189
|
+
const nextChar = this.atRight[0];
|
|
190
|
+
const isNumber = lstNumbers.includes(nextChar);
|
|
191
|
+
const f = this.atLeft + this.atRight.slice(isNumber ? 1 : 2);
|
|
192
|
+
const CurrentValue = this.SanitizeValue(f);
|
|
193
|
+
//[ Handle Set Cursor Position]
|
|
194
|
+
this.model = CurrentValue;
|
|
195
|
+
var newPos = this.startPosition - 1;
|
|
196
|
+
if (newPos <= -1) {
|
|
197
|
+
newPos = 0;
|
|
198
|
+
}
|
|
199
|
+
await Timeout(0);
|
|
200
|
+
this.event.target.setSelectionRange(newPos, newPos);
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const f = this.atLeft + this.atRight;
|
|
206
|
+
const CurrentValue = this.SanitizeValue(f);
|
|
207
|
+
this.model = CurrentValue;
|
|
208
|
+
await Timeout(0);
|
|
209
|
+
this.event.target.setSelectionRange(this.model.length, this.model.length);
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async HandleCopy() {
|
|
214
|
+
//[ Not necessary, default behaviour might work ]
|
|
215
|
+
// this.event.preventDefault();
|
|
216
|
+
// var str = this.model;
|
|
217
|
+
// var lst = str.split('');
|
|
218
|
+
// lst.splice(this.endPosition, str.length - this.endPosition);
|
|
219
|
+
// lst.splice(0, this.startPosition)
|
|
220
|
+
// var copy = lst.join('').replaceAll(this.configuration.thousandSeparator, '').replace(this.configuration.decimalSeparator, '.');
|
|
221
|
+
// console.log(copy)
|
|
222
|
+
// Clipboard.write({string: copy}).catch(() => {
|
|
223
|
+
// navigator.clipboard.writeText(copy);
|
|
224
|
+
// });
|
|
225
|
+
}
|
|
226
|
+
SanitizeValue(f) {
|
|
227
|
+
var CurrentValue = Number(Sanitize(f)) / this.divider;
|
|
228
|
+
//[ Cancela se o valor for muito alto ]
|
|
229
|
+
if (CurrentValue >= decimalMaxValue) {
|
|
230
|
+
return this._model;
|
|
231
|
+
}
|
|
232
|
+
return CurrentValue;
|
|
233
|
+
}
|
|
234
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDecimalComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
235
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InputDecimalComponent, selector: "input-decimal, input-number, input-currency, inout-percentage", inputs: { configuration: "configuration" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, providers: InputProviderFactory.GetProvider(InputDecimalComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"relative flex\">\r\n <ion-item class=\"w-full shrink-0\" [ngClass]=\"{'required' : required}\" lines=\"none\">\r\n <ion-input\r\n class=\"default-transition\" [value]=\"model\" labelPlacement=\"stacked\"\r\n >\r\n <ion-text [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n <span *ngIf=\"configuration.prefix\" slot=\"start\">{{configuration.prefix}}</span>\r\n <span *ngIf=\"configuration.sufix\" slot=\"end\" >{{configuration.sufix}}</span>\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>", styles: ["ion-input{text-align:right}ion-item::part(native){transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}ion-card{border-width:1px 1px 2px 1px!important;border-color:color-mix(in srgb,var(--ion-color-dark) 50%,transparent 50%);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-style:solid;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ion-card.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 50%,transparent 50%)!important}ion-text.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}\n", ".on-hover{background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%)}.on-hover:hover{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input{margin:0;display:flex;height:100%;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%);border-bottom-color:var(--ion-color-medium);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-width:1px 1px 2px 1px;min-height:58px;max-height:58px;height:58px}ion-card.ion-card-input:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card.ion-card-input.disabled{background-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%)!important}ion-card.ion-card-input ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent}ion-text#label.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text#label:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}.on-focus{border-bottom-color:var(--ion-color-primary)}.focus-within\\:on-focus:focus-within{border-bottom-color:var(--ion-color-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "component", type: i4.InputLoadingComponent, selector: "input-loading", inputs: ["loading"] }] }); }
|
|
236
|
+
}
|
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDecimalComponent, decorators: [{
|
|
238
|
+
type: Component,
|
|
239
|
+
args: [{ selector: 'input-decimal, input-number, input-currency, inout-percentage', providers: InputProviderFactory.GetProvider(InputDecimalComponent), template: "<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"relative flex\">\r\n <ion-item class=\"w-full shrink-0\" [ngClass]=\"{'required' : required}\" lines=\"none\">\r\n <ion-input\r\n class=\"default-transition\" [value]=\"model\" labelPlacement=\"stacked\"\r\n >\r\n <ion-text [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n <span *ngIf=\"configuration.prefix\" slot=\"start\">{{configuration.prefix}}</span>\r\n <span *ngIf=\"configuration.sufix\" slot=\"end\" >{{configuration.sufix}}</span>\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>", styles: ["ion-input{text-align:right}ion-item::part(native){transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}ion-card{border-width:1px 1px 2px 1px!important;border-color:color-mix(in srgb,var(--ion-color-dark) 50%,transparent 50%);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-style:solid;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ion-card.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 50%,transparent 50%)!important}ion-text.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}\n", ".on-hover{background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%)}.on-hover:hover{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input{margin:0;display:flex;height:100%;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%);border-bottom-color:var(--ion-color-medium);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-width:1px 1px 2px 1px;min-height:58px;max-height:58px;height:58px}ion-card.ion-card-input:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card.ion-card-input.disabled{background-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%)!important}ion-card.ion-card-input ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent}ion-text#label.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text#label:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}.on-focus{border-bottom-color:var(--ion-color-primary)}.focus-within\\:on-focus:focus-within{border-bottom-color:var(--ion-color-primary)}\n"] }]
|
|
240
|
+
}], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
|
|
241
|
+
type: Optional
|
|
242
|
+
}, {
|
|
243
|
+
type: Host
|
|
244
|
+
}, {
|
|
245
|
+
type: SkipSelf
|
|
246
|
+
}] }, { type: i0.ElementRef }], propDecorators: { configuration: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}], onKeyDown: [{
|
|
249
|
+
type: HostListener,
|
|
250
|
+
args: ['keydown', ['$event']]
|
|
251
|
+
}], onPaste: [{
|
|
252
|
+
type: HostListener,
|
|
253
|
+
args: ['paste', ['$event']]
|
|
254
|
+
}] } });
|
|
255
|
+
const decimalMaxValue = 9_000_000_000_000.00;
|
|
256
|
+
const decimalSeparator = ",";
|
|
257
|
+
const thousandSeparator = ".";
|
|
258
|
+
const Sanitize = ((v) => {
|
|
259
|
+
return v.replaceAll(thousandSeparator, '')
|
|
260
|
+
.replace(decimalSeparator, '');
|
|
261
|
+
});
|
|
262
|
+
const lstNumbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
263
|
+
const lstIgnoreNotPrevent = [
|
|
264
|
+
"Tab", "CapsLock", "Shift", "Control", "Alt", "ArrowRight", "ArrowUp", "ArrowDown", "ArrowLeft"
|
|
265
|
+
];
|
|
266
|
+
const lstEspecialCases = [
|
|
267
|
+
"Backspace", "Delete"
|
|
268
|
+
];
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYXBwaGlyZS1pb24tZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtZGVjaW1hbC9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1kZWNpbWFsL2lucHV0LWRlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEksT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBUTlDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFtQjtJQUk1RCxZQUVXLGdCQUFrQyxFQUNsQyxVQUFzQjtRQUM3QixLQUFLLEVBQUUsQ0FBQztRQUZELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVVqQyxlQUFVLEdBQVcsT0FB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R0FBRyxFQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQztBQUM3RCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVztDQUNoRyxDQUFDO0FBQ0YsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixXQUFXLEVBQUUsUUFBUTtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24sIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVGltZW91dCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uL2N1c3RvbS1pbnB1dCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWRlY2ltYWwsIGlucHV0LW51bWJlciwgaW5wdXQtY3VycmVuY3ksIGlub3V0LXBlcmNlbnRhZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBJbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcihJbnB1dERlY2ltYWxDb21wb25lbnQpXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dERlY2ltYWxDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21JbnB1dDxudW1iZXI+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbjogSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiB8IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiB8IElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKClcclxuICAgIG92ZXJyaWRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBvdmVycmlkZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7IHN1cGVyKCk7IHRoaXMuX21vZGVsID0gMDsgfVxyXG5cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgdGhpcy5IYW5kbGVTZWxlY3RvcigpO1xyXG4gICAgdGhpcy5zZXREaXZpZGVyKCk7XHJcbiAgfVxyXG5cclxuICBkaWdpdHNJbmZvOiBzdHJpbmcgPSBcIjEuMi0yXCI7XHJcbiAgc2V0RGlnaXRzSW5mbygpOiB2b2lkIHsgdGhpcy5kaWdpdHNJbmZvID0gYDEuJHt0aGlzLmNvbmZpZ3VyYXRpb24ucHJlY2lzaW9ufS0ke3RoaXMuY29uZmlndXJhdGlvbi5wcmVjaXNpb259YDsgfVxyXG4gIEhhbmRsZVNlbGVjdG9yKCk6IHZvaWR7XHJcbiAgICBjb25zdCBzZWxlY3Rvcjogc3RyaW5nID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCctJylbMV07XHJcblxyXG4gICAgaWYoc2VsZWN0b3IgPT0gXCJudW1iZXJcIiAgICYmICF0aGlzLmNvbmZpZ3VyYXRpb24peyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uKCk7ICAgfSBlbHNlXHJcbiAgICBpZihzZWxlY3RvciA9PSBcImRlY2ltYWxcIiAgJiYgIXRoaXMuY29uZmlndXJhdGlvbil7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKCk7ICB9IGVsc2VcclxuICAgIGlmKHNlbGVjdG9yID09IFwiY3VycmVuY3lcIiAmJiAhdGhpcy5jb25maWd1cmF0aW9uKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uKCk7IH1cclxuICAgIHRoaXMuc2V0RGlnaXRzSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyKXsgdGhpcy5fbW9kZWwgPSB2YWx1ZTsgfVxyXG5cclxuICBvdmVycmlkZSBnZXQgbW9kZWwoKTogc3RyaW5nICAgICAgeyBcclxuICAgIHZhciBmb3JtYXRlZCA9IGZvcm1hdE51bWJlcih0aGlzLl9tb2RlbCwgXCJwdC1CUlwiLCB0aGlzLmRpZ2l0c0luZm8pO1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uLnRob3VzYW5kU2VwYXJhdG9yKXsgIFxyXG4gICAgICByZXR1cm4gZm9ybWF0ZWQ7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIGZvcm1hdGVkLnJlcGxhY2VBbGwodGhvdXNhbmRTZXBhcmF0b3IsICcnKVxyXG4gICAgfSBcclxuICB9XHJcbiAgb3ZlcnJpZGUgc2V0IG1vZGVsKHZhbHVlOiBudW1iZXIpIHsgdGhpcy5fbW9kZWwgPSB2YWx1ZTsgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fbW9kZWwpOyB9XHJcblxyXG4gIC8vI3JlZ2lvbiBbIEV2ZW50IEhhbmRsZXIgXVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gIG9uS2V5RG93bihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50VHlwZSA9IDA7XHJcbiAgICB0aGlzLmV2ZW50ID0gZXZlbnQ7XHJcbiAgICB0aGlzLmtleSAgID0gZXZlbnQua2V5O1xyXG4gICAgXHJcbiAgICB0aGlzLmFsdEtleSAgID0gdGhpcy5ldmVudC5hbHRLZXk7XHJcbiAgICB0aGlzLmN0cmxLZXkgID0gdGhpcy5ldmVudC5jdHJsS2V5O1xyXG4gICAgdGhpcy5zaGlmdEtleSA9IHRoaXMuZXZlbnQuc2hpZnRLZXk7XHJcblxyXG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5lbmRQb3NpdGlvbiAgID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZDtcclxuXHJcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG5cclxuICAgIHRoaXMuSGFuZGxlQnJvd3NlcigpO1xyXG4gIH1cclxuICBcclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgb25QYXN0ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBcclxuICAgIGxldCBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3dbJ2NsaXBib2FyZERhdGEnXTtcclxuICAgIGxldCBwYXN0ZWRUZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XHJcblxyXG4gICAgY29uc3QgcyA9IHBhc3RlZFRleHQucmVwbGFjZUFsbCgnLicsICcnKS5yZXBsYWNlQWxsKCcsJywgJy4nKTtcclxuICAgIGNvbnN0IG4gPSBOdW1iZXIocyk7XHJcblxyXG4gICAgaWYoTnVtYmVyKHMpICYmIGlzRmluaXRlKG4pKXsgXHJcbiAgICAgIHRoaXMubW9kZWwgPSBuO1xyXG4gICAgfSBlbHNle1xyXG5cclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBrZXk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgXHJcbiAgYWx0S2V5ICA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdHJsS2V5IDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNoaWZ0S2V5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHN0YXJ0UG9zaXRpb24gOiBudW1iZXI7XHJcbiAgZW5kUG9zaXRpb24gICA6IG51bWJlcjtcclxuXHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgZXZlbnQgICAgOiBhbnk7XHJcbiAgZXZlbnRUeXBlOiBudW1iZXI7XHJcbiAgXHJcbiAgYXRMZWZ0OiBzdHJpbmc7XHJcbiAgYXRSaWdodDogc3RyaW5nO1xyXG5cclxuICBIYW5kbGVCcm93c2VyKCl7XHJcbiAgICB0aGlzLmF0TGVmdCAgPSB0aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuc3RhcnRQb3NpdGlvbik7IFxyXG4gICAgdGhpcy5hdFJpZ2h0ID0gdGhpcy52YWx1ZS5zbGljZSh0aGlzLmVuZFBvc2l0aW9uLCB0aGlzLnZhbHVlLmxlbmd0aCk7IFxyXG4gICAgaWYoW1wiLVwiXS5pbmNsdWRlcyh0aGlzLmtleSkpeyBcclxuICAgICAgcmV0dXJuIHRoaXMuSGFuZGxlTmVnYXRpdmUoKTtcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJWXCIsIFwidlwiXS5pbmNsdWRlcyh0aGlzLmtleSkgJiYgdGhpcy5jdHJsS2V5KXsgXHJcbiAgICAgIC8vQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKVxyXG4gICAgfWVsc2VcclxuICAgIGlmKGxzdE51bWJlcnMuaW5jbHVkZXModGhpcy5rZXkpKXsgXHJcbiAgICAgIHJldHVybiB0aGlzLkhhbmRsZU51bWJlcigpOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihsc3RFc3BlY2lhbENhc2VzLmluY2x1ZGVzKHRoaXMua2V5KSl7IFxyXG4gICAgICByZXR1cm4gdGhpcy5IYW5kbGVFc3BlY2lhbCgpOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJBXCIsIFwiYVwiXS5pbmNsdWRlcyh0aGlzLmtleSkgJiYgdGhpcy5jdHJsS2V5KXsgXHJcbiAgICAgIHJldHVybjsgXHJcbiAgICB9ZWxzZVxyXG4gICAgaWYoW1wiQ1wiLCBcImNcIl0uaW5jbHVkZXModGhpcy5rZXkpICYmIHRoaXMuY3RybEtleSl7IFxyXG4gICAgICByZXR1cm4gdGhpcy5IYW5kbGVDb3B5KCk7IFxyXG4gICAgfWVsc2VcclxuICAgIGlmKGxzdElnbm9yZU5vdFByZXZlbnQuaW5jbHVkZXModGhpcy5rZXkpKXsgXHJcbiAgICAgIHJldHVybjsgXHJcbiAgICB9ZWxzZVxyXG4gICAgdGhpcy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZGl2aWRlcjogbnVtYmVyO1xyXG4gIHNldERpdmlkZXIoKXtcclxuICAgIHZhciBkID0gXCIxXCI7XHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5jb25maWd1cmF0aW9uLnByZWNpc2lvbjsgaSsrKXtcclxuICAgICAgZCArPSBcIjBcIjsgXHJcbiAgICB9XHJcbiAgICB0aGlzLmRpdmlkZXIgPSBOdW1iZXIoZCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBIYW5kbGVOdW1iZXIoKXtcclxuICAgIHRoaXMuZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB2YXIgZm9jdXNFbmQgPSB0aGlzLnN0YXJ0UG9zaXRpb24gPT0gMCAmJiB0aGlzLmVuZFBvc2l0aW9uID09IHRoaXMubW9kZWwubGVuZ3RoO1xyXG4gICAgLyoqIFsgUmVtb3ZlIGRlY2ltYWxTZXBhcmF0b3IgJiB0aG91c2FuZFNlcGFyYXRvciBdICovXHJcbiAgICBjb25zdCBmID0gdGhpcy5hdExlZnQgKyB0aGlzLmtleSArIHRoaXMuYXRSaWdodDtcclxuICAgIGNvbnN0IEN1cnJlbnRWYWx1ZTogbnVtYmVyID0gdGhpcy5TYW5pdGl6ZVZhbHVlKGYpO1xyXG4gICAgaWYoQ3VycmVudFZhbHVlID09IHRoaXMuX21vZGVsKXsgcmV0dXJuIGZhbHNlOyB9XHJcbiAgICBpZihDdXJyZW50VmFsdWUgPiBkZWNpbWFsTWF4VmFsdWUpe1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vWyBIYW5kbGUgU2V0IEN1cnNvciBQb3NpdGlvbl1cclxuICAgIHRoaXMubW9kZWwgPSBDdXJyZW50VmFsdWU7XHJcbiAgICBjb25zdCBuZXdQb3MgPSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxICsgdGhpcy5tb2RlbC5zcGxpdCgnLicpLmxlbmd0aCAtIHRoaXMudmFsdWUuc3BsaXQoJy4nKS5sZW5ndGg7XHJcbiAgICBcclxuICAgIC8vSG9ycml2ZWwsIG1hcyBuYW8gc2VtIHVtYSBhbHRlcm5hdGl2YSBib2EsIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUxMTA4OC91c2UtamF2YXNjcmlwdC10by1wbGFjZS1jdXJzb3ItYXQtZW5kLW9mLXRleHQtaW4tdGV4dC1pbnB1dC1lbGVtZW50XHJcbiAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgdGhpcy5ldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zLCBuZXdQb3MpOyBcclxuICAgIGlmKGZvY3VzRW5kKXtcclxuICAgICAgdGhpcy5ldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5tb2RlbC5sZW5ndGgsIHRoaXMubW9kZWwubGVuZ3RoKTsgXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuIFxyXG4gIGFzeW5jIEhhbmRsZU5lZ2F0aXZlKCl7XHJcbiAgICB0aGlzLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdmFyIGZvY3VzRW5kID0gdGhpcy5zdGFydFBvc2l0aW9uID09IDAgJiYgdGhpcy5lbmRQb3NpdGlvbiA9PSB0aGlzLm1vZGVsLmxlbmd0aDtcclxuICAgIC8qKiBbIFJlbW92ZSBkZWNpbWFsU2VwYXJhdG9yICYgdGhvdXNhbmRTZXBhcmF0b3IgXSAqL1xyXG4gICAgdmFyIGY7XHJcbiAgICBpZighdGhpcy5hdExlZnQuaW5jbHVkZXMoJy0nKSl7XHJcbiAgICAgIGYgPSB0aGlzLmtleSArIHRoaXMuYXRMZWZ0ICsgdGhpcy5hdFJpZ2h0O1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGYgPSAodGhpcy5hdExlZnQgKyB0aGlzLmF0UmlnaHQpLnJlcGxhY2UoJy0nLCAnJylcclxuICAgIH1cclxuICAgIGlmKGYgPT0gXCItXCIpeyBcclxuICAgICAgaWYodGhpcy52YWx1ZS5pbmNsdWRlcygnLScpKXtcclxuICAgICAgICBmID0gdGhpcy52YWx1ZS5yZXBsYWNlKCctJywgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgZiA9IGAtJHt0aGlzLnZhbHVlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBDdXJyZW50VmFsdWU6IG51bWJlciA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgIGlmKEN1cnJlbnRWYWx1ZSA9PSB0aGlzLl9tb2RlbCl7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgXHJcbiAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICB0aGlzLm1vZGVsID0gQ3VycmVudFZhbHVlO1xyXG4gICAgY29uc3QgbmV3UG9zID0gdGhpcy5zdGFydFBvc2l0aW9uICsgMSArIHRoaXMubW9kZWwuc3BsaXQoJy4nKS5sZW5ndGggLSB0aGlzLnZhbHVlLnNwbGl0KCcuJykubGVuZ3RoO1xyXG4gICAgXHJcbiAgICAvL0hvcnJpdmVsLCBtYXMgbmFvIHNlbSB1bWEgYWx0ZXJuYXRpdmEgYm9hLCBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MTEwODgvdXNlLWphdmFzY3JpcHQtdG8tcGxhY2UtY3Vyc29yLWF0LWVuZC1vZi10ZXh0LWluLXRleHQtaW5wdXQtZWxlbWVudFxyXG4gICAgYXdhaXQgVGltZW91dCgwKTtcclxuICAgIHRoaXMuZXZlbnQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKG5ld1BvcywgbmV3UG9zKTsgXHJcbiAgICBpZihmb2N1c0VuZCl7XHJcbiAgICAgIHRoaXMuZXZlbnQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHRoaXMubW9kZWwubGVuZ3RoLCB0aGlzLm1vZGVsLmxlbmd0aCk7IFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgSGFuZGxlRXNwZWNpYWwoKXtcclxuICAgIHRoaXMuZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmKHRoaXMuc3RhcnRQb3NpdGlvbiA9PSB0aGlzLmVuZFBvc2l0aW9uKXtcclxuICAgICAgaWYodGhpcy5rZXkgPT0gXCJCYWNrc3BhY2VcIil7XHJcbiAgICAgICAgaWYodGhpcy5zdGFydFBvc2l0aW9uID09IHRoaXMuZW5kUG9zaXRpb24gJiYgdGhpcy5zdGFydFBvc2l0aW9uID09IDApeyByZXR1cm4gZmFsc2U7IH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNDaGFyOiBzdHJpbmcgPSB0aGlzLmF0TGVmdFt0aGlzLmF0TGVmdC5sZW5ndGggLSAxXTtcclxuICAgICAgICBjb25zdCBpc051bWJlciA9IGxzdE51bWJlcnMuaW5jbHVkZXMocHJldmlvdXNDaGFyKTtcclxuICAgICAgICBjb25zdCBmID0gdGhpcy5hdExlZnQuc2xpY2UoMCwgdGhpcy5hdExlZnQubGVuZ3RoIC0gKGlzTnVtYmVyID8gMSA6IDIpKSArIHRoaXMuYXRSaWdodDtcclxuICAgICAgICBjb25zdCBDdXJyZW50VmFsdWUgPSB0aGlzLlNhbml0aXplVmFsdWUoZik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy9bIEhhbmRsZSBTZXQgQ3Vyc29yIFBvc2l0aW9uXVxyXG4gICAgICAgIHRoaXMubW9kZWwgPSBDdXJyZW50VmFsdWU7XHJcbiAgICAgICAgYXdhaXQgVGltZW91dCgwKTtcclxuICAgICAgICB0aGlzLmV2ZW50LnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnN0YXJ0UG9zaXRpb24sIHRoaXMuc3RhcnRQb3NpdGlvbik7IFxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5rZXkgPT0gXCJEZWxldGVcIil7XHJcbiAgICAgICAgY29uc3QgbmV4dENoYXI6IHN0cmluZyA9IHRoaXMuYXRSaWdodFswXTtcclxuICAgICAgICBjb25zdCBpc051bWJlciA9IGxzdE51bWJlcnMuaW5jbHVkZXMobmV4dENoYXIpO1xyXG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLmF0TGVmdCArIHRoaXMuYXRSaWdodC5zbGljZShpc051bWJlciA/IDEgOiAyKTtcclxuICAgICAgICBjb25zdCBDdXJyZW50VmFsdWUgPSB0aGlzLlNhbml0aXplVmFsdWUoZik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy9bIEhhbmRsZSBTZXQgQ3Vyc29yIFBvc2l0aW9uXVxyXG4gICAgICAgIHRoaXMubW9kZWwgPSBDdXJyZW50VmFsdWU7XHJcbiAgICAgICAgdmFyIG5ld1BvczogbnVtYmVyID0gdGhpcy5zdGFydFBvc2l0aW9uIC0gMVxyXG4gICAgICAgIGlmKG5ld1BvcyA8PSAtMSl7IG5ld1BvcyA9IDA7IH1cclxuXHJcbiAgICAgICAgYXdhaXQgVGltZW91dCgwKTtcclxuICAgICAgICB0aGlzLmV2ZW50LnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShuZXdQb3MsIG5ld1Bvcyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29uc3QgZiA9IHRoaXMuYXRMZWZ0ICsgdGhpcy5hdFJpZ2h0O1xyXG4gICAgICBjb25zdCBDdXJyZW50VmFsdWUgPSB0aGlzLlNhbml0aXplVmFsdWUoZik7XHJcbiAgICAgIHRoaXMubW9kZWwgPSBDdXJyZW50VmFsdWU7XHJcbiAgICAgIFxyXG4gICAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgICB0aGlzLmV2ZW50LnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLm1vZGVsLmxlbmd0aCwgdGhpcy5tb2RlbC5sZW5ndGgpOyBcclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIEhhbmRsZUNvcHkoKXtcclxuICAgIC8vWyBOb3QgbmVjZXNzYXJ5LCBkZWZhdWx0IGJlaGF2aW91ciBtaWdodCB3b3JrIF1cclxuICAgIC8vIHRoaXMuZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAvLyB2YXIgc3RyID0gdGhpcy5tb2RlbDtcclxuICAgIC8vIHZhciBsc3QgPSBzdHIuc3BsaXQoJycpO1xyXG4gICAgLy8gbHN0LnNwbGljZSh0aGlzLmVuZFBvc2l0aW9uLCBzdHIubGVuZ3RoIC0gdGhpcy5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyBsc3Quc3BsaWNlKDAsIHRoaXMuc3RhcnRQb3NpdGlvbilcclxuICAgIC8vIHZhciBjb3B5ID0gbHN0LmpvaW4oJycpLnJlcGxhY2VBbGwodGhpcy5jb25maWd1cmF0aW9uLnRob3VzYW5kU2VwYXJhdG9yLCAnJykucmVwbGFjZSh0aGlzLmNvbmZpZ3VyYXRpb24uZGVjaW1hbFNlcGFyYXRvciwgJy4nKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKGNvcHkpXHJcbiAgICAvLyBDbGlwYm9hcmQud3JpdGUoe3N0cmluZzogY29weX0pLmNhdGNoKCgpID0+IHtcclxuICAgIC8vICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29weSk7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIFNhbml0aXplVmFsdWUoZjogc3RyaW5nKTogbnVtYmVye1xyXG4gICAgdmFyIEN1cnJlbnRWYWx1ZTogbnVtYmVyID0gTnVtYmVyKFNhbml0aXplKGYpKSAvIHRoaXMuZGl2aWRlcjtcclxuICAgIC8vWyBDYW5jZWxhIHNlIG8gdmFsb3IgZm9yIG11aXRvIGFsdG8gXVxyXG4gICAgaWYoQ3VycmVudFZhbHVlID49IGRlY2ltYWxNYXhWYWx1ZSl7IFxyXG4gICAgICByZXR1cm4gdGhpcy5fbW9kZWw7IFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIEN1cnJlbnRWYWx1ZTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIFsgRXZlbnQgSGFuZGxlciBdXHJcbn1cclxuXHJcbmNvbnN0IGRlY2ltYWxNYXhWYWx1ZSA9IDlfMDAwXzAwMF8wMDBfMDAwLjAwXHJcblxyXG5jb25zdCBkZWNpbWFsU2VwYXJhdG9yIDogc3RyaW5nID0gXCIsXCI7XHJcbmNvbnN0IHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSBcIi5cIjtcclxuXHJcbmNvbnN0IFNhbml0aXplOiBGdW5jdGlvbiA9ICgodjogc3RyaW5nKTogc3RyaW5nID0+IHsgXHJcbiAgcmV0dXJuIHYucmVwbGFjZUFsbCh0aG91c2FuZFNlcGFyYXRvciwgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSAgIChkZWNpbWFsU2VwYXJhdG9yICwgJycpIFxyXG4gICAgICAgIH0pO1xyXG5cclxuY29uc3QgbHN0TnVtYmVycyA9IFtcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl07XHJcbmNvbnN0IGxzdElnbm9yZU5vdFByZXZlbnQgPSBbXHJcbiAgXCJUYWJcIiwgXCJDYXBzTG9ja1wiLCBcIlNoaWZ0XCIsIFwiQ29udHJvbFwiLCBcIkFsdFwiLCBcIkFycm93UmlnaHRcIiwgXCJBcnJvd1VwXCIsIFwiQXJyb3dEb3duXCIsIFwiQXJyb3dMZWZ0XCJcclxuXTtcclxuY29uc3QgbHN0RXNwZWNpYWxDYXNlcyA9IFtcclxuICBcIkJhY2tzcGFjZVwiLCBcIkRlbGV0ZVwiXHJcbl07IiwiPGRpdiBjbGFzcz1cImZsZXggcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgPGlvbi1jYXJkIGNsYXNzPVwiZm9jdXMtd2l0aGluOm9uLWZvY3VzIGlvbi1jYXJkLWlucHV0XCIgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZGlzYWJsZWRcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgJ2ludmFsaWQnICA6IGludmFsaWQsXHJcbiAgICAgICAgJ3N1Ym1pdHRlZCc6IHN1Ym1pdHRlZCxcclxuICAgICAgICAnZGlzYWJsZWQnOiBkaXNhYmxlZCxcclxuICAgICAgfVwiXHJcbiAgICA+XHJcbiAgICA8aW9uLWNhcmQtY29udGVudD5cclxuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXhcIj5cclxuICAgICAgICA8aW9uLWl0ZW0gY2xhc3M9XCJ3LWZ1bGwgc2hyaW5rLTBcIiBbbmdDbGFzc109XCJ7J3JlcXVpcmVkJyA6IHJlcXVpcmVkfVwiIGxpbmVzPVwibm9uZVwiPlxyXG4gICAgICAgICAgPGlvbi1pbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtdHJhbnNpdGlvblwiIFt2YWx1ZV09XCJtb2RlbFwiIGxhYmVsUGxhY2VtZW50PVwic3RhY2tlZFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpb24tdGV4dCBbbmdDbGFzc109XCJ7J3JlcXVpcmVkJzogcmVxdWlyZWR9XCIgc2xvdD1cImxhYmVsXCI+IHt7bGFiZWx9fSA8L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3VyYXRpb24ucHJlZml4XCIgc2xvdD1cInN0YXJ0XCI+e3tjb25maWd1cmF0aW9uLnByZWZpeH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3VyYXRpb24uc3VmaXhcIiAgc2xvdD1cImVuZFwiICA+e3tjb25maWd1cmF0aW9uLnN1Zml4fX08L3NwYW4+XHJcbiAgICAgICAgICA8L2lvbi1pbnB1dD5cclxuICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICA8L2lvbi1jYXJkPlxyXG4gIDxpbnB1dC1sb2FkaW5nIFtsb2FkaW5nXT1cImxvYWRpbmdcIj48L2lucHV0LWxvYWRpbmc+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export class InputDecimalConfiguration {
|
|
2
|
+
constructor(
|
|
3
|
+
/** Declara a quantidade de numeros apos o ponto */
|
|
4
|
+
precision = 2,
|
|
5
|
+
/** Texto no inicio do input */
|
|
6
|
+
prefix = null,
|
|
7
|
+
/** Texto no fim do input */
|
|
8
|
+
sufix = null,
|
|
9
|
+
/** Se = false não aplica virgulas no lugar do separador a cada 3 unidades */
|
|
10
|
+
thousandSeparator = '.', decimalSeparator = ',') {
|
|
11
|
+
this.precision = precision;
|
|
12
|
+
this.thousandSeparator = thousandSeparator;
|
|
13
|
+
this.decimalSeparator = decimalSeparator;
|
|
14
|
+
if (!prefix) {
|
|
15
|
+
this.prefix = '';
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.prefix = prefix;
|
|
19
|
+
}
|
|
20
|
+
if (!sufix) {
|
|
21
|
+
this.sufix = '';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.sufix = sufix;
|
|
25
|
+
}
|
|
26
|
+
this.placeholder = "-";
|
|
27
|
+
if (precision > 0) {
|
|
28
|
+
this.placeholder += this.decimalSeparator;
|
|
29
|
+
for (let i = precision; i > 0; i--) {
|
|
30
|
+
this.placeholder += "-";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class InputNumberConfiguration extends InputDecimalConfiguration {
|
|
36
|
+
constructor(prefix = "", sufix = "", thousandSeparator = '.') {
|
|
37
|
+
super(0, prefix, sufix, thousandSeparator);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export class InputCurrencyConfiguration extends InputDecimalConfiguration {
|
|
41
|
+
constructor(prefix = "R$", sufix = "", thousandSeparator = '.') {
|
|
42
|
+
super(2, prefix, sufix, thousandSeparator);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FwcGhpcmUtaW9uLWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyx5QkFBeUI7SUFLcEM7SUFDRSxvREFBb0Q7SUFDN0MsWUFBb0IsQ0FBQztJQUM1QiwrQkFBK0I7SUFDL0IsU0FBd0IsSUFBSTtJQUM1Qiw0QkFBNEI7SUFDNUIsUUFBdUIsSUFBSTtJQUMzQiw2RUFBNkU7SUFDdEUsb0JBQTRCLEdBQUcsRUFDL0IsbUJBQTRCLEdBQUc7UUFQL0IsY0FBUyxHQUFULFNBQVMsQ0FBWTtRQU1yQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWM7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFlO1FBRXRDLElBQUcsQ0FBQyxNQUFNLEVBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQzthQUFJLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUFDLENBQUM7UUFDN0QsSUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLEtBQUssR0FBSSxFQUFFLENBQUM7UUFBQyxDQUFDO2FBQUksQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLEdBQUksS0FBSyxDQUFDO1FBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxQyxLQUFJLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBQ0QsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHlCQUF5QjtJQUNyRSxZQUNFLFNBQWlCLEVBQUUsRUFDbkIsUUFBaUIsRUFBRSxFQUNuQixvQkFBNEIsR0FBRztRQUUvQixLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFDRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEseUJBQXlCO0lBQ3ZFLFlBQVksU0FBaUIsSUFBSSxFQUFFLFFBQWdCLEVBQUUsRUFBRSxvQkFBNEIsR0FBRztRQUNwRixLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbntcclxuICBwcmVmaXggICAgICA6IHN0cmluZztcclxuICBzdWZpeCAgICAgICA6IHN0cmluZztcclxuICBwbGFjZWhvbGRlciA6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvKiogRGVjbGFyYSBhIHF1YW50aWRhZGUgZGUgbnVtZXJvcyBhcG9zIG8gcG9udG8gICovXHJcbiAgICBwdWJsaWMgcHJlY2lzaW9uOiBudW1iZXIgPSAyLCBcclxuICAgIC8qKiBUZXh0byBubyBpbmljaW8gZG8gaW5wdXQgKi9cclxuICAgIHByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIFxyXG4gICAgLyoqIFRleHRvIG5vIGZpbSBkbyBpbnB1dCAqL1xyXG4gICAgc3VmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsLCBcclxuICAgIC8qKiBTZSA9IGZhbHNlIG7Do28gYXBsaWNhIHZpcmd1bGFzIG5vIGx1Z2FyIGRvIHNlcGFyYWRvciBhIGNhZGEgMyB1bmlkYWRlcyAqL1xyXG4gICAgcHVibGljIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSAnLicsXHJcbiAgICBwdWJsaWMgZGVjaW1hbFNlcGFyYXRvciA6IHN0cmluZyA9ICcsJ1xyXG4gICl7XHJcbiAgICBpZighcHJlZml4KXsgdGhpcy5wcmVmaXggPSAnJzsgfWVsc2V7IHRoaXMucHJlZml4ID0gcHJlZml4OyB9XHJcbiAgICBpZighc3VmaXggKXsgdGhpcy5zdWZpeCAgPSAnJzsgfWVsc2V7IHRoaXMuc3VmaXggID0gc3VmaXg7IH1cclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gXCItXCI7XHJcbiAgICBpZihwcmVjaXNpb24gPiAwKXtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciArPSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XHJcbiAgICAgIGZvcihsZXQgaSA9IHByZWNpc2lvbjsgaSA+IDA7IGktLSl7XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciArPSBcIi1cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSBcclxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiBleHRlbmRzIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24ge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJlZml4OiBzdHJpbmcgPSBcIlwiLCBcclxuICAgIHN1Zml4IDogc3RyaW5nID0gXCJcIiwgXHJcbiAgICB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nID0gJy4nXHJcbiAgKXtcclxuICAgIHN1cGVyKDAsIHByZWZpeCwgc3VmaXgsIHRob3VzYW5kU2VwYXJhdG9yKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uIGV4dGVuZHMgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiB7XHJcbiAgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcgPSBcIlIkXCIsIHN1Zml4OiBzdHJpbmcgPSBcIlwiLCB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nID0gJy4nKXtcclxuICAgIHN1cGVyKDIsIHByZWZpeCwgc3VmaXgsIHRob3VzYW5kU2VwYXJhdG9yKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InputDecimalConfiguration, InputNumberConfiguration } from "./input-decimal/input-decimal.configuration";
|
|
2
|
+
export class InputsDefaultConfigurations {
|
|
3
|
+
static { this.configurationDecimalPercentage = new InputDecimalConfiguration(2, null, '%'); }
|
|
4
|
+
static { this.configurationDecimalDegree = new InputDecimalConfiguration(2, null, "°C"); }
|
|
5
|
+
static { this.configurationDecimalM3H = new InputDecimalConfiguration(2, null, "m³/h"); }
|
|
6
|
+
static { this.configurationDecimalMeters = new InputDecimalConfiguration(2, null, "m"); }
|
|
7
|
+
static { this.configurationDecimalMilimeters = new InputDecimalConfiguration(2, null, "mm"); }
|
|
8
|
+
static { this.configurationNumberPercentage = new InputNumberConfiguration(null, '%'); }
|
|
9
|
+
static { this.configurationNumberDegree = new InputNumberConfiguration(null, "°C"); }
|
|
10
|
+
static { this.configurationNumberM3H = new InputNumberConfiguration(null, "m³/h"); }
|
|
11
|
+
static { this.configurationNumberMeters = new InputNumberConfiguration(null, "m"); }
|
|
12
|
+
static { this.configurationNumberMilimeters = new InputNumberConfiguration(null, "mm"); }
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVmYXVsdC1jb25maWd1cmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1kZWZhdWx0LWNvbmZpZ3VyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRWxILE1BQU0sT0FBTywyQkFBMkI7YUFDdEIsbUNBQThCLEdBQThCLElBQUkseUJBQXlCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN4RywrQkFBMEIsR0FBa0MsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3pHLDRCQUF1QixHQUFxQyxJQUFJLHlCQUF5QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDM0csK0JBQTBCLEdBQWtDLElBQUkseUJBQXlCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN4RyxtQ0FBOEIsR0FBOEIsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBRXpHLGtDQUE2QixHQUE2QixJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNsRyw4QkFBeUIsR0FBaUMsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDbkcsMkJBQXNCLEdBQW9DLElBQUksd0JBQXdCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3JHLDhCQUF5QixHQUFpQyxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNsRyxrQ0FBNkIsR0FBNkIsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uLCBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1kZWNpbWFsL2lucHV0LWRlY2ltYWwuY29uZmlndXJhdGlvblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIElucHV0c0RlZmF1bHRDb25maWd1cmF0aW9ucyB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25EZWNpbWFsUGVyY2VudGFnZTogSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKDIsIG51bGwsICclJyk7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25EZWNpbWFsRGVncmVlICAgIDogSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKDIsIG51bGwsIFwiwrBDXCIpO1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uRGVjaW1hbE0zSCAgICAgICA6IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbigyLCBudWxsLCBcIm3Csy9oXCIpO1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uRGVjaW1hbE1ldGVycyAgICA6IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbigyLCBudWxsLCBcIm1cIik7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25EZWNpbWFsTWlsaW1ldGVyczogSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKDIsIG51bGwsIFwibW1cIik7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uTnVtYmVyUGVyY2VudGFnZTogSW5wdXROdW1iZXJDb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbihudWxsLCAnJScpO1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uTnVtYmVyRGVncmVlICAgIDogSW5wdXROdW1iZXJDb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbihudWxsLCBcIsKwQ1wiKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbk51bWJlck0zSCAgICAgICA6IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24obnVsbCwgXCJtwrMvaFwiKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbk51bWJlck1ldGVycyAgICA6IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24obnVsbCwgXCJtXCIpO1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uTnVtYmVyTWlsaW1ldGVyczogSW5wdXROdW1iZXJDb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbihudWxsLCBcIm1tXCIpO1xyXG59Il19
|
package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component, computed, ElementRef, Input, model } from '@angular/core';
|
|
2
|
+
import { InputFileConfiguration } from '../input-file.configuration';
|
|
3
|
+
import { ApiUrlProviderService } from '../../../../services/web/api-url-provider.service';
|
|
4
|
+
import { InputProviderFactory } from '../../input-provider-factory';
|
|
5
|
+
import { StorageService } from '../../../../services/web/storage.service';
|
|
6
|
+
import { imageTypes } from '../input-file.component';
|
|
7
|
+
import { Utils } from '../../../../services/utils.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../../../services/web/storage.service";
|
|
10
|
+
import * as i2 from "../../../../services/web/api-url-provider.service";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
import * as i4 from "@ionic/angular";
|
|
13
|
+
import * as i5 from "../../../../directives/ng-var.directive";
|
|
14
|
+
import * as i6 from "../../../loading/loading.component";
|
|
15
|
+
import * as i7 from "../../input-loading/input-loading.component";
|
|
16
|
+
export class DownloadButtonComponent {
|
|
17
|
+
constructor(storageService, elementRef, apiUrlProviderService) {
|
|
18
|
+
this.storageService = storageService;
|
|
19
|
+
this.elementRef = elementRef;
|
|
20
|
+
this.apiUrlProviderService = apiUrlProviderService;
|
|
21
|
+
this.expand = "";
|
|
22
|
+
this.value = model();
|
|
23
|
+
this.size = "small";
|
|
24
|
+
this.post = false;
|
|
25
|
+
this.configuration = new InputFileConfiguration();
|
|
26
|
+
this.guid = "";
|
|
27
|
+
this.lstFiles = computed(() => {
|
|
28
|
+
if (typeof (this.value()) == "string") {
|
|
29
|
+
return this.value().split(';');
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
this.lstLoading = [];
|
|
36
|
+
}
|
|
37
|
+
registerOnChange(fn) {
|
|
38
|
+
//throw new Error('Method not implemented.');
|
|
39
|
+
}
|
|
40
|
+
registerOnTouched(fn) {
|
|
41
|
+
//throw new Error('Method not implemented.');
|
|
42
|
+
}
|
|
43
|
+
setDisabledState(isDisabled) {
|
|
44
|
+
//throw new Error('Method not implemented.');
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.apiUrl = this.apiUrlProviderService.apiUrl;
|
|
48
|
+
this.guid = `${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`;
|
|
49
|
+
}
|
|
50
|
+
writeValue(value) { this.value.set(value); }
|
|
51
|
+
Download(value) {
|
|
52
|
+
this.storageService.StartDownload(value, this.params, this.post);
|
|
53
|
+
}
|
|
54
|
+
Sanitize(v) {
|
|
55
|
+
return StorageService.SanitizeFileName(v);
|
|
56
|
+
}
|
|
57
|
+
ExtensionIsImage(v) {
|
|
58
|
+
try {
|
|
59
|
+
return imageTypes.includes(v.split('.')[v.split('.').length - 1]);
|
|
60
|
+
}
|
|
61
|
+
catch { }
|
|
62
|
+
}
|
|
63
|
+
SetLoading(path) {
|
|
64
|
+
this.lstLoading.push(path);
|
|
65
|
+
}
|
|
66
|
+
SetNotLoading(path) {
|
|
67
|
+
this.lstLoading.splice(this.lstLoading.indexOf(path), 1);
|
|
68
|
+
}
|
|
69
|
+
isLoading(path) {
|
|
70
|
+
return this.lstLoading.indexOf(path) != -1;
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadButtonComponent, deps: [{ token: i1.StorageService }, { token: i0.ElementRef }, { token: i2.ApiUrlProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DownloadButtonComponent, selector: "download-button", inputs: { expand: { classPropertyName: "expand", publicName: "expand", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, post: { classPropertyName: "post", publicName: "post", isSignal: false, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, providers: InputProviderFactory.GetProvider(DownloadButtonComponent), ngImport: i0, template: "@if(lstFiles().length == 0){\r\n <ion-button fill=\"outline\" [disabled]=\"true\" [size]=\"size\"> \r\n <ion-icon name=\"close-circle\" slot=\"start\"></ion-icon> \r\n <ion-label> Sem arquivos... </ion-label>\r\n </ion-button>\r\n}\r\n@else if(lstFiles().length == 1){\r\n <ion-button *ngVar=\"storageService.GetProgress(lstFiles()[0]) as val\" class=\"relative block {{expand == 'block' ? 'size-full' : ''}}\" [disabled]=\"val != 0 || disabled\" (click)=\"Download(lstFiles()[0])\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{Sanitize(lstFiles()[0])}} </ion-label>\r\n <input-loading [loading]=\"val != 0\"></input-loading>\r\n <div class=\"absolute size-full h-[calc(100%+var(--padding-top)+var(--padding-bottom))] w-[calc(100%+var(--padding-end)+var(--padding-start))]\">\r\n <div class=\"size-full flex flex-row-reverse relative\">\r\n <ion-progress-bar class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'-translate-y-4 opacity-0': (!val || val == 0)}\" [value]=\"val\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n </ion-button>\r\n}\r\n@else{\r\n <ion-button [id]=\"guid\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{lstFiles().length}} Arquivos </ion-label>\r\n </ion-button>\r\n\r\n <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content class=\"p-0 bg-transparent\">\r\n <ion-list>\r\n @for (item of lstFiles(); track item; let i = $index; let l = $last) {\r\n <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n @if (ExtensionIsImage(item)) {\r\n <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n }\r\n\r\n <ion-label>{{Sanitize(item)}}</ion-label>\r\n <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n </ion-item>\r\n <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n <loading [hidden]=\"!isLoading\"></loading>\r\n <ion-img [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </section>\r\n }\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}", styles: ["ion-popover{--width: 30rem }\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i4.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i4.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i5.NgVarDirective, selector: "[ngVar]", inputs: ["ngVar"] }, { kind: "component", type: i6.LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "component", type: i7.InputLoadingComponent, selector: "input-loading", inputs: ["loading"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadButtonComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'download-button', providers: InputProviderFactory.GetProvider(DownloadButtonComponent), template: "@if(lstFiles().length == 0){\r\n <ion-button fill=\"outline\" [disabled]=\"true\" [size]=\"size\"> \r\n <ion-icon name=\"close-circle\" slot=\"start\"></ion-icon> \r\n <ion-label> Sem arquivos... </ion-label>\r\n </ion-button>\r\n}\r\n@else if(lstFiles().length == 1){\r\n <ion-button *ngVar=\"storageService.GetProgress(lstFiles()[0]) as val\" class=\"relative block {{expand == 'block' ? 'size-full' : ''}}\" [disabled]=\"val != 0 || disabled\" (click)=\"Download(lstFiles()[0])\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{Sanitize(lstFiles()[0])}} </ion-label>\r\n <input-loading [loading]=\"val != 0\"></input-loading>\r\n <div class=\"absolute size-full h-[calc(100%+var(--padding-top)+var(--padding-bottom))] w-[calc(100%+var(--padding-end)+var(--padding-start))]\">\r\n <div class=\"size-full flex flex-row-reverse relative\">\r\n <ion-progress-bar class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'-translate-y-4 opacity-0': (!val || val == 0)}\" [value]=\"val\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n </ion-button>\r\n}\r\n@else{\r\n <ion-button [id]=\"guid\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{lstFiles().length}} Arquivos </ion-label>\r\n </ion-button>\r\n\r\n <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content class=\"p-0 bg-transparent\">\r\n <ion-list>\r\n @for (item of lstFiles(); track item; let i = $index; let l = $last) {\r\n <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n @if (ExtensionIsImage(item)) {\r\n <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n }\r\n\r\n <ion-label>{{Sanitize(item)}}</ion-label>\r\n <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n </ion-item>\r\n <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n <loading [hidden]=\"!isLoading\"></loading>\r\n <ion-img [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </section>\r\n }\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}", styles: ["ion-popover{--width: 30rem }\n"] }]
|
|
78
|
+
}], ctorParameters: () => [{ type: i1.StorageService }, { type: i0.ElementRef }, { type: i2.ApiUrlProviderService }], propDecorators: { expand: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], size: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], params: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], disabled: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], post: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], configuration: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1maWxlL2Rvd25sb2FkLWJ1dHRvbi9kb3dubG9hZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FwcGhpcmUtaW9uLWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvZG93bmxvYWQtYnV0dG9uL2Rvd25sb2FkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFHbkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7OztBQVEzRCxNQUFNLE9BQU8sdUJBQXVCO0lBVWxDLFlBQ1MsY0FBOEIsRUFDN0IsVUFBc0IsRUFDdEIscUJBQTRDO1FBRjdDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFYN0MsV0FBTSxH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SztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRWxlbWVudFJlZiwgSW5wdXQsIG1vZGVsLCBNb2RlbFNpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2lucHV0LWZpbGUuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IEFwaVVybFByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9hcGktdXJsLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL2lucHV0LXByb3ZpZGVyLWZhY3RvcnknO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpbWFnZVR5cGVzIH0gZnJvbSAnLi4vaW5wdXQtZmlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkb3dubG9hZC1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3dubG9hZC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Rvd25sb2FkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXIoRG93bmxvYWRCdXR0b25Db21wb25lbnQpXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb3dubG9hZEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHZhbHVlOiBNb2RlbFNpZ25hbDxzdHJpbmc+ID0gbW9kZWw8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZyA9IFwic21hbGxcIjtcclxuICBASW5wdXQoKSBwYXJhbXM6IGFueTtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwb3N0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbjogSW5wdXRGaWxlQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEZpbGVDb25maWd1cmF0aW9uKCk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBhcGlVcmxQcm92aWRlclNlcnZpY2U6IEFwaVVybFByb3ZpZGVyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgLy90aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAvL3Rocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuICB9XHJcblxyXG4gIGd1aWQgOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwaVVybDogc3RyaW5nO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXBpVXJsID0gdGhpcy5hcGlVcmxQcm92aWRlclNlcnZpY2UuYXBpVXJsO1xyXG4gICAgdGhpcy5ndWlkICA9IGAke1V0aWxzLkdlbmVyYXRlR1VJRCgpfSR7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpfWBcclxuICB9XHJcblxyXG4gIGxzdEZpbGVzOiBTaWduYWw8c3RyaW5nW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYodHlwZW9mKHRoaXMudmFsdWUoKSkgPT0gXCJzdHJpbmdcIil7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlKCkuc3BsaXQoJzsnKTtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7IH1cclxuXHJcbiAgRG93bmxvYWQodmFsdWU6IHN0cmluZyk6IHZvaWR7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLlN0YXJ0RG93bmxvYWQodmFsdWUsIHRoaXMucGFyYW1zLCB0aGlzLnBvc3QpO1xyXG4gIH1cclxuXHJcbiAgU2FuaXRpemUodik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU3RvcmFnZVNlcnZpY2UuU2FuaXRpemVGaWxlTmFtZSh2KTtcclxuICB9XHJcblxyXG4gIEV4dGVuc2lvbklzSW1hZ2Uodil7XHJcbiAgICB0cnl7XHJcbiAgICAgIHJldHVybiBpbWFnZVR5cGVzLmluY2x1ZGVzKHYuc3BsaXQoJy4nKVt2LnNwbGl0KCcuJykubGVuZ3RoIC0gMV0pXHJcbiAgICB9Y2F0Y2h7fVxyXG4gIH1cclxuXHJcbiAgbHN0TG9hZGluZzogc3RyaW5nW10gPSBbXTtcclxuICBTZXRMb2FkaW5nKHBhdGg6IHN0cmluZyl7XHJcbiAgICB0aGlzLmxzdExvYWRpbmcucHVzaChwYXRoKTtcclxuICB9XHJcbiAgU2V0Tm90TG9hZGluZyhwYXRoOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5sc3RMb2FkaW5nLnNwbGljZSh0aGlzLmxzdExvYWRpbmcuaW5kZXhPZihwYXRoKSwgMSk7XHJcbiAgfVxyXG4gIGlzTG9hZGluZyhwYXRoOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMubHN0TG9hZGluZy5pbmRleE9mKHBhdGgpICE9IC0xO1xyXG4gIH1cclxufVxyXG4iLCJAaWYobHN0RmlsZXMoKS5sZW5ndGggPT0gMCl7XHJcbiAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtzaXplXT1cInNpemVcIj4gXHJcbiAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+ICBcclxuICAgIDxpb24tbGFiZWw+IFNlbSBhcnF1aXZvcy4uLiA8L2lvbi1sYWJlbD5cclxuICA8L2lvbi1idXR0b24+XHJcbn1cclxuQGVsc2UgaWYobHN0RmlsZXMoKS5sZW5ndGggPT0gMSl7XHJcbiAgPGlvbi1idXR0b24gKm5nVmFyPVwic3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3MobHN0RmlsZXMoKVswXSkgYXMgdmFsXCIgY2xhc3M9XCJyZWxhdGl2ZSBibG9jayB7e2V4cGFuZCA9PSAnYmxvY2snID8gJ3NpemUtZnVsbCcgOiAnJ319XCIgW2Rpc2FibGVkXT1cInZhbCAhPSAwIHx8IGRpc2FibGVkXCIgKGNsaWNrKT1cIkRvd25sb2FkKGxzdEZpbGVzKClbMF0pXCIgZmlsbD1cIm91dGxpbmVcIiBbc2l6ZV09XCJzaXplXCI+IFxyXG4gICAgPGlvbi1pY29uIG5hbWU9XCJkb3dubG9hZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+ICBcclxuICAgIDxpb24tbGFiZWw+IHt7U2FuaXRpemUobHN0RmlsZXMoKVswXSl9fSA8L2lvbi1sYWJlbD5cclxuICAgIDxpbnB1dC1sb2FkaW5nIFtsb2FkaW5nXT1cInZhbCAhPSAwXCI+PC9pbnB1dC1sb2FkaW5nPlxyXG4gICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHNpemUtZnVsbCBoLVtjYWxjKDEwMCUrdmFyKC0tcGFkZGluZy10b3ApK3ZhcigtLXBhZGRpbmctYm90dG9tKSldIHctW2NhbGMoMTAwJSt2YXIoLS1wYWRkaW5nLWVuZCkrdmFyKC0tcGFkZGluZy1zdGFydCkpXVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggZmxleC1yb3ctcmV2ZXJzZSByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyIGNsYXNzPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHctZnVsbCBoLTEgZGVmYXVsdC10cmFuc2l0aW9uXCIgW25nQ2xhc3NdPVwieyctdHJhbnNsYXRlLXktNCBvcGFjaXR5LTAnOiAoIXZhbCB8fCB2YWwgPT0gMCl9XCIgW3ZhbHVlXT1cInZhbFwiPjwvaW9uLXByb2dyZXNzLWJhcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2lvbi1idXR0b24+XHJcbn1cclxuQGVsc2V7XHJcbiAgPGlvbi1idXR0b24gW2lkXT1cImd1aWRcIiBmaWxsPVwib3V0bGluZVwiIFtzaXplXT1cInNpemVcIj4gXHJcbiAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gIFxyXG4gICAgPGlvbi1sYWJlbD4ge3tsc3RGaWxlcygpLmxlbmd0aH19IEFycXVpdm9zIDwvaW9uLWxhYmVsPlxyXG4gIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgPGlvbi1wb3BvdmVyIFt0cmlnZ2VyXT1cImd1aWRcIiBba2VlcENvbnRlbnRzTW91bnRlZF09XCJ0cnVlXCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XHJcbiAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgIDxpb24tY29udGVudCBjbGFzcz1cInAtMCBiZy10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgIDxpb24tbGlzdD5cclxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbHN0RmlsZXMoKTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXg7IGxldCBsID0gJGxhc3QpIHtcclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nVmFyPVwic3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3MoaXRlbSkgYXMgdmFsXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIHN0eWxlPVwiLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudFwiIGxpbmVzPVwie3tsID8gJ25vbmUnIDogJ2Z1bGwnfX1cIiBidXR0b24gW2RldGFpbF09XCJmYWxzZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG93bmxvYWRcIiAoY2xpY2spPVwiRG93bmxvYWQoaXRlbSlcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgIEBpZiAoRXh0ZW5zaW9uSXNJbWFnZShpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gW2lkXT1cImd1aWQgKyAnLScgKyBpICsgJy1uZXN0ZWQtcG9wb3ZlcidcIiBuYW1lPVwiaW1hZ2VcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7U2FuaXRpemUoaXRlbSl9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0ICpuZ0lmPVwidmFsICE9IDBcIiBzbG90PVwiZW5kXCIgY2xhc3M9XCJ0ZXh0LXNtXCI+PGI+e3t2YWwgKiAxMDAgfCBudW1iZXIgOiAnMS4yLTInfX0lPC9iPjwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhciBjbGFzcz1cImgtMCBkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7J2gtMSc6IHZhbCAhPSAwIH1cIiBbdmFsdWVdPVwidmFsXCI+PC9pb24tcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIDxpb24tcG9wb3ZlciAqbmdJZj1cIkV4dGVuc2lvbklzSW1hZ2UoaXRlbSlcIiBzaWRlPVwiZW5kXCIgYWxpZ25tZW50PVwiY2VudGVyXCIgW3RyaWdnZXJdPVwiZ3VpZCArICctJyArIGkgKyAnLW5lc3RlZC1wb3BvdmVyJ1wiIFtkaXNtaXNzT25TZWxlY3RdPVwidHJ1ZVwiIHRyaWdnZXJBY3Rpb249XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWNvbnRlbnQgKm5nVmFyPVwiaXNMb2FkaW5nKGl0ZW0pIGFzIGlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsb2FkaW5nICAgIFtoaWRkZW5dPVwiIWlzTG9hZGluZ1wiPjwvbG9hZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyAgICBbaGlkZGVuXT1cImlzTG9hZGluZ1wiIFtzcmNdPVwiYXBpVXJsICsgaXRlbVwiIChpb25JbWdXaWxsTG9hZCk9XCJTZXRMb2FkaW5nKGl0ZW0pXCIgKGlvbkltZ0RpZExvYWQpPVwiU2V0Tm90TG9hZGluZyhpdGVtKVwiPjwvaW9uLWltZz5cclxuICAgICAgICAgICAgICAgICAgPC9pb24tY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9pb24tbGlzdD5cclxuICAgICAgPC9pb24tY29udGVudD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb24tcG9wb3Zlcj5cclxufSJdfQ==
|