@wizishop/angular-components 18.2.0 → 19.0.0-beta.2
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 +13 -76
- package/angular-components.scss +10688 -9422
- package/assets/images/upload/upload_images.svg +23 -0
- package/fesm2022/wizishop-angular-components.mjs +1294 -559
- package/fesm2022/wizishop-angular-components.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/animations/in-out/in-out-x.animation.d.ts +1 -0
- package/lib/animations/in-out/in-out-x.animation.d.ts.map +1 -0
- package/lib/animations/in-out/in-out-y.animation.d.ts +1 -0
- package/lib/animations/in-out/in-out-y.animation.d.ts.map +1 -0
- package/lib/animations/list/animate-list-from-bottom.animation.d.ts +1 -0
- package/lib/animations/list/animate-list-from-bottom.animation.d.ts.map +1 -0
- package/lib/animations/list/animate-list-from-left.animation.d.ts +1 -0
- package/lib/animations/list/animate-list-from-left.animation.d.ts.map +1 -0
- package/lib/animations/list/animate-list-from-right.animation.d.ts +1 -0
- package/lib/animations/list/animate-list-from-right.animation.d.ts.map +1 -0
- package/lib/animations/list/animate-list-from-top.animation.d.ts +1 -0
- package/lib/animations/list/animate-list-from-top.animation.d.ts.map +1 -0
- package/lib/animations/show/opacity.animation.d.ts +1 -0
- package/lib/animations/show/opacity.animation.d.ts.map +1 -0
- package/lib/animations/show/show-from-bottom.animation.d.ts +1 -0
- package/lib/animations/show/show-from-bottom.animation.d.ts.map +1 -0
- package/lib/animations/show/show-from-left.animation.d.ts +1 -0
- package/lib/animations/show/show-from-left.animation.d.ts.map +1 -0
- package/lib/animations/show/show-from-right.animation.d.ts +1 -0
- package/lib/animations/show/show-from-right.animation.d.ts.map +1 -0
- package/lib/animations/show/show-from-top.animation.d.ts +1 -0
- package/lib/animations/show/show-from-top.animation.d.ts.map +1 -0
- package/lib/animations/switch/switch-in-out.animation.d.ts +1 -0
- package/lib/animations/switch/switch-in-out.animation.d.ts.map +1 -0
- package/lib/components/ai-express/ai-express.component.d.ts +1 -0
- package/lib/components/ai-express/ai-express.component.d.ts.map +1 -0
- package/lib/components/alert/alert.component.d.ts +1 -0
- package/lib/components/alert/alert.component.d.ts.map +1 -0
- package/lib/components/alert-popup/alert-popup-module.d.ts +1 -0
- package/lib/components/alert-popup/alert-popup-module.d.ts.map +1 -0
- package/lib/components/alert-popup/alert-popup.component.d.ts +4 -3
- package/lib/components/alert-popup/alert-popup.component.d.ts.map +1 -0
- package/lib/components/alert-popup/alert-popup.service.d.ts +1 -0
- package/lib/components/alert-popup/alert-popup.service.d.ts.map +1 -0
- package/lib/components/back/back.component.d.ts +1 -0
- package/lib/components/back/back.component.d.ts.map +1 -0
- package/lib/components/block/block-title-legacy/block-title-legacy.component.d.ts +1 -0
- package/lib/components/block/block-title-legacy/block-title-legacy.component.d.ts.map +1 -0
- package/lib/components/block/block.component.d.ts +1 -0
- package/lib/components/block/block.component.d.ts.map +1 -0
- package/lib/components/block/separator/block-separator.component.d.ts +1 -0
- package/lib/components/block/separator/block-separator.component.d.ts.map +1 -0
- package/lib/components/block-with-checkbox/block-with-checkbox.component.d.ts +1 -0
- package/lib/components/block-with-checkbox/block-with-checkbox.component.d.ts.map +1 -0
- package/lib/components/border-picker/border-picker.component.d.ts +30 -0
- package/lib/components/border-picker/border-picker.component.d.ts.map +1 -0
- package/lib/components/breadcrumbs/breadcrumbs.component.d.ts +1 -0
- package/lib/components/breadcrumbs/breadcrumbs.component.d.ts.map +1 -0
- package/lib/components/breadcrumbs/breadcrumbs.dto.d.ts +1 -0
- package/lib/components/breadcrumbs/breadcrumbs.dto.d.ts.map +1 -0
- package/lib/components/button/button.component.d.ts +1 -0
- package/lib/components/button/button.component.d.ts.map +1 -0
- package/lib/components/calendar/calendar.component.d.ts +6 -1
- package/lib/components/calendar/calendar.component.d.ts.map +1 -0
- package/lib/components/card-price/card-price.component.d.ts +1 -0
- package/lib/components/card-price/card-price.component.d.ts.map +1 -0
- package/lib/components/charging-bar/charging-bar.component.d.ts +1 -0
- package/lib/components/charging-bar/charging-bar.component.d.ts.map +1 -0
- package/lib/components/checkbox/checkbox.component.d.ts +1 -0
- package/lib/components/checkbox/checkbox.component.d.ts.map +1 -0
- package/lib/components/checkbox/checkbox.module.d.ts +1 -0
- package/lib/components/checkbox/checkbox.module.d.ts.map +1 -0
- package/lib/components/color-picker/color-picker.component.d.ts +24 -0
- package/lib/components/color-picker/color-picker.component.d.ts.map +1 -0
- package/lib/components/column/column.component.d.ts +1 -0
- package/lib/components/column/column.component.d.ts.map +1 -0
- package/lib/components/common/label/label.component.d.ts +1 -0
- package/lib/components/common/label/label.component.d.ts.map +1 -0
- package/lib/components/common/placeholder/placeholder.component.d.ts +1 -0
- package/lib/components/common/placeholder/placeholder.component.d.ts.map +1 -0
- package/lib/components/confirm-delete/confirm-delete.component.d.ts +1 -0
- package/lib/components/confirm-delete/confirm-delete.component.d.ts.map +1 -0
- package/lib/components/content-with-buttons/content-with-buttons.component.d.ts +1 -0
- package/lib/components/content-with-buttons/content-with-buttons.component.d.ts.map +1 -0
- package/lib/components/delete/delete.component.d.ts +1 -0
- package/lib/components/delete/delete.component.d.ts.map +1 -0
- package/lib/components/draganddrop-list/draganddrop-list.component.d.ts +1 -0
- package/lib/components/draganddrop-list/draganddrop-list.component.d.ts.map +1 -0
- package/lib/components/dropdown/dropdown.component.d.ts +1 -0
- package/lib/components/dropdown/dropdown.component.d.ts.map +1 -0
- package/lib/components/edit-in-place/edit-in-place.component.d.ts +1 -0
- package/lib/components/edit-in-place/edit-in-place.component.d.ts.map +1 -0
- package/lib/components/expanded-panel/expanded-panel.component.d.ts +1 -0
- package/lib/components/expanded-panel/expanded-panel.component.d.ts.map +1 -0
- package/lib/components/expansion/accordion/accordion-item.interface.d.ts +1 -0
- package/lib/components/expansion/accordion/accordion-item.interface.d.ts.map +1 -0
- package/lib/components/expansion/accordion/accordion-item.token.d.ts +1 -0
- package/lib/components/expansion/accordion/accordion-item.token.d.ts.map +1 -0
- package/lib/components/expansion/accordion/accordion.component.d.ts +1 -0
- package/lib/components/expansion/accordion/accordion.component.d.ts.map +1 -0
- package/lib/components/expansion/expansion-panel/expansion-panel.component.d.ts +1 -0
- package/lib/components/expansion/expansion-panel/expansion-panel.component.d.ts.map +1 -0
- package/lib/components/expansion/expansion-panel/expansion-panel.directive.d.ts +1 -0
- package/lib/components/expansion/expansion-panel/expansion-panel.directive.d.ts.map +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.component.d.ts +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.d.ts +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.d.ts.map +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.interface.d.ts +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.interface.d.ts.map +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.token.d.ts +1 -0
- package/lib/components/expansion/expansion-panel-header/expansion-panel-header.token.d.ts.map +1 -0
- package/lib/components/expansion/expansion.module.d.ts +1 -0
- package/lib/components/expansion/expansion.module.d.ts.map +1 -0
- package/lib/components/faq-section/faq-section-content.dto.d.ts +5 -0
- package/lib/components/faq-section/faq-section-content.dto.d.ts.map +1 -0
- package/lib/components/faq-section/faq-section.component.d.ts +9 -0
- package/lib/components/faq-section/faq-section.component.d.ts.map +1 -0
- package/lib/components/faq-section/faq-section.dto.d.ts +6 -0
- package/lib/components/faq-section/faq-section.dto.d.ts.map +1 -0
- package/lib/components/filters/filter-item.dto.d.ts +1 -0
- package/lib/components/filters/filter-item.dto.d.ts.map +1 -0
- package/lib/components/filters/filters.component.d.ts +1 -0
- package/lib/components/filters/filters.component.d.ts.map +1 -0
- package/lib/components/free-popin/free-popin.component.d.ts +1 -0
- package/lib/components/free-popin/free-popin.component.d.ts.map +1 -0
- package/lib/components/google-preview/google-preview.component.d.ts +1 -0
- package/lib/components/google-preview/google-preview.component.d.ts.map +1 -0
- package/lib/components/grid/grid.component.d.ts +14 -0
- package/lib/components/grid/grid.component.d.ts.map +1 -0
- package/lib/components/header-page/header-page.component.d.ts +1 -0
- package/lib/components/header-page/header-page.component.d.ts.map +1 -0
- package/lib/components/hn/h1/h1.component.d.ts +5 -1
- package/lib/components/hn/h1/h1.component.d.ts.map +1 -0
- package/lib/components/hn/h2/h2.component.d.ts +5 -1
- package/lib/components/hn/h2/h2.component.d.ts.map +1 -0
- package/lib/components/hn/h3/h3.component.d.ts +5 -1
- package/lib/components/hn/h3/h3.component.d.ts.map +1 -0
- package/lib/components/hn/h4/h4.component.d.ts +5 -1
- package/lib/components/hn/h4/h4.component.d.ts.map +1 -0
- package/lib/components/image/image.component.d.ts +1 -0
- package/lib/components/image/image.component.d.ts.map +1 -0
- package/lib/components/image-text-section/image-text-section.component.d.ts +12 -0
- package/lib/components/image-text-section/image-text-section.component.d.ts.map +1 -0
- package/lib/components/image-text-section/image-text-section.dto.d.ts +12 -0
- package/lib/components/image-text-section/image-text-section.dto.d.ts.map +1 -0
- package/lib/components/info/info.component.d.ts +4 -1
- package/lib/components/info/info.component.d.ts.map +1 -0
- package/lib/components/inputs/input/input.component.d.ts +1 -0
- package/lib/components/inputs/input/input.component.d.ts.map +1 -0
- package/lib/components/inputs/input-search/input-search.component.d.ts +1 -0
- package/lib/components/inputs/input-search/input-search.component.d.ts.map +1 -0
- package/lib/components/inputs/input-with-select/input-with-select.component.d.ts +1 -0
- package/lib/components/inputs/input-with-select/input-with-select.component.d.ts.map +1 -0
- package/lib/components/inputs/input-with-select/option-item.dto.d.ts +1 -0
- package/lib/components/inputs/input-with-select/option-item.dto.d.ts.map +1 -0
- package/lib/components/link/link.component.d.ts +1 -0
- package/lib/components/link/link.component.d.ts.map +1 -0
- package/lib/components/loader/loader.component.d.ts +1 -0
- package/lib/components/loader/loader.component.d.ts.map +1 -0
- package/lib/components/logo/logo.component.d.ts +1 -0
- package/lib/components/logo/logo.component.d.ts.map +1 -0
- package/lib/components/menu-tile/menu-tile.component.d.ts +24 -0
- package/lib/components/menu-tile/menu-tile.component.d.ts.map +1 -0
- package/lib/components/mosaic/mosaic.component.d.ts +3 -2
- package/lib/components/mosaic/mosaic.component.d.ts.map +1 -0
- package/lib/components/multiple-search/multiple-search.component.d.ts +1 -0
- package/lib/components/multiple-search/multiple-search.component.d.ts.map +1 -0
- package/lib/components/multiple-search-plus/multiple-search-plus.component.d.ts +3 -1
- package/lib/components/multiple-search-plus/multiple-search-plus.component.d.ts.map +1 -0
- package/lib/components/multiple-search-plus/shared/multiple-search-plus-option.model.d.ts +1 -0
- package/lib/components/multiple-search-plus/shared/multiple-search-plus-option.model.d.ts.map +1 -0
- package/lib/components/multiple-search-plus/shared/multiple-search-plus-results.model.d.ts +1 -0
- package/lib/components/multiple-search-plus/shared/multiple-search-plus-results.model.d.ts.map +1 -0
- package/lib/components/optional-disable-container/optional-disable-container.component.d.ts +1 -0
- package/lib/components/optional-disable-container/optional-disable-container.component.d.ts.map +1 -0
- package/lib/components/pagination/pagination.component.d.ts +1 -0
- package/lib/components/pagination/pagination.component.d.ts.map +1 -0
- package/lib/components/pagination/pagination.module.d.ts +1 -0
- package/lib/components/pagination/pagination.module.d.ts.map +1 -0
- package/lib/components/pagination/pipes/array-pages.pipe.d.ts +1 -0
- package/lib/components/pagination/pipes/array-pages.pipe.d.ts.map +1 -0
- package/lib/components/pagination/pipes/custom-text.pipe.d.ts +1 -0
- package/lib/components/pagination/pipes/custom-text.pipe.d.ts.map +1 -0
- package/lib/components/pagination/pipes/is-last-page.pipe.d.ts +1 -0
- package/lib/components/pagination/pipes/is-last-page.pipe.d.ts.map +1 -0
- package/lib/components/popin/popin.component.d.ts +1 -0
- package/lib/components/popin/popin.component.d.ts.map +1 -0
- package/lib/components/pricing-section/pricing-section-table.dto.d.ts +7 -0
- package/lib/components/pricing-section/pricing-section-table.dto.d.ts.map +1 -0
- package/lib/components/pricing-section/pricing-section.component.d.ts +9 -0
- package/lib/components/pricing-section/pricing-section.component.d.ts.map +1 -0
- package/lib/components/pricing-section/pricing-section.dto.d.ts +8 -0
- package/lib/components/pricing-section/pricing-section.dto.d.ts.map +1 -0
- package/lib/components/progress-bar/progress-bar.component.d.ts +1 -0
- package/lib/components/progress-bar/progress-bar.component.d.ts.map +1 -0
- package/lib/components/radio/option/option.component.d.ts +1 -0
- package/lib/components/radio/option/option.component.d.ts.map +1 -0
- package/lib/components/radio/radio-group.directive.d.ts +1 -0
- package/lib/components/radio/radio-group.directive.d.ts.map +1 -0
- package/lib/components/radio/radio.component.d.ts +1 -0
- package/lib/components/radio/radio.component.d.ts.map +1 -0
- package/lib/components/radio-legacy/{radio-group.directive.d.ts → radio-group-legacy.directive.d.ts} +4 -3
- package/lib/components/radio-legacy/radio-group-legacy.directive.d.ts.map +1 -0
- package/lib/components/radio-legacy/radio-legacy-directive.d.ts +11 -0
- package/lib/components/radio-legacy/radio-legacy-directive.d.ts.map +1 -0
- package/lib/components/radio-legacy/radio.component.d.ts +1 -0
- package/lib/components/radio-legacy/radio.component.d.ts.map +1 -0
- package/lib/components/reassurance-section/reassurance-section-content.dto.d.ts +5 -0
- package/lib/components/reassurance-section/reassurance-section-content.dto.d.ts.map +1 -0
- package/lib/components/reassurance-section/reassurance-section.component.d.ts +9 -0
- package/lib/components/reassurance-section/reassurance-section.component.d.ts.map +1 -0
- package/lib/components/reassurance-section/reassurance-section.dto.d.ts +6 -0
- package/lib/components/reassurance-section/reassurance-section.dto.d.ts.map +1 -0
- package/lib/components/row/row.component.d.ts +4 -1
- package/lib/components/row/row.component.d.ts.map +1 -0
- package/lib/components/search/search.component.d.ts +1 -0
- package/lib/components/search/search.component.d.ts.map +1 -0
- package/lib/components/search/shared/search-option.model.d.ts +1 -0
- package/lib/components/search/shared/search-option.model.d.ts.map +1 -0
- package/lib/components/select/call-to-action.model.d.ts +1 -0
- package/lib/components/select/call-to-action.model.d.ts.map +1 -0
- package/lib/components/select/option/option-selection-handler.interface.d.ts +1 -0
- package/lib/components/select/option/option-selection-handler.interface.d.ts.map +1 -0
- package/lib/components/select/option/option-selection-handler.token.d.ts +1 -0
- package/lib/components/select/option/option-selection-handler.token.d.ts.map +1 -0
- package/lib/components/select/option/option.component.d.ts +1 -0
- package/lib/components/select/option/option.component.d.ts.map +1 -0
- package/lib/components/select/option/select-option.directive.d.ts +1 -0
- package/lib/components/select/option/select-option.directive.d.ts.map +1 -0
- package/lib/components/select/option-call-to-action/option-call-to-action.component.d.ts +1 -0
- package/lib/components/select/option-call-to-action/option-call-to-action.component.d.ts.map +1 -0
- package/lib/components/select/option-group/option-group.component.d.ts +7 -0
- package/lib/components/select/option-group/option-group.component.d.ts.map +1 -0
- package/lib/components/select/select/select.component.d.ts +2 -1
- package/lib/components/select/select/select.component.d.ts.map +1 -0
- package/lib/components/select/select/select.directive.d.ts +1 -0
- package/lib/components/select/select/select.directive.d.ts.map +1 -0
- package/lib/components/select/select/value-change.service.d.ts +1 -0
- package/lib/components/select/select/value-change.service.d.ts.map +1 -0
- package/lib/components/select/select-items.dto.d.ts +1 -0
- package/lib/components/select/select-items.dto.d.ts.map +1 -0
- package/lib/components/select/select-search-trigger/select-search-trigger.component.d.ts +1 -0
- package/lib/components/select/select-search-trigger/select-search-trigger.component.d.ts.map +1 -0
- package/lib/components/select-in-text/select-in-text.component.d.ts +1 -0
- package/lib/components/select-in-text/select-in-text.component.d.ts.map +1 -0
- package/lib/components/selected-list/selected-list.component.d.ts +1 -0
- package/lib/components/selected-list/selected-list.component.d.ts.map +1 -0
- package/lib/components/selected-list/shared/selected-list-option.model.d.ts +1 -0
- package/lib/components/selected-list/shared/selected-list-option.model.d.ts.map +1 -0
- package/lib/components/separator/separator.component.d.ts +1 -0
- package/lib/components/separator/separator.component.d.ts.map +1 -0
- package/lib/components/settings/settings.component.d.ts +1 -0
- package/lib/components/settings/settings.component.d.ts.map +1 -0
- package/lib/components/shared-components.module.d.ts +120 -109
- package/lib/components/shared-components.module.d.ts.map +1 -0
- package/lib/components/slide-in/slide-in.component.d.ts +33 -0
- package/lib/components/slide-in/slide-in.component.d.ts.map +1 -0
- package/lib/components/snackbar/snackbar.component.d.ts +1 -0
- package/lib/components/snackbar/snackbar.component.d.ts.map +1 -0
- package/lib/components/state/state.component.d.ts +1 -0
- package/lib/components/state/state.component.d.ts.map +1 -0
- package/lib/components/summary/summary.component.d.ts +1 -0
- package/lib/components/summary/summary.component.d.ts.map +1 -0
- package/lib/components/switch/switch.component.d.ts +1 -0
- package/lib/components/switch/switch.component.d.ts.map +1 -0
- package/lib/components/table/directives/checkBoxRow.directive.d.ts +1 -0
- package/lib/components/table/directives/checkBoxRow.directive.d.ts.map +1 -0
- package/lib/components/table/directives/column.directive.d.ts +1 -0
- package/lib/components/table/directives/column.directive.d.ts.map +1 -0
- package/lib/components/table/directives/columnHeader.directive.d.ts +1 -0
- package/lib/components/table/directives/columnHeader.directive.d.ts.map +1 -0
- package/lib/components/table/directives/raw.directive.d.ts +1 -0
- package/lib/components/table/directives/raw.directive.d.ts.map +1 -0
- package/lib/components/table/shared/distinct-until-table-filters-changed.d.ts +1 -0
- package/lib/components/table/shared/distinct-until-table-filters-changed.d.ts.map +1 -0
- package/lib/components/table/shared/filters-table.service.d.ts +1 -0
- package/lib/components/table/shared/filters-table.service.d.ts.map +1 -0
- package/lib/components/table/shared/table-checkbox-id.service.d.ts +1 -0
- package/lib/components/table/shared/table-checkbox-id.service.d.ts.map +1 -0
- package/lib/components/table/shared/table-filters-group.model.d.ts +1 -0
- package/lib/components/table/shared/table-filters-group.model.d.ts.map +1 -0
- package/lib/components/table/shared/table-filters.model.d.ts +1 -0
- package/lib/components/table/shared/table-filters.model.d.ts.map +1 -0
- package/lib/components/table/table.component.d.ts +1 -0
- package/lib/components/table/table.component.d.ts.map +1 -0
- package/lib/components/table/table.module.d.ts +1 -0
- package/lib/components/table/table.module.d.ts.map +1 -0
- package/lib/components/tabs/tab/tab.component.d.ts +1 -0
- package/lib/components/tabs/tab/tab.component.d.ts.map +1 -0
- package/lib/components/tabs/tab-body/tab-body.component.d.ts +1 -0
- package/lib/components/tabs/tab-body/tab-body.component.d.ts.map +1 -0
- package/lib/components/tabs/tab-body/tab-body.directive.d.ts +1 -0
- package/lib/components/tabs/tab-body/tab-body.directive.d.ts.map +1 -0
- package/lib/components/tabs/tabs.component.d.ts +3 -1
- package/lib/components/tabs/tabs.component.d.ts.map +1 -0
- package/lib/components/tag/tag.component.d.ts +3 -1
- package/lib/components/tag/tag.component.d.ts.map +1 -0
- package/lib/components/tag-dropdown/tag-dropdown.component.d.ts +1 -0
- package/lib/components/tag-dropdown/tag-dropdown.component.d.ts.map +1 -0
- package/lib/components/tag-input/tag-input.component.d.ts +26 -0
- package/lib/components/tag-input/tag-input.component.d.ts.map +1 -0
- package/lib/components/tag-label/tag-label.component.d.ts +1 -0
- package/lib/components/tag-label/tag-label.component.d.ts.map +1 -0
- package/lib/components/text/text.component.d.ts +5 -1
- package/lib/components/text/text.component.d.ts.map +1 -0
- package/lib/components/text-area/text-area.component.d.ts +1 -0
- package/lib/components/text-area/text-area.component.d.ts.map +1 -0
- package/lib/components/token-check/token-check.component.d.ts +1 -0
- package/lib/components/token-check/token-check.component.d.ts.map +1 -0
- package/lib/components/tooltip/tooltip.component.d.ts +1 -0
- package/lib/components/tooltip/tooltip.component.d.ts.map +1 -0
- package/lib/components/tooltip/tooltip.module.d.ts +1 -0
- package/lib/components/tooltip/tooltip.module.d.ts.map +1 -0
- package/lib/components/tree/tree.component.d.ts +1 -0
- package/lib/components/tree/tree.component.d.ts.map +1 -0
- package/lib/components/tree/tree.dto.d.ts +1 -0
- package/lib/components/tree/tree.dto.d.ts.map +1 -0
- package/lib/components/tree/tree.module.d.ts +1 -0
- package/lib/components/tree/tree.module.d.ts.map +1 -0
- package/lib/components/upload/upload.component.d.ts +9 -1
- package/lib/components/upload/upload.component.d.ts.map +1 -0
- package/lib/components/wrapper/wrapper.component.d.ts +1 -0
- package/lib/components/wrapper/wrapper.component.d.ts.map +1 -0
- package/lib/components/wrapper-blocs/wrapper-blocs.component.d.ts +1 -0
- package/lib/components/wrapper-blocs/wrapper-blocs.component.d.ts.map +1 -0
- package/lib/components/wrapper-multiple-block/wrapper-multiple-block.component.d.ts +1 -0
- package/lib/components/wrapper-multiple-block/wrapper-multiple-block.component.d.ts.map +1 -0
- package/lib/components/wrapper-sidebar/wrapper-sidebar.component.d.ts +1 -0
- package/lib/components/wrapper-sidebar/wrapper-sidebar.component.d.ts.map +1 -0
- package/lib/directives/abstract-debounce/abstract-debounce.directive.d.ts +1 -0
- package/lib/directives/abstract-debounce/abstract-debounce.directive.d.ts.map +1 -0
- package/lib/directives/abstract-debounce/debounce-keyup.directive.d.ts +1 -0
- package/lib/directives/abstract-debounce/debounce-keyup.directive.d.ts.map +1 -0
- package/lib/directives/auto-hide/auto-hide.directive.d.ts +1 -0
- package/lib/directives/auto-hide/auto-hide.directive.d.ts.map +1 -0
- package/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.d.ts +1 -0
- package/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.d.ts.map +1 -0
- package/lib/directives/keyboard-events/keypress-enter.directive.d.ts +1 -0
- package/lib/directives/keyboard-events/keypress-enter.directive.d.ts.map +1 -0
- package/lib/directives/keyboard-events/only-numbers.directive.d.ts +1 -0
- package/lib/directives/keyboard-events/only-numbers.directive.d.ts.map +1 -0
- package/lib/directives/keyboard-events/two-digital-decimal-number.directive.d.ts +1 -0
- package/lib/directives/keyboard-events/two-digital-decimal-number.directive.d.ts.map +1 -0
- package/lib/directives/ng-var.directive.d.ts +1 -0
- package/lib/directives/ng-var.directive.d.ts.map +1 -0
- package/lib/directives/scroll-to/scroll-to.directive.d.ts +1 -0
- package/lib/directives/scroll-to/scroll-to.directive.d.ts.map +1 -0
- package/lib/directives/shared-directives.module.d.ts +4 -3
- package/lib/directives/shared-directives.module.d.ts.map +1 -0
- package/lib/directives/watch-dom-tree/watch-dom-tree.directive.d.ts +1 -0
- package/lib/directives/watch-dom-tree/watch-dom-tree.directive.d.ts.map +1 -0
- package/lib/directives/zindex-toggle/zindex-toggle.directive.d.ts +1 -0
- package/lib/directives/zindex-toggle/zindex-toggle.directive.d.ts.map +1 -0
- package/lib/pipes/call-component-function.pipe.d.ts +1 -0
- package/lib/pipes/call-component-function.pipe.d.ts.map +1 -0
- package/lib/pipes/find-option-selected-field.pipe.d.ts +1 -0
- package/lib/pipes/find-option-selected-field.pipe.d.ts.map +1 -0
- package/lib/pipes/select/filter-options.pipe.d.ts +1 -0
- package/lib/pipes/select/filter-options.pipe.d.ts.map +1 -0
- package/lib/pipes/select/select-filters.pipe.d.ts +1 -0
- package/lib/pipes/select/select-filters.pipe.d.ts.map +1 -0
- package/lib/pipes/selected-list/are-all-options-selected.pipe.d.ts +1 -0
- package/lib/pipes/selected-list/are-all-options-selected.pipe.d.ts.map +1 -0
- package/lib/pipes/shared-pipes.module.d.ts +1 -0
- package/lib/pipes/shared-pipes.module.d.ts.map +1 -0
- package/lib/pipes/tree/format-object-to-recursif-tree.pipe.d.ts +1 -0
- package/lib/pipes/tree/format-object-to-recursif-tree.pipe.d.ts.map +1 -0
- package/lib/pipes/tree/format-object-to-simple-tree.pipe.d.ts +1 -0
- package/lib/pipes/tree/format-object-to-simple-tree.pipe.d.ts.map +1 -0
- package/lib/services/dom.service.d.ts +1 -0
- package/lib/services/dom.service.d.ts.map +1 -0
- package/lib/services/history.service.d.ts +1 -0
- package/lib/services/history.service.d.ts.map +1 -0
- package/lib/services/multiple-selection.service.d.ts +1 -0
- package/lib/services/multiple-selection.service.d.ts.map +1 -0
- package/lib/utils/array.d.ts +1 -0
- package/lib/utils/array.d.ts.map +1 -0
- package/lib/utils/html-container.class.d.ts +1 -0
- package/lib/utils/html-container.class.d.ts.map +1 -0
- package/lib/utils/slection-item.interface.d.ts +1 -0
- package/lib/utils/slection-item.interface.d.ts.map +1 -0
- package/lib/utils/uuid.d.ts +1 -0
- package/lib/utils/uuid.d.ts.map +1 -0
- package/lib/wizi-components.module.d.ts +1 -0
- package/lib/wizi-components.module.d.ts.map +1 -0
- package/package.json +24 -29
- package/public-api.d.ts +21 -2
- package/public-api.d.ts.map +1 -0
- package/wizishop-angular-components.d.ts.map +1 -0
- package/esm2022/lib/animations/in-out/in-out-x.animation.mjs +0 -12
- package/esm2022/lib/animations/in-out/in-out-y.animation.mjs +0 -12
- package/esm2022/lib/animations/list/animate-list-from-bottom.animation.mjs +0 -18
- package/esm2022/lib/animations/list/animate-list-from-left.animation.mjs +0 -18
- package/esm2022/lib/animations/list/animate-list-from-right.animation.mjs +0 -18
- package/esm2022/lib/animations/list/animate-list-from-top.animation.mjs +0 -16
- package/esm2022/lib/animations/show/opacity.animation.mjs +0 -5
- package/esm2022/lib/animations/show/show-from-bottom.animation.mjs +0 -15
- package/esm2022/lib/animations/show/show-from-left.animation.mjs +0 -15
- package/esm2022/lib/animations/show/show-from-right.animation.mjs +0 -15
- package/esm2022/lib/animations/show/show-from-top.animation.mjs +0 -15
- package/esm2022/lib/animations/switch/switch-in-out.animation.mjs +0 -6
- package/esm2022/lib/components/ai-express/ai-express.component.mjs +0 -83
- package/esm2022/lib/components/alert/alert.component.mjs +0 -42
- package/esm2022/lib/components/alert-popup/alert-popup-module.mjs +0 -20
- package/esm2022/lib/components/alert-popup/alert-popup.component.mjs +0 -41
- package/esm2022/lib/components/alert-popup/alert-popup.service.mjs +0 -33
- package/esm2022/lib/components/back/back.component.mjs +0 -12
- package/esm2022/lib/components/block/block-title-legacy/block-title-legacy.component.mjs +0 -21
- package/esm2022/lib/components/block/block.component.mjs +0 -124
- package/esm2022/lib/components/block/separator/block-separator.component.mjs +0 -17
- package/esm2022/lib/components/block-with-checkbox/block-with-checkbox.component.mjs +0 -46
- package/esm2022/lib/components/breadcrumbs/breadcrumbs.component.mjs +0 -27
- package/esm2022/lib/components/breadcrumbs/breadcrumbs.dto.mjs +0 -2
- package/esm2022/lib/components/button/button.component.mjs +0 -200
- package/esm2022/lib/components/calendar/calendar.component.mjs +0 -237
- package/esm2022/lib/components/card-price/card-price.component.mjs +0 -76
- package/esm2022/lib/components/charging-bar/charging-bar.component.mjs +0 -19
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -78
- package/esm2022/lib/components/checkbox/checkbox.module.mjs +0 -25
- package/esm2022/lib/components/column/column.component.mjs +0 -11
- package/esm2022/lib/components/common/label/label.component.mjs +0 -16
- package/esm2022/lib/components/common/placeholder/placeholder.component.mjs +0 -16
- package/esm2022/lib/components/confirm-delete/confirm-delete.component.mjs +0 -64
- package/esm2022/lib/components/content-with-buttons/content-with-buttons.component.mjs +0 -72
- package/esm2022/lib/components/delete/delete.component.mjs +0 -12
- package/esm2022/lib/components/draganddrop-list/draganddrop-list.component.mjs +0 -61
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -26
- package/esm2022/lib/components/edit-in-place/edit-in-place.component.mjs +0 -202
- package/esm2022/lib/components/expanded-panel/expanded-panel.component.mjs +0 -24
- package/esm2022/lib/components/expansion/accordion/accordion-item.interface.mjs +0 -2
- package/esm2022/lib/components/expansion/accordion/accordion-item.token.mjs +0 -3
- package/esm2022/lib/components/expansion/accordion/accordion.component.mjs +0 -74
- package/esm2022/lib/components/expansion/expansion-panel/expansion-panel.component.mjs +0 -29
- package/esm2022/lib/components/expansion/expansion-panel/expansion-panel.directive.mjs +0 -88
- package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.component.mjs +0 -27
- package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.mjs +0 -49
- package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.interface.mjs +0 -2
- package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.token.mjs +0 -3
- package/esm2022/lib/components/expansion/expansion.module.mjs +0 -48
- package/esm2022/lib/components/filters/filter-item.dto.mjs +0 -2
- package/esm2022/lib/components/filters/filters.component.mjs +0 -41
- package/esm2022/lib/components/free-popin/free-popin.component.mjs +0 -66
- package/esm2022/lib/components/google-preview/google-preview.component.mjs +0 -20
- package/esm2022/lib/components/header-page/header-page.component.mjs +0 -42
- package/esm2022/lib/components/hn/h1/h1.component.mjs +0 -26
- package/esm2022/lib/components/hn/h2/h2.component.mjs +0 -13
- package/esm2022/lib/components/hn/h3/h3.component.mjs +0 -18
- package/esm2022/lib/components/hn/h4/h4.component.mjs +0 -18
- package/esm2022/lib/components/image/image.component.mjs +0 -17
- package/esm2022/lib/components/info/info.component.mjs +0 -12
- package/esm2022/lib/components/inputs/input/input.component.mjs +0 -184
- package/esm2022/lib/components/inputs/input-search/input-search.component.mjs +0 -65
- package/esm2022/lib/components/inputs/input-with-select/input-with-select.component.mjs +0 -17
- package/esm2022/lib/components/inputs/input-with-select/option-item.dto.mjs +0 -2
- package/esm2022/lib/components/link/link.component.mjs +0 -57
- package/esm2022/lib/components/loader/loader.component.mjs +0 -21
- package/esm2022/lib/components/logo/logo.component.mjs +0 -20
- package/esm2022/lib/components/mosaic/mosaic.component.mjs +0 -81
- package/esm2022/lib/components/multiple-search/multiple-search.component.mjs +0 -115
- package/esm2022/lib/components/multiple-search-plus/multiple-search-plus.component.mjs +0 -97
- package/esm2022/lib/components/multiple-search-plus/shared/multiple-search-plus-option.model.mjs +0 -2
- package/esm2022/lib/components/multiple-search-plus/shared/multiple-search-plus-results.model.mjs +0 -2
- package/esm2022/lib/components/optional-disable-container/optional-disable-container.component.mjs +0 -17
- package/esm2022/lib/components/pagination/pagination.component.mjs +0 -50
- package/esm2022/lib/components/pagination/pagination.module.mjs +0 -33
- package/esm2022/lib/components/pagination/pipes/array-pages.pipe.mjs +0 -28
- package/esm2022/lib/components/pagination/pipes/custom-text.pipe.mjs +0 -34
- package/esm2022/lib/components/pagination/pipes/is-last-page.pipe.mjs +0 -25
- package/esm2022/lib/components/popin/popin.component.mjs +0 -73
- package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +0 -75
- package/esm2022/lib/components/radio/option/option.component.mjs +0 -27
- package/esm2022/lib/components/radio/radio-group.directive.mjs +0 -40
- package/esm2022/lib/components/radio/radio.component.mjs +0 -38
- package/esm2022/lib/components/radio-legacy/radio-directive.mjs +0 -22
- package/esm2022/lib/components/radio-legacy/radio-group.directive.mjs +0 -34
- package/esm2022/lib/components/radio-legacy/radio.component.mjs +0 -58
- package/esm2022/lib/components/row/row.component.mjs +0 -144
- package/esm2022/lib/components/search/search.component.mjs +0 -86
- package/esm2022/lib/components/search/shared/search-option.model.mjs +0 -2
- package/esm2022/lib/components/select/call-to-action.model.mjs +0 -2
- package/esm2022/lib/components/select/option/option-selection-handler.interface.mjs +0 -2
- package/esm2022/lib/components/select/option/option-selection-handler.token.mjs +0 -3
- package/esm2022/lib/components/select/option/option.component.mjs +0 -28
- package/esm2022/lib/components/select/option/select-option.directive.mjs +0 -98
- package/esm2022/lib/components/select/option-call-to-action/option-call-to-action.component.mjs +0 -12
- package/esm2022/lib/components/select/select/select.component.mjs +0 -198
- package/esm2022/lib/components/select/select/select.directive.mjs +0 -175
- package/esm2022/lib/components/select/select/value-change.service.mjs +0 -190
- package/esm2022/lib/components/select/select-items.dto.mjs +0 -2
- package/esm2022/lib/components/select/select-search-trigger/select-search-trigger.component.mjs +0 -38
- package/esm2022/lib/components/select-in-text/select-in-text.component.mjs +0 -103
- package/esm2022/lib/components/selected-list/selected-list.component.mjs +0 -62
- package/esm2022/lib/components/selected-list/shared/selected-list-option.model.mjs +0 -2
- package/esm2022/lib/components/separator/separator.component.mjs +0 -17
- package/esm2022/lib/components/settings/settings.component.mjs +0 -12
- package/esm2022/lib/components/shared-components.module.mjs +0 -444
- package/esm2022/lib/components/snackbar/snackbar.component.mjs +0 -85
- package/esm2022/lib/components/state/state.component.mjs +0 -16
- package/esm2022/lib/components/summary/summary.component.mjs +0 -41
- package/esm2022/lib/components/switch/switch.component.mjs +0 -89
- package/esm2022/lib/components/table/directives/checkBoxRow.directive.mjs +0 -92
- package/esm2022/lib/components/table/directives/column.directive.mjs +0 -42
- package/esm2022/lib/components/table/directives/columnHeader.directive.mjs +0 -199
- package/esm2022/lib/components/table/directives/raw.directive.mjs +0 -30
- package/esm2022/lib/components/table/shared/distinct-until-table-filters-changed.mjs +0 -21
- package/esm2022/lib/components/table/shared/filters-table.service.mjs +0 -68
- package/esm2022/lib/components/table/shared/table-checkbox-id.service.mjs +0 -20
- package/esm2022/lib/components/table/shared/table-filters-group.model.mjs +0 -10
- package/esm2022/lib/components/table/shared/table-filters.model.mjs +0 -2
- package/esm2022/lib/components/table/table.component.mjs +0 -146
- package/esm2022/lib/components/table/table.module.mjs +0 -46
- package/esm2022/lib/components/tabs/tab/tab.component.mjs +0 -43
- package/esm2022/lib/components/tabs/tab-body/tab-body.component.mjs +0 -23
- package/esm2022/lib/components/tabs/tab-body/tab-body.directive.mjs +0 -36
- package/esm2022/lib/components/tabs/tabs.component.mjs +0 -99
- package/esm2022/lib/components/tag/tag.component.mjs +0 -38
- package/esm2022/lib/components/tag-dropdown/tag-dropdown.component.mjs +0 -45
- package/esm2022/lib/components/tag-label/tag-label.component.mjs +0 -34
- package/esm2022/lib/components/text/text.component.mjs +0 -13
- package/esm2022/lib/components/text-area/text-area.component.mjs +0 -99
- package/esm2022/lib/components/token-check/token-check.component.mjs +0 -21
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -30
- package/esm2022/lib/components/tooltip/tooltip.module.mjs +0 -25
- package/esm2022/lib/components/tree/tree.component.mjs +0 -25
- package/esm2022/lib/components/tree/tree.dto.mjs +0 -2
- package/esm2022/lib/components/tree/tree.module.mjs +0 -29
- package/esm2022/lib/components/upload/upload.component.mjs +0 -36
- package/esm2022/lib/components/wrapper/wrapper.component.mjs +0 -18
- package/esm2022/lib/components/wrapper-blocs/wrapper-blocs.component.mjs +0 -19
- package/esm2022/lib/components/wrapper-multiple-block/wrapper-multiple-block.component.mjs +0 -12
- package/esm2022/lib/components/wrapper-sidebar/wrapper-sidebar.component.mjs +0 -30
- package/esm2022/lib/directives/abstract-debounce/abstract-debounce.directive.mjs +0 -37
- package/esm2022/lib/directives/abstract-debounce/debounce-keyup.directive.mjs +0 -24
- package/esm2022/lib/directives/auto-hide/auto-hide.directive.mjs +0 -50
- package/esm2022/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.mjs +0 -32
- package/esm2022/lib/directives/keyboard-events/keypress-enter.directive.mjs +0 -25
- package/esm2022/lib/directives/keyboard-events/only-numbers.directive.mjs +0 -45
- package/esm2022/lib/directives/keyboard-events/two-digital-decimal-number.directive.mjs +0 -36
- package/esm2022/lib/directives/ng-var.directive.mjs +0 -32
- package/esm2022/lib/directives/scroll-to/scroll-to.directive.mjs +0 -32
- package/esm2022/lib/directives/shared-directives.module.mjs +0 -72
- package/esm2022/lib/directives/watch-dom-tree/watch-dom-tree.directive.mjs +0 -30
- package/esm2022/lib/directives/zindex-toggle/zindex-toggle.directive.mjs +0 -44
- package/esm2022/lib/pipes/call-component-function.pipe.mjs +0 -24
- package/esm2022/lib/pipes/find-option-selected-field.pipe.mjs +0 -29
- package/esm2022/lib/pipes/select/filter-options.pipe.mjs +0 -19
- package/esm2022/lib/pipes/select/select-filters.pipe.mjs +0 -19
- package/esm2022/lib/pipes/selected-list/are-all-options-selected.pipe.mjs +0 -17
- package/esm2022/lib/pipes/shared-pipes.module.mjs +0 -43
- package/esm2022/lib/pipes/tree/format-object-to-recursif-tree.pipe.mjs +0 -41
- package/esm2022/lib/pipes/tree/format-object-to-simple-tree.pipe.mjs +0 -49
- package/esm2022/lib/services/dom.service.mjs +0 -59
- package/esm2022/lib/services/history.service.mjs +0 -53
- package/esm2022/lib/services/multiple-selection.service.mjs +0 -62
- package/esm2022/lib/utils/array.mjs +0 -2
- package/esm2022/lib/utils/html-container.class.mjs +0 -30
- package/esm2022/lib/utils/slection-item.interface.mjs +0 -2
- package/esm2022/lib/utils/uuid.mjs +0 -8
- package/esm2022/lib/wizi-components.module.mjs +0 -34
- package/esm2022/public-api.mjs +0 -156
- package/esm2022/wizishop-angular-components.mjs +0 -5
- package/lib/components/radio-legacy/radio-directive.d.ts +0 -10
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { Attribute, Component, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { FormGroupDirective } from '@angular/forms';
|
|
3
|
-
import { interval } from 'rxjs';
|
|
4
|
-
import { takeWhile } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "../../directives/auto-hide/auto-hide.directive";
|
|
8
|
-
import * as i3 from "@angular/forms";
|
|
9
|
-
export class ButtonComponent {
|
|
10
|
-
set isLoading(isLoading) {
|
|
11
|
-
this._isLoading = isLoading;
|
|
12
|
-
this.isLoadingChange.next(isLoading);
|
|
13
|
-
this.toggleLoading();
|
|
14
|
-
}
|
|
15
|
-
get isLoading() {
|
|
16
|
-
return this._isLoading;
|
|
17
|
-
}
|
|
18
|
-
constructor(type, formGroup) {
|
|
19
|
-
this.type = type;
|
|
20
|
-
this.formGroup = formGroup;
|
|
21
|
-
// todo add button type (ex: for submit and check if it works with template driven forms)
|
|
22
|
-
this.extraClasses = 'is-info'; // todo make a list of existing class
|
|
23
|
-
this.label = '';
|
|
24
|
-
this.icon = '';
|
|
25
|
-
this.isLoadingSvg = false;
|
|
26
|
-
this.textcolor = null;
|
|
27
|
-
this.widthAuto = false;
|
|
28
|
-
this.contentHorizontalPosition = 'center';
|
|
29
|
-
this.iconFontSize = 12;
|
|
30
|
-
this.hasLoader = false;
|
|
31
|
-
this.disabled = false;
|
|
32
|
-
this.whiteSpaceNowrap = false;
|
|
33
|
-
this.opacity = false;
|
|
34
|
-
// TODO MAKE ANNIMATION AVAILABLE FOR MOBILE as CONFIRM DELETE DO (because, its doeant show the text and trigger click)
|
|
35
|
-
this.animation = false;
|
|
36
|
-
this.animationRight = false;
|
|
37
|
-
this.animationText = '';
|
|
38
|
-
this.confirmDelete = false;
|
|
39
|
-
this.confirmDeleteText = '';
|
|
40
|
-
this.noPadding = false;
|
|
41
|
-
this.tooltipPosition = 'top-center';
|
|
42
|
-
this.tooltipOneline = false;
|
|
43
|
-
this.confirmDeletePosition = 'right';
|
|
44
|
-
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
45
|
-
this.click = new EventEmitter();
|
|
46
|
-
this.isLoadingChange = new EventEmitter();
|
|
47
|
-
this._isLoading = false;
|
|
48
|
-
this.interval = null;
|
|
49
|
-
this.waitForConfirmDelete = false;
|
|
50
|
-
this.buttonMaxWidth = '0px';
|
|
51
|
-
this.buttonWidth = '0px';
|
|
52
|
-
this.buttonMaxWidthDelete = '0px';
|
|
53
|
-
this.buttonWidthDelete = '0px';
|
|
54
|
-
this.currentLoading = 0;
|
|
55
|
-
}
|
|
56
|
-
ngOnInit() {
|
|
57
|
-
if (this.confirmDelete) {
|
|
58
|
-
this.waitForConfirmDelete = true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
toggleLoading() {
|
|
62
|
-
this.currentLoading = this.isLoading ? 10 : 100;
|
|
63
|
-
interval(200).pipe(takeWhile(time => this.isLoading)).subscribe(() => {
|
|
64
|
-
if (this.currentLoading < 85) {
|
|
65
|
-
this.currentLoading += Math.floor(Math.random() * 15);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
onButtonClickLoader() {
|
|
70
|
-
this.isLoadingSvg = true;
|
|
71
|
-
}
|
|
72
|
-
addMaxWidth() {
|
|
73
|
-
this.buttonMaxWidth = this.buttonWidth + 'px';
|
|
74
|
-
}
|
|
75
|
-
resetMaxWidth() {
|
|
76
|
-
this.buttonMaxWidth = '0px';
|
|
77
|
-
}
|
|
78
|
-
addMaxWidthDelete() {
|
|
79
|
-
this.buttonMaxWidthDelete = this.buttonWidthDelete + 'px';
|
|
80
|
-
}
|
|
81
|
-
resetMaxWidthDelete() {
|
|
82
|
-
this.buttonMaxWidthDelete = '0px';
|
|
83
|
-
this.waitForConfirmDelete = true;
|
|
84
|
-
}
|
|
85
|
-
onButtonClick(event) {
|
|
86
|
-
event.stopPropagation();
|
|
87
|
-
if (this.disabled) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
if (this.type === 'submit' && this.formGroup) { // Maybe there is a better way to handle submit
|
|
91
|
-
this.formGroup.onSubmit(this.formGroup.value);
|
|
92
|
-
}
|
|
93
|
-
if (this.hasLoader) {
|
|
94
|
-
this.isLoading = false;
|
|
95
|
-
setTimeout(() => {
|
|
96
|
-
this.isLoading = true;
|
|
97
|
-
}, 0);
|
|
98
|
-
}
|
|
99
|
-
if (!this.waitForConfirmDelete) {
|
|
100
|
-
this.click.emit(event);
|
|
101
|
-
if (this.confirmDelete) {
|
|
102
|
-
this.resetMaxWidthDelete();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
this.waitForConfirmDelete = false;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
ngAfterViewInit() {
|
|
110
|
-
setTimeout(() => {
|
|
111
|
-
if (this.animation) {
|
|
112
|
-
this.buttonWidth = this.calculWidth.nativeElement.offsetWidth;
|
|
113
|
-
}
|
|
114
|
-
if (this.confirmDelete) {
|
|
115
|
-
this.buttonWidthDelete = this.calculWidthDelete.nativeElement.offsetWidth;
|
|
116
|
-
}
|
|
117
|
-
}, 1000);
|
|
118
|
-
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ButtonComponent, deps: [{ token: 'type', attribute: true }, { token: FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ButtonComponent, selector: "wac-button", inputs: { extraClasses: "extraClasses", label: "label", icon: "icon", isLoadingSvg: "isLoadingSvg", iconNext: "iconNext", textcolor: "textcolor", colorIcon: "colorIcon", widthAuto: "widthAuto", contentHorizontalPosition: "contentHorizontalPosition", iconFontSize: "iconFontSize", hasLoader: "hasLoader", disabled: "disabled", whiteSpaceNowrap: "whiteSpaceNowrap", opacity: "opacity", animation: "animation", animationRight: "animationRight", animationText: "animationText", confirmDelete: "confirmDelete", confirmDeleteText: "confirmDeleteText", coin: "coin", tooltip: "tooltip", tooltipWidth: "tooltipWidth", borderColor: "borderColor", noPadding: "noPadding", tooltipPosition: "tooltipPosition", tooltipOneline: "tooltipOneline", confirmDeletePosition: "confirmDeletePosition", isLoading: "isLoading" }, outputs: { click: "click", isLoadingChange: "isLoadingChange" }, viewQueries: [{ propertyName: "calculWidth", first: true, predicate: ["calculWidth"], descendants: true }, { propertyName: "calculWidthDelete", first: true, predicate: ["calculWidthDelete"], descendants: true }], ngImport: i0, template: "<a\r\n [class]=\"'wac-button ' + extraClasses\"\r\n [style.borderColor]=\"borderColor ? borderColor + '!important' : ''\"\r\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\r\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\r\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\r\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\r\n [ngClass]=\"[\r\n label === '' ? 'alone' : '',\r\n coin ? 'has-coin width-auto' : '',\r\n animationRight ? 'animation-right' : '',\r\n animation ? 'animationText' : '',\r\n isLoading ? 'is-loading' : '',\r\n opacity ? 'opacity' : '',\r\n disabled ? 'disabled' : '',\r\n widthAuto ? 'width-auto' : '',\r\n noPadding ? 'no-padding' : '',\r\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\r\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\r\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\r\n ]\"\r\n [ngStyle]=\"{\r\n 'text-align': contentHorizontalPosition\r\n }\"\r\n>\r\n <span class=\"wac-button__wrapper\" [style.color]=\"textcolor ? textcolor : ''\" [ngClass]=\"{'loading-class': isLoadingSvg}\">\r\n <svg *ngIf=\"isLoadingSvg; else iconTemplate\" version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n width=\"20px\" height=\"20px\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50;\" xml:space=\"preserve\">\r\n <path fill=\"#fff\" d=\"M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z\">\r\n <animateTransform attributeType=\"xml\"\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 25 25\"\r\n to=\"360 25 25\"\r\n dur=\"0.6s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </svg>\r\n <ng-template #iconTemplate>\r\n <i *ngIf=\"icon\" [ngClass]=\"icon\" [style.color]=\"colorIcon\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </ng-template>\r\n {{ label }}\r\n <i *ngIf=\"iconNext\" [style.color]=\"colorIcon\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </span>\r\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\r\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\r\n </span>\r\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\r\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\r\n </span>\r\n <span *ngIf=\"coin\" class=\"wac-button__coin\"><i class=\"fa-solid fa-coin-front\"></i><span [innerHTML]=\"coin\"></span></span>\r\n <span\r\n class=\"wac-button__loader\"\r\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\r\n *ngIf=\"isLoading\"\r\n [style.width]=\"currentLoading + '%'\"\r\n >\r\n </span>\r\n <span class=\"wac-button__tooltips {{ tooltipPosition }}\" [ngClass]=\"{'oneline': tooltipOneline}\" [style.minWidth]=\"tooltipWidth\" *ngIf=\"tooltip\">\r\n {{ tooltip }}\r\n </span>\r\n</a>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }] }); }
|
|
121
|
-
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
123
|
-
type: Component,
|
|
124
|
-
args: [{ selector: 'wac-button', template: "<a\r\n [class]=\"'wac-button ' + extraClasses\"\r\n [style.borderColor]=\"borderColor ? borderColor + '!important' : ''\"\r\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\r\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\r\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\r\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\r\n [ngClass]=\"[\r\n label === '' ? 'alone' : '',\r\n coin ? 'has-coin width-auto' : '',\r\n animationRight ? 'animation-right' : '',\r\n animation ? 'animationText' : '',\r\n isLoading ? 'is-loading' : '',\r\n opacity ? 'opacity' : '',\r\n disabled ? 'disabled' : '',\r\n widthAuto ? 'width-auto' : '',\r\n noPadding ? 'no-padding' : '',\r\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\r\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\r\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\r\n ]\"\r\n [ngStyle]=\"{\r\n 'text-align': contentHorizontalPosition\r\n }\"\r\n>\r\n <span class=\"wac-button__wrapper\" [style.color]=\"textcolor ? textcolor : ''\" [ngClass]=\"{'loading-class': isLoadingSvg}\">\r\n <svg *ngIf=\"isLoadingSvg; else iconTemplate\" version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n width=\"20px\" height=\"20px\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50;\" xml:space=\"preserve\">\r\n <path fill=\"#fff\" d=\"M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z\">\r\n <animateTransform attributeType=\"xml\"\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 25 25\"\r\n to=\"360 25 25\"\r\n dur=\"0.6s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </svg>\r\n <ng-template #iconTemplate>\r\n <i *ngIf=\"icon\" [ngClass]=\"icon\" [style.color]=\"colorIcon\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </ng-template>\r\n {{ label }}\r\n <i *ngIf=\"iconNext\" [style.color]=\"colorIcon\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </span>\r\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\r\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\r\n </span>\r\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\r\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\r\n </span>\r\n <span *ngIf=\"coin\" class=\"wac-button__coin\"><i class=\"fa-solid fa-coin-front\"></i><span [innerHTML]=\"coin\"></span></span>\r\n <span\r\n class=\"wac-button__loader\"\r\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\r\n *ngIf=\"isLoading\"\r\n [style.width]=\"currentLoading + '%'\"\r\n >\r\n </span>\r\n <span class=\"wac-button__tooltips {{ tooltipPosition }}\" [ngClass]=\"{'oneline': tooltipOneline}\" [style.minWidth]=\"tooltipWidth\" *ngIf=\"tooltip\">\r\n {{ tooltip }}\r\n </span>\r\n</a>\r\n" }]
|
|
125
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
126
|
-
type: Attribute,
|
|
127
|
-
args: ['type']
|
|
128
|
-
}] }, { type: i3.FormGroupDirective, decorators: [{
|
|
129
|
-
type: Optional
|
|
130
|
-
}, {
|
|
131
|
-
type: Inject,
|
|
132
|
-
args: [FormGroupDirective]
|
|
133
|
-
}] }], propDecorators: { extraClasses: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], label: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], icon: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}], isLoadingSvg: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], iconNext: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], textcolor: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], colorIcon: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], widthAuto: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], contentHorizontalPosition: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], iconFontSize: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], hasLoader: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], disabled: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], whiteSpaceNowrap: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], opacity: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], animation: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], animationRight: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], animationText: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], confirmDelete: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], confirmDeleteText: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], coin: [{
|
|
172
|
-
type: Input
|
|
173
|
-
}], tooltip: [{
|
|
174
|
-
type: Input
|
|
175
|
-
}], tooltipWidth: [{
|
|
176
|
-
type: Input
|
|
177
|
-
}], borderColor: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], noPadding: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], tooltipPosition: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}], tooltipOneline: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], confirmDeletePosition: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], click: [{
|
|
188
|
-
type: Output
|
|
189
|
-
}], isLoading: [{
|
|
190
|
-
type: Input
|
|
191
|
-
}], isLoadingChange: [{
|
|
192
|
-
type: Output
|
|
193
|
-
}], calculWidth: [{
|
|
194
|
-
type: ViewChild,
|
|
195
|
-
args: ['calculWidth']
|
|
196
|
-
}], calculWidthDelete: [{
|
|
197
|
-
type: ViewChild,
|
|
198
|
-
args: ['calculWidthDelete']
|
|
199
|
-
}] } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU0zQyxNQUFNLE9BQU8sZUFBZTtJQXNGMUIsSUFBYSxTQUFTLENBQUMsU0FBbUI7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQXVCRCxZQUM2QixJQUFZLEVBQ1MsU0FBNkI7UUFEbEQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNTLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBeEgvRSx5RkFBeUY7UUFFekYsaUJBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxxQ0FBcUM7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YTtnQkFJeEIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQXR0cmlidXRlLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2FjLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgLy8gdG9kbyBhZGQgYnV0dG9uIHR5cGUgKGV4OiBmb3Igc3VibWl0IGFuZCBjaGVjayBpZiBpdCB3b3JrcyB3aXRoIHRlbXBsYXRlIGRyaXZlbiBmb3JtcylcclxuICBASW5wdXQoKVxyXG4gIGV4dHJhQ2xhc3NlcyA9ICdpcy1pbmZvJzsgLy8gdG9kbyBtYWtlIGEgbGlzdCBvZiBleGlzdGluZyBjbGFzc1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxhYmVsID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbiA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBcclxuICBpc0xvYWRpbmdTdmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBpY29uTmV4dDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHRjb2xvciA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29sb3JJY29uOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGhBdXRvID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29udGVudEhvcml6b250YWxQb3NpdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2NlbnRlcic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbkZvbnRTaXplID0gMTI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGFzTG9hZGVyID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB3aGl0ZVNwYWNlTm93cmFwID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgb3BhY2l0eSA9IGZhbHNlO1xyXG4gIC8vIFRPRE8gTUFLRSBBTk5JTUFUSU9OIEFWQUlMQUJMRSBGT1IgTU9CSUxFIGFzIENPTkZJUk0gREVMRVRFIERPIChiZWNhdXNlLCBpdHMgZG9lYW50IHNob3cgdGhlIHRleHQgYW5kIHRyaWdnZXIgY2xpY2spXHJcbiAgQElucHV0KClcclxuICBhbmltYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBhbmltYXRpb25SaWdodCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFuaW1hdGlvblRleHQgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBjb25maXJtRGVsZXRlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29uZmlybURlbGV0ZVRleHQgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBjb2luOiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdG9vbHRpcDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRvb2x0aXBXaWR0aDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbm9QYWRkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdG9vbHRpcFBvc2l0aW9uOiAndG9wLWNlbnRlcicgfCAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLWNlbnRlcicgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnbGVmdCcgfCAncmlnaHQnID0gJ3RvcC1jZW50ZXInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRvb2x0aXBPbmVsaW5lID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29uZmlybURlbGV0ZVBvc2l0aW9uID0gJ3JpZ2h0JztcclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKSBzZXQgaXNMb2FkaW5nKGlzTG9hZGluZyA6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzTG9hZGluZyA9IGlzTG9hZGluZztcclxuICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLm5leHQoaXNMb2FkaW5nKTtcclxuICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGlzTG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgZ2V0IGlzTG9hZGluZygpIDogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNMb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBpbnRlcnZhbCA9IG51bGw7XHJcblxyXG4gIHdhaXRGb3JDb25maXJtRGVsZXRlID0gZmFsc2U7XHJcblxyXG4gIGJ1dHRvbk1heFdpZHRoID0gJzBweCc7XHJcbiAgYnV0dG9uV2lkdGggPSAnMHB4JztcclxuXHJcbiAgYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcclxuICBidXR0b25XaWR0aERlbGV0ZSA9ICcwcHgnO1xyXG5cclxuICBjdXJyZW50TG9hZGluZyA9IDA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbGN1bFdpZHRoJylcclxuICBjYWxjdWxXaWR0aDogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2FsY3VsV2lkdGhEZWxldGUnKVxyXG4gIGNhbGN1bFdpZHRoRGVsZXRlOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBBdHRyaWJ1dGUoJ3R5cGUnKSBwcml2YXRlIHR5cGU6IHN0cmluZyxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRm9ybUdyb3VwRGlyZWN0aXZlKSBwcml2YXRlIGZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlXHJcbiAgICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xyXG4gICAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRMb2FkaW5nID0gdGhpcy5pc0xvYWRpbmcgPyAxMCA6IDEwMDtcclxuXHJcbiAgICBpbnRlcnZhbCgyMDApLnBpcGUodGFrZVdoaWxlKCB0aW1lPT4gdGhpcy5pc0xvYWRpbmcpKS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TG9hZGluZyA8IDg1KSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRMb2FkaW5nICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE1KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrTG9hZGVyKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdTdmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYWRkTWF4V2lkdGgoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoID0gdGhpcy5idXR0b25XaWR0aCArICdweCc7XHJcbiAgfVxyXG5cclxuICByZXNldE1heFdpZHRoKCkge1xyXG4gICAgdGhpcy5idXR0b25NYXhXaWR0aCA9ICcwcHgnO1xyXG4gIH1cclxuXHJcbiAgYWRkTWF4V2lkdGhEZWxldGUoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoRGVsZXRlID0gdGhpcy5idXR0b25XaWR0aERlbGV0ZSArICdweCc7XHJcbiAgfVxyXG5cclxuICByZXNldE1heFdpZHRoRGVsZXRlKCkge1xyXG4gICAgdGhpcy5idXR0b25NYXhXaWR0aERlbGV0ZSA9ICcwcHgnO1xyXG4gICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50KXtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3N1Ym1pdCcgJiYgdGhpcy5mb3JtR3JvdXApIHsgLy8gTWF5YmUgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSBzdWJtaXRcclxuICAgICAgdGhpcy5mb3JtR3JvdXAub25TdWJtaXQodGhpcy5mb3JtR3JvdXAudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGFzTG9hZGVyKSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAvLyB0cmljayB0byByZXNldCB0aGUgYW5pbWF0aW9uIGxvYWRpbmdcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSkge1xyXG4gICAgICB0aGlzLmNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gICAgICBpZiAodGhpcy5jb25maXJtRGVsZXRlKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldE1heFdpZHRoRGVsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud2FpdEZvckNvbmZpcm1EZWxldGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5hbmltYXRpb24pIHtcclxuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoID0gdGhpcy5jYWxjdWxXaWR0aC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpcm1EZWxldGUpIHtcclxuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoRGVsZXRlID0gdGhpcy5jYWxjdWxXaWR0aERlbGV0ZS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcbn1cclxuIiwiPGFcclxuICBbY2xhc3NdPVwiJ3dhYy1idXR0b24gJyArIGV4dHJhQ2xhc3Nlc1wiXHJcbiAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgKyAnIWltcG9ydGFudCcgOiAnJ1wiXHJcbiAgKGNsaWNrKT1cImNvbmZpcm1EZWxldGUgJiYgd2FpdEZvckNvbmZpcm1EZWxldGUgPyBhZGRNYXhXaWR0aERlbGV0ZSgpIDogJyc7b25CdXR0b25DbGljaygkZXZlbnQpO1wiXHJcbiAgKG1vdXNlbGVhdmUpPVwiYW5pbWF0aW9uID8gcmVzZXRNYXhXaWR0aCgpIDogJyc7XCJcclxuICAobW91c2VlbnRlcik9XCJhbmltYXRpb24gPyBhZGRNYXhXaWR0aCgpIDogJyc7XCJcclxuICB3ekF1dG9IaWRlIChjbGlja091dHNpZGUpPVwiY29uZmlybURlbGV0ZSAmJiAhd2FpdEZvckNvbmZpcm1EZWxldGUgPyByZXNldE1heFdpZHRoRGVsZXRlKCkgOiAnJ1wiXHJcbiAgW25nQ2xhc3NdPVwiW1xyXG4gICAgbGFiZWwgPT09ICcnID8gJ2Fsb25lJyA6ICcnLFxyXG4gICAgY29pbiA/ICdoYXMtY29pbiB3aWR0aC1hdXRvJyA6ICcnLFxyXG4gICAgYW5pbWF0aW9uUmlnaHQgPyAnYW5pbWF0aW9uLXJpZ2h0JyA6ICcnLFxyXG4gICAgYW5pbWF0aW9uID8gJ2FuaW1hdGlvblRleHQnIDogJycsXHJcbiAgICBpc0xvYWRpbmcgPyAnaXMtbG9hZGluZycgOiAnJyxcclxuICAgIG9wYWNpdHkgPyAnb3BhY2l0eScgOiAnJyxcclxuICAgIGRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnLFxyXG4gICAgd2lkdGhBdXRvID8gJ3dpZHRoLWF1dG8nIDogJycsXHJcbiAgICBub1BhZGRpbmcgPyAnbm8tcGFkZGluZycgOiAnJyxcclxuICAgIHdoaXRlU3BhY2VOb3dyYXAgPyAnd2hpdGUtc3BhY2Utbm8td3JhcCcgOiAnJyxcclxuICAgICF3YWl0Rm9yQ29uZmlybURlbGV0ZSAmJiBjb25maXJtRGVsZXRlID8gJ3N0ZXAtZGVsZXRlJyA6ICcnLFxyXG4gICAgY29uZmlybURlbGV0ZSA/ICdkZWxldGVQb3NpdGlvbi0nICsgY29uZmlybURlbGV0ZVBvc2l0aW9uIDogJydcclxuICAgIF1cIlxyXG4gICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAndGV4dC1hbGlnbic6IGNvbnRlbnRIb3Jpem9udGFsUG9zaXRpb25cclxuICAgIH1cIlxyXG4+XHJcbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX193cmFwcGVyXCIgW3N0eWxlLmNvbG9yXT1cInRleHRjb2xvciA/IHRleHRjb2xvciA6ICcnXCIgW25nQ2xhc3NdPVwieydsb2FkaW5nLWNsYXNzJzogaXNMb2FkaW5nU3ZnfVwiPlxyXG4gICAgPHN2ZyAqbmdJZj1cImlzTG9hZGluZ1N2ZzsgZWxzZSBpY29uVGVtcGxhdGVcIiB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJsb2FkZXItMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4PVwiMHB4XCIgeT1cIjBweFwiXHJcbiAgICAgd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIiBzdHlsZT1cImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAgNTA7XCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cclxuICAgICAgPHBhdGggZmlsbD1cIiNmZmZcIiBkPVwiTTQzLjkzNSwyNS4xNDVjMC0xMC4zMTgtOC4zNjQtMTguNjgzLTE4LjY4My0xOC42ODNjLTEwLjMxOCwwLTE4LjY4Myw4LjM2NS0xOC42ODMsMTguNjgzaDQuMDY4YzAtOC4wNzEsNi41NDMtMTQuNjE1LDE0LjYxNS0xNC42MTVjOC4wNzIsMCwxNC42MTUsNi41NDMsMTQuNjE1LDE0LjYxNUg0My45MzV6XCI+XHJcbiAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlVHlwZT1cInhtbFwiXHJcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCJcclxuICAgICAgICAgIHR5cGU9XCJyb3RhdGVcIlxyXG4gICAgICAgICAgZnJvbT1cIjAgMjUgMjVcIlxyXG4gICAgICAgICAgdG89XCIzNjAgMjUgMjVcIlxyXG4gICAgICAgICAgZHVyPVwiMC42c1wiXHJcbiAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XHJcbiAgICAgIDwvcGF0aD5cclxuICAgIDwvc3ZnPlxyXG4gICAgPG5nLXRlbXBsYXRlICNpY29uVGVtcGxhdGU+XHJcbiAgICAgIDxpICpuZ0lmPVwiaWNvblwiIFtuZ0NsYXNzXT1cImljb25cIiBbc3R5bGUuY29sb3JdPVwiY29sb3JJY29uXCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJpY29uRm9udFNpemVcIj48L2k+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAge3sgbGFiZWwgfX1cclxuICAgIDxpICpuZ0lmPVwiaWNvbk5leHRcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JJY29uXCIgW25nQ2xhc3NdPVwiaWNvbk5leHRcIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cImljb25Gb250U2l6ZVwiPjwvaT5cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX19hbmltYXRpb25cIiBbc3R5bGUubWF4V2lkdGhdPVwiYnV0dG9uTWF4V2lkdGhcIiBbc3R5bGUud2lkdGhdPVwiYnV0dG9uV2lkdGggKyAncHgnXCI+XHJcbiAgICA8c3BhbiAjY2FsY3VsV2lkdGggY2xhc3M9XCJ3YWMtYnV0dG9uX19hbmltYXRpb25fX3RleHRcIiBbaW5uZXJIVE1MXT1cImFuaW1hdGlvblRleHRcIj48L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwid2FjLWJ1dHRvbl9fY29uZmlybURlbGV0ZVwiIFtzdHlsZS5tYXhXaWR0aF09XCJidXR0b25NYXhXaWR0aERlbGV0ZVwiIFtzdHlsZS53aWR0aF09XCJidXR0b25XaWR0aERlbGV0ZSArICdweCdcIj5cclxuICAgIDxzcGFuICNjYWxjdWxXaWR0aERlbGV0ZSBjbGFzcz1cIndhYy1idXR0b25fX2NvbmZpcm1EZWxldGVfX3RleHRcIiBbaW5uZXJIVE1MXT1cImNvbmZpcm1EZWxldGVUZXh0XCI+PC9zcGFuPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiAqbmdJZj1cImNvaW5cIiBjbGFzcz1cIndhYy1idXR0b25fX2NvaW5cIj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNvaW4tZnJvbnRcIj48L2k+PHNwYW4gW2lubmVySFRNTF09XCJjb2luXCI+PC9zcGFuPjwvc3Bhbj5cclxuICA8c3BhblxyXG4gICAgY2xhc3M9XCJ3YWMtYnV0dG9uX19sb2FkZXJcIlxyXG4gICAgW25nQ2xhc3NdPVwiZXh0cmFDbGFzc2VzLmluY2x1ZGVzKCdpcy1vdXRsaW5lZCcpID8gJ291dGxpbmVkJyA6ICcnXCJcclxuICAgICpuZ0lmPVwiaXNMb2FkaW5nXCJcclxuICAgIFtzdHlsZS53aWR0aF09XCJjdXJyZW50TG9hZGluZyArICclJ1wiXHJcbiAgPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cIndhYy1idXR0b25fX3Rvb2x0aXBzIHt7IHRvb2x0aXBQb3NpdGlvbiB9fVwiIFtuZ0NsYXNzXT1cInsnb25lbGluZSc6IHRvb2x0aXBPbmVsaW5lfVwiIFtzdHlsZS5taW5XaWR0aF09XCJ0b29sdGlwV2lkdGhcIiAqbmdJZj1cInRvb2x0aXBcIj5cclxuICAgIHt7IHRvb2x0aXAgfX1cclxuICA8L3NwYW4+XHJcbjwvYT5cclxuIl19
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import { DatePipe } from '@angular/common';
|
|
2
|
-
import { Component, Input, EventEmitter, Output, ChangeDetectionStrategy, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { opacityAnimation } from '../../animations/show/opacity.animation';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
import * as i3 from "@wizishop/ng-wizi-bulma";
|
|
9
|
-
import * as i4 from "../../directives/auto-hide/auto-hide.directive";
|
|
10
|
-
import * as i5 from "../../directives/zindex-toggle/zindex-toggle.directive";
|
|
11
|
-
import * as i6 from "../../directives/keyboard-events/only-numbers.directive";
|
|
12
|
-
import * as i7 from "../optional-disable-container/optional-disable-container.component";
|
|
13
|
-
import * as i8 from "@ngx-translate/core";
|
|
14
|
-
export class CalendarComponent {
|
|
15
|
-
set options(options) {
|
|
16
|
-
this._options = options;
|
|
17
|
-
if (this.isBulmaDatePickerExists()) {
|
|
18
|
-
this.updateBulmaDatePickerOptions(options);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
get options() {
|
|
22
|
-
return this._options;
|
|
23
|
-
}
|
|
24
|
-
set dateSelected(dateSelected) {
|
|
25
|
-
if (this.disabled) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
this._dateSelected = new Date(dateSelected); // trigger change detection for pure pipe
|
|
29
|
-
}
|
|
30
|
-
get dateSelected() {
|
|
31
|
-
return this._dateSelected;
|
|
32
|
-
}
|
|
33
|
-
set calendarMinutes(calendarMinutes) {
|
|
34
|
-
if (!this.dateSelected) {
|
|
35
|
-
this.dateSelected = new Date();
|
|
36
|
-
}
|
|
37
|
-
const minutes = this.formatTime(calendarMinutes, 0, 59);
|
|
38
|
-
this.dateSelected.setMinutes(minutes);
|
|
39
|
-
this.dateSelected = this.dateSelected; // trigger change detection
|
|
40
|
-
this.minutes.nativeElement.value = this.datePipe.transform(this.dateSelected, 'mm'); // force to update the input value
|
|
41
|
-
this.triggerDateSelectedChange();
|
|
42
|
-
}
|
|
43
|
-
get calendarMinutes() {
|
|
44
|
-
return this.datePipe.transform(this.dateSelected ?? new Date(), 'mm');
|
|
45
|
-
}
|
|
46
|
-
set calendarHours(calendarHours) {
|
|
47
|
-
if (!this.dateSelected) {
|
|
48
|
-
this.dateSelected = new Date();
|
|
49
|
-
}
|
|
50
|
-
const hours = this.formatTime(calendarHours, 0, 23);
|
|
51
|
-
this.dateSelected.setHours(hours);
|
|
52
|
-
this.dateSelected = this.dateSelected; // trigger change detection
|
|
53
|
-
this.hours.nativeElement.value = this.datePipe.transform(this.dateSelected, 'HH'); // force to update the input value
|
|
54
|
-
this.triggerDateSelectedChange();
|
|
55
|
-
}
|
|
56
|
-
get calendarHours() {
|
|
57
|
-
return this.datePipe.transform(this.dateSelected ?? new Date(), 'HH');
|
|
58
|
-
}
|
|
59
|
-
constructor(datePipe) {
|
|
60
|
-
this.datePipe = datePipe;
|
|
61
|
-
this.boldLabel = false; // todo remove when label will be a ng-content
|
|
62
|
-
this.type = 'input';
|
|
63
|
-
this._options = {
|
|
64
|
-
displayMode: 'inline',
|
|
65
|
-
showHeader: false,
|
|
66
|
-
showFooter: true,
|
|
67
|
-
};
|
|
68
|
-
this.position = 'bottom';
|
|
69
|
-
this.dateSelectedChange = new EventEmitter();
|
|
70
|
-
this.typeDate = 'datetime-local';
|
|
71
|
-
this.noMargin = false;
|
|
72
|
-
this.disabled = false;
|
|
73
|
-
this.changeData = new EventEmitter();
|
|
74
|
-
this.open = false;
|
|
75
|
-
this.startLabel = '';
|
|
76
|
-
this.endLabel = '';
|
|
77
|
-
// ControlValueAccessor methods
|
|
78
|
-
this.onChange = () => { };
|
|
79
|
-
this.onTouch = () => { };
|
|
80
|
-
}
|
|
81
|
-
ngOnChanges(changes) {
|
|
82
|
-
if (changes.label || changes.type) {
|
|
83
|
-
this.setCalendarLabel();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
onChangeDate(selectedDates) {
|
|
87
|
-
if (this.disabled) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
if (!this.dateSelected) {
|
|
91
|
-
this.dateSelected = new Date();
|
|
92
|
-
}
|
|
93
|
-
selectedDates.startDate.setHours(this.dateSelected.getHours());
|
|
94
|
-
selectedDates.startDate.setMinutes(this.dateSelected.getMinutes());
|
|
95
|
-
this.dateSelected = selectedDates.startDate;
|
|
96
|
-
this.triggerDateSelectedChange();
|
|
97
|
-
}
|
|
98
|
-
triggerDateSelectedChange() {
|
|
99
|
-
this.onChange(this.dateSelected);
|
|
100
|
-
this.dateSelectedChange.emit(this.dateSelected);
|
|
101
|
-
this.triggerChange({
|
|
102
|
-
startDate: this.dateSelected,
|
|
103
|
-
endDate: this.dateSelected
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
triggerChange(event) {
|
|
107
|
-
this.changeData.emit(event);
|
|
108
|
-
}
|
|
109
|
-
openCalendar(value = null) {
|
|
110
|
-
if (this.disabled) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
if (value === 'close') {
|
|
114
|
-
if (this.open) {
|
|
115
|
-
this.open = false;
|
|
116
|
-
this.onTouch();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.open = !this.open;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
setCalendarLabel() {
|
|
124
|
-
if (this.type === 'edit' && this.label) {
|
|
125
|
-
const splitLabel = this.label.split('{x}');
|
|
126
|
-
if (splitLabel.length > 1) {
|
|
127
|
-
this.startLabel = splitLabel[0];
|
|
128
|
-
this.endLabel = splitLabel[1];
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
this.startLabel = this.label;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
incrementMinutes($event) {
|
|
136
|
-
this.calendarMinutes = parseInt(this.calendarMinutes, 10) + 1 + '';
|
|
137
|
-
$event.preventDefault();
|
|
138
|
-
}
|
|
139
|
-
decrementsMinutes($event) {
|
|
140
|
-
this.calendarMinutes = parseInt(this.calendarMinutes, 10) - 1 + '';
|
|
141
|
-
$event.preventDefault();
|
|
142
|
-
}
|
|
143
|
-
incrementHours($event) {
|
|
144
|
-
this.calendarHours = parseInt(this.calendarHours, 10) + 1 + '';
|
|
145
|
-
$event.preventDefault();
|
|
146
|
-
}
|
|
147
|
-
decrementHours($event) {
|
|
148
|
-
this.calendarHours = parseInt(this.calendarHours, 10) - 1 + '';
|
|
149
|
-
$event.preventDefault();
|
|
150
|
-
}
|
|
151
|
-
/*
|
|
152
|
-
Ensure that the input value is a number and that it is between min and max
|
|
153
|
-
*/
|
|
154
|
-
formatTime(time, min = 0, max = 59) {
|
|
155
|
-
let timeNumber = typeof time === 'string' ? parseInt(time, 10) : time;
|
|
156
|
-
timeNumber = timeNumber > max ? min : timeNumber;
|
|
157
|
-
timeNumber = timeNumber < min ? max : timeNumber;
|
|
158
|
-
timeNumber = parseInt(('' + timeNumber).slice(-2)); // keeps only the last 2 digits
|
|
159
|
-
return timeNumber;
|
|
160
|
-
}
|
|
161
|
-
updateBulmaDatePickerOptions(options) {
|
|
162
|
-
const bulmaCalendarDatePicker = this.datePicker['bulmaCalendar'].datePicker;
|
|
163
|
-
bulmaCalendarDatePicker.min = options.minDate;
|
|
164
|
-
bulmaCalendarDatePicker.max = options.maxDate;
|
|
165
|
-
bulmaCalendarDatePicker.refresh();
|
|
166
|
-
}
|
|
167
|
-
isBulmaDatePickerExists() {
|
|
168
|
-
return this.datePicker && this.datePicker['bulmaCalendar'] && this.datePicker['bulmaCalendar'].datePicker;
|
|
169
|
-
}
|
|
170
|
-
writeValue(date) {
|
|
171
|
-
if (!date) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
this.dateSelected = date;
|
|
175
|
-
}
|
|
176
|
-
registerOnChange(fn) {
|
|
177
|
-
this.onChange = fn;
|
|
178
|
-
}
|
|
179
|
-
registerOnTouched(fn) {
|
|
180
|
-
this.onTouch = fn;
|
|
181
|
-
}
|
|
182
|
-
setDisabledState(isDisabled) {
|
|
183
|
-
this.disabled = isDisabled;
|
|
184
|
-
}
|
|
185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: CalendarComponent, selector: "wac-calendar", inputs: { label: "label", boldLabel: "boldLabel", type: "type", options: "options", position: "position", dateSelected: "dateSelected", typeDate: "typeDate", noMargin: "noMargin", disabled: "disabled" }, outputs: { dateSelectedChange: "dateSelectedChange", changeData: "changeData" }, providers: [
|
|
187
|
-
{
|
|
188
|
-
provide: NG_VALUE_ACCESSOR,
|
|
189
|
-
useExisting: CalendarComponent,
|
|
190
|
-
multi: true
|
|
191
|
-
},
|
|
192
|
-
DatePipe
|
|
193
|
-
], viewQueries: [{ propertyName: "minutes", first: true, predicate: ["minutes"], descendants: true }, { propertyName: "hours", first: true, predicate: ["hours"], descendants: true }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"wac-calendar\"\r\n [ngClass]=\"{\r\n 'wac-calendar--input': type === 'input',\r\n 'wac-calendar--onlyDate': typeDate === 'date',\r\n 'wac-calendar--edit': type === 'edit',\r\n 'wac-calendar--select': type === 'select',\r\n 'wac-calendar--no-margin': noMargin,\r\n 'wac-calendar--open': open\r\n }\"\r\n [zIndexToggle]=\"open\"\r\n>\r\n <p [class]=\"'wac-calendar__label' + (boldLabel ? ' bold' : '')\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\r\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\r\n <wac-optional-disable-container [disabled]=\"disabled\">\r\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\r\n <div class=\"wac-calendar__wrapper\">\r\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__input__icon\">\r\n <i class=\"far fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy'}}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/mm/yyyy' | translate }}</span>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__select__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"wac-calendar__absolute\"\r\n [ngClass]=\"{\r\n top: position === 'top',\r\n bottom: position === 'bottom',\r\n left: position === 'left',\r\n right: position === 'right',\r\n 'right-top': position === 'right-top',\r\n 'right-bottom': position === 'right-bottom',\r\n 'left-top': position === 'left-top',\r\n 'left-bottom': position === 'left-bottom',\r\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\r\n }\"\r\n >\r\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\r\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected?.toISOString()\" />\r\n </nwb-date-picker>\r\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\r\n <div class=\"wac-calendar__absolute__time__wrapper\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\r\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\r\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </wac-optional-disable-container>\r\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.NwbDatePickerComponent, selector: "nwb-date-picker", inputs: ["options"], outputs: ["change", "clear"] }, { kind: "directive", type: i3.NwbDatePickerInputStartDirective, selector: "input[nwbDatepickerStart]", inputs: ["nwbDatepickerStart"] }, { kind: "directive", type: i3.NwbDatePickerInputDateTypeDirective, selector: "input[nwbDateType]", inputs: ["nwbDateType"] }, { kind: "directive", type: i4.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i5.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "directive", type: i6.OnlyNumberDirective, selector: "[wacOnlyNumber]", inputs: ["wacOnlyNumber"] }, { kind: "component", type: i7.OptionalDisableContainerComponent, selector: "wac-optional-disable-container", inputs: ["disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], animations: [opacityAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
194
|
-
}
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
196
|
-
type: Component,
|
|
197
|
-
args: [{ selector: 'wac-calendar', providers: [
|
|
198
|
-
{
|
|
199
|
-
provide: NG_VALUE_ACCESSOR,
|
|
200
|
-
useExisting: CalendarComponent,
|
|
201
|
-
multi: true
|
|
202
|
-
},
|
|
203
|
-
DatePipe
|
|
204
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [opacityAnimation], template: "<div\r\n class=\"wac-calendar\"\r\n [ngClass]=\"{\r\n 'wac-calendar--input': type === 'input',\r\n 'wac-calendar--onlyDate': typeDate === 'date',\r\n 'wac-calendar--edit': type === 'edit',\r\n 'wac-calendar--select': type === 'select',\r\n 'wac-calendar--no-margin': noMargin,\r\n 'wac-calendar--open': open\r\n }\"\r\n [zIndexToggle]=\"open\"\r\n>\r\n <p [class]=\"'wac-calendar__label' + (boldLabel ? ' bold' : '')\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\r\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\r\n <wac-optional-disable-container [disabled]=\"disabled\">\r\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\r\n <div class=\"wac-calendar__wrapper\">\r\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__input__icon\">\r\n <i class=\"far fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy'}}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/mm/yyyy' | translate }}</span>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__select__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"wac-calendar__absolute\"\r\n [ngClass]=\"{\r\n top: position === 'top',\r\n bottom: position === 'bottom',\r\n left: position === 'left',\r\n right: position === 'right',\r\n 'right-top': position === 'right-top',\r\n 'right-bottom': position === 'right-bottom',\r\n 'left-top': position === 'left-top',\r\n 'left-bottom': position === 'left-bottom',\r\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\r\n }\"\r\n >\r\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\r\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected?.toISOString()\" />\r\n </nwb-date-picker>\r\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\r\n <div class=\"wac-calendar__absolute__time__wrapper\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\r\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\r\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </wac-optional-disable-container>\r\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\r\n</div>\r\n" }]
|
|
205
|
-
}], ctorParameters: () => [{ type: i1.DatePipe }], propDecorators: { minutes: [{
|
|
206
|
-
type: ViewChild,
|
|
207
|
-
args: ['minutes']
|
|
208
|
-
}], hours: [{
|
|
209
|
-
type: ViewChild,
|
|
210
|
-
args: ['hours']
|
|
211
|
-
}], datePicker: [{
|
|
212
|
-
type: ViewChild,
|
|
213
|
-
args: ['datePicker']
|
|
214
|
-
}], label: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], boldLabel: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}], type: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], options: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], position: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], dateSelected: [{
|
|
225
|
-
type: Input
|
|
226
|
-
}], dateSelectedChange: [{
|
|
227
|
-
type: Output
|
|
228
|
-
}], typeDate: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], noMargin: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], disabled: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], changeData: [{
|
|
235
|
-
type: Output
|
|
236
|
-
}] } });
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUE0Qix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7O0FBaUIzRSxNQUFNLE9BQU8saUJBQWlCO0lBZTVCLElBQ0ksT0FBTyxDQUFDLE9BQXVDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQVdELElBQ0ksWUFBWSxDQUFDLFlBQWtCO1FBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEs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Z0IsQ0FBQzs7MkZBRW5CLGlCQUFpQjtrQkFmN0IsU0FBUzsrQkFDRSxjQUFjLGFBRWI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxtQkFBbUI7NEJBQzlCLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFFBQVE7cUJBQ1QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsQ0FBQyxnQkFBZ0IsQ0FBQzs2RUFJUixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNPLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFHdkIsS0FBSztzQkFESixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQW1CTixRQUFRO3NCQURQLEtBQUs7Z0JBSUYsWUFBWTtzQkFEZixLQUFLO2dCQVlJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHUCxRQUFRO3NCQURQLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOd2JEYXRlUGlja2VyQ29tcG9uZW50LCBOd2JEYXRlUGlja2VyRXZlbnQsIE53YkRhdGVQaWNrZXJPcHRpb25zIH0gZnJvbSAnQHdpemlzaG9wL25nLXdpemktYnVsbWEnO1xyXG5pbXBvcnQgeyBvcGFjaXR5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucy9zaG93L29wYWNpdHkuYW5pbWF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2FjLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IENhbGVuZGFyQ29tcG9uZW50LFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIERhdGVQaXBlXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtvcGFjaXR5QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAvLyEgQXQgdGhlIG1vbWVudCwgdGhlIGNvbXBvbmVudCBoYW5kbGUgb25seSBvbmUgZGF0ZSAobm90IGEgcmFuZ2UpXHJcbiAgQFZpZXdDaGlsZCgnbWludXRlcycpIG1pbnV0ZXM6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaG91cnMnKSBob3VyczogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlcjogTndiRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbDogc3RyaW5nIHwgbnVsbDsgLy8gdG9kbyB1c2UgbmctY29udGVudCBpbnN0ZWFkXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9sZExhYmVsOiBib29sZWFuID0gZmFsc2U7IC8vIHRvZG8gcmVtb3ZlIHdoZW4gbGFiZWwgd2lsbCBiZSBhIG5nLWNvbnRlbnRcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlOiAnaW5wdXQnIHwgJ2VkaXQnIHwgJ3NlbGVjdCcgPSAnaW5wdXQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IFJlYWRvbmx5PE53YkRhdGVQaWNrZXJPcHRpb25zPikge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICBpZiAodGhpcy5pc0J1bG1hRGF0ZVBpY2tlckV4aXN0cygpKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQnVsbWFEYXRlUGlja2VyT3B0aW9ucyhvcHRpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBvcHRpb25zKCkgOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBfb3B0aW9uczogUmVhZG9ubHk8TndiRGF0ZVBpY2tlck9wdGlvbnM+ICA9IHtcclxuICAgIGRpc3BsYXlNb2RlOiAnaW5saW5lJyxcclxuICAgIHNob3dIZWFkZXI6IGZhbHNlLFxyXG4gICAgc2hvd0Zvb3RlcjogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBvc2l0aW9uID0gJ2JvdHRvbSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRhdGVTZWxlY3RlZChkYXRlU2VsZWN0ZWQ6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKGRhdGVTZWxlY3RlZCk7IC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBmb3IgcHVyZSBwaXBlXHJcbiAgfVxyXG4gIGdldCBkYXRlU2VsZWN0ZWQoKSA6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGVTZWxlY3RlZDtcclxuICB9XHJcbiAgX2RhdGVTZWxlY3RlZDogRGF0ZTtcclxuXHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlRGF0ZTogJ2RhdGV0aW1lJyB8ICdkYXRldGltZS1sb2NhbCcgfCAnZGF0ZScgPSAnZGF0ZXRpbWUtbG9jYWwnO1xyXG4gIEBJbnB1dCgpXHJcbiAgbm9NYXJnaW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZURhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RhcnREYXRlOiBEYXRlOyBlbmREYXRlOiBEYXRlOyB9PigpO1xyXG4gIG9wZW4gPSBmYWxzZTtcclxuICBzdGFydExhYmVsID0gJyc7XHJcbiAgZW5kTGFiZWwgPSAnJztcclxuXHJcbiAgc2V0IGNhbGVuZGFyTWludXRlcyhjYWxlbmRhck1pbnV0ZXM6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmRhdGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5mb3JtYXRUaW1lKGNhbGVuZGFyTWludXRlcywgMCwgNTkpO1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuc2V0TWludXRlcyhtaW51dGVzKTtcclxuXHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IHRoaXMuZGF0ZVNlbGVjdGVkOyAvLyB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgIHRoaXMubWludXRlcy5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQsICdtbScpOyAvLyBmb3JjZSB0byB1cGRhdGUgdGhlIGlucHV0IHZhbHVlXHJcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBjYWxlbmRhck1pbnV0ZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZWxlY3RlZCA/PyBuZXcgRGF0ZSgpLCAnbW0nKTtcclxuICB9XHJcblxyXG4gIHNldCBjYWxlbmRhckhvdXJzKGNhbGVuZGFySG91cnM6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmRhdGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmZvcm1hdFRpbWUoY2FsZW5kYXJIb3VycywgMCwgMjMpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLnNldEhvdXJzKGhvdXJzKTtcclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gdGhpcy5kYXRlU2VsZWN0ZWQ7IC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgdGhpcy5ob3Vycy5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQsICdISCcpOyAvLyBmb3JjZSB0byB1cGRhdGUgdGhlIGlucHV0IHZhbHVlXHJcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBjYWxlbmRhckhvdXJzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQgPz8gbmV3IERhdGUoKSwgJ0hIJyk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMubGFiZWwgfHwgY2hhbmdlcy50eXBlKSB7XHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJMYWJlbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VEYXRlKHNlbGVjdGVkRGF0ZXM6IE53YkRhdGVQaWNrZXJFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kYXRlU2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGVkRGF0ZXMuc3RhcnREYXRlLnNldEhvdXJzKHRoaXMuZGF0ZVNlbGVjdGVkLmdldEhvdXJzKCkpO1xyXG4gICAgc2VsZWN0ZWREYXRlcy5zdGFydERhdGUuc2V0TWludXRlcyh0aGlzLmRhdGVTZWxlY3RlZC5nZXRNaW51dGVzKCkpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gc2VsZWN0ZWREYXRlcy5zdGFydERhdGU7XHJcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJpZ2dlckRhdGVTZWxlY3RlZENoYW5nZSgpIHtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLmRhdGVTZWxlY3RlZCk7XHJcbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2Uoe1xyXG4gICAgICBzdGFydERhdGU6IHRoaXMuZGF0ZVNlbGVjdGVkLFxyXG4gICAgICBlbmREYXRlOiB0aGlzLmRhdGVTZWxlY3RlZFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyQ2hhbmdlKGV2ZW50OiB7IHN0YXJ0RGF0ZTogRGF0ZTsgZW5kRGF0ZTogRGF0ZTsgfSkge1xyXG4gICAgdGhpcy5jaGFuZ2VEYXRhLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNhbGVuZGFyKHZhbHVlID0gbnVsbCkge1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsdWUgPT09ICdjbG9zZScpIHtcclxuICAgICAgaWYgKHRoaXMub3Blbikge1xyXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDYWxlbmRhckxhYmVsKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VkaXQnICYmIHRoaXMubGFiZWwpIHtcclxuICAgICAgY29uc3Qgc3BsaXRMYWJlbCA9IHRoaXMubGFiZWwuc3BsaXQoJ3t4fScpO1xyXG4gICAgICBpZiAoc3BsaXRMYWJlbC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydExhYmVsID0gc3BsaXRMYWJlbFswXTtcclxuICAgICAgICB0aGlzLmVuZExhYmVsID0gc3BsaXRMYWJlbFsxXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0YXJ0TGFiZWwgPSB0aGlzLmxhYmVsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnRNaW51dGVzKCRldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJNaW51dGVzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhck1pbnV0ZXMsIDEwKSArIDEgKyAnJztcclxuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50c01pbnV0ZXMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jYWxlbmRhck1pbnV0ZXMgPSBwYXJzZUludCh0aGlzLmNhbGVuZGFyTWludXRlcywgMTApIC0gMSArICcnO1xyXG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnRIb3VycygkZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmNhbGVuZGFySG91cnMgPSBwYXJzZUludCh0aGlzLmNhbGVuZGFySG91cnMsIDEwKSArIDEgKyAnJztcclxuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50SG91cnMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jYWxlbmRhckhvdXJzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhckhvdXJzLCAxMCkgLSAxICsgJyc7XHJcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBFbnN1cmUgdGhhdCB0aGUgaW5wdXQgdmFsdWUgaXMgYSBudW1iZXIgYW5kIHRoYXQgaXQgaXMgYmV0d2VlbiBtaW4gYW5kIG1heFxyXG4gICovXHJcbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRpbWU6IHN0cmluZyB8IG51bWJlciwgbWluID0gMCwgbWF4ID0gNTkpIHtcclxuICAgIGxldCB0aW1lTnVtYmVyID0gdHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQodGltZSwgMTApIDogdGltZTtcclxuICAgIHRpbWVOdW1iZXIgPSB0aW1lTnVtYmVyID4gbWF4ID8gbWluIDogdGltZU51bWJlcjtcclxuICAgIHRpbWVOdW1iZXIgPSB0aW1lTnVtYmVyIDwgbWluID8gbWF4IDogdGltZU51bWJlcjtcclxuICAgIHRpbWVOdW1iZXIgPSBwYXJzZUludCgoJycgKyB0aW1lTnVtYmVyKS5zbGljZSgtMikpOyAvLyBrZWVwcyBvbmx5IHRoZSBsYXN0IDIgZGlnaXRzXHJcbiAgICByZXR1cm4gdGltZU51bWJlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQnVsbWFEYXRlUGlja2VyT3B0aW9ucyhvcHRpb25zOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4pIHtcclxuICAgIGNvbnN0IGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyID0gdGhpcy5kYXRlUGlja2VyWydidWxtYUNhbGVuZGFyJ10uZGF0ZVBpY2tlcjtcclxuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLm1pbiA9IG9wdGlvbnMubWluRGF0ZTtcclxuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLm1heCA9IG9wdGlvbnMubWF4RGF0ZTtcclxuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLnJlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCdWxtYURhdGVQaWNrZXJFeGlzdHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlja2VyICYmIHRoaXMuZGF0ZVBpY2tlclsnYnVsbWFDYWxlbmRhciddICYmIHRoaXMuZGF0ZVBpY2tlclsnYnVsbWFDYWxlbmRhciddLmRhdGVQaWNrZXI7XHJcbiAgfVxyXG5cclxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2RzXHJcblxyXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKGRhdGU6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IGRhdGU7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSl7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpe1xyXG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwid2FjLWNhbGVuZGFyXCJcclxuICBbbmdDbGFzc109XCJ7XHJcbiAgICAnd2FjLWNhbGVuZGFyLS1pbnB1dCc6IHR5cGUgPT09ICdpbnB1dCcsXHJcbiAgICAnd2FjLWNhbGVuZGFyLS1vbmx5RGF0ZSc6IHR5cGVEYXRlID09PSAnZGF0ZScsXHJcbiAgICAnd2FjLWNhbGVuZGFyLS1lZGl0JzogdHlwZSA9PT0gJ2VkaXQnLFxyXG4gICAgJ3dhYy1jYWxlbmRhci0tc2VsZWN0JzogdHlwZSA9PT0gJ3NlbGVjdCcsXHJcbiAgICAnd2FjLWNhbGVuZGFyLS1uby1tYXJnaW4nOiBub01hcmdpbixcclxuICAgICd3YWMtY2FsZW5kYXItLW9wZW4nOiBvcGVuXHJcbiAgfVwiXHJcbiAgW3pJbmRleFRvZ2dsZV09XCJvcGVuXCJcclxuPlxyXG4gIDxwIFtjbGFzc109XCInd2FjLWNhbGVuZGFyX19sYWJlbCcgKyAoYm9sZExhYmVsID8gJyBib2xkJyA6ICcnKVwiICpuZ0lmPVwibGFiZWwgJiYgKHR5cGUgPT09ICdpbnB1dCcgfHwgdHlwZSA9PT0gJ3NlbGVjdCcpXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+e3sgbGFiZWwgfX08L3A+XHJcbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3N0YXJ0TGFiZWxcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiPnt7IHN0YXJ0TGFiZWwgfX08L3A+XHJcbiAgPHdhYy1vcHRpb25hbC1kaXNhYmxlLWNvbnRhaW5lciBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2F1dG9IaWRlXCIgd3pBdXRvSGlkZSAoY2xpY2tPdXRzaWRlKT1cIm9wZW5DYWxlbmRhcignY2xvc2UnKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRcIiAqbmdJZj1cInR5cGUgPT09ICdpbnB1dCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0X19pY29uXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX2RhdGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlU2VsZWN0ZWRcIiBAb3BhY2l0eUFuaW1hdGlvbj57eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci1kYXRlXCIgKm5nSWY9XCIhZGF0ZVNlbGVjdGVkXCIgQG9wYWNpdHlBbmltYXRpb24+e3sgJ3dhYy5EYXRlLlBsYWNlSG9sZGVyLmRkL21tL3l5eXknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19pbnB1dF9fdGltZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGVTZWxlY3RlZFwiIEBvcGFjaXR5QW5pbWF0aW9uPnt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdISDptbScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXItZGF0ZVwiICpuZ0lmPVwiIWRhdGVTZWxlY3RlZFwiIEBvcGFjaXR5QW5pbWF0aW9uPnt7ICd3YWMuRGF0ZS5QbGFjZUhvbGRlci5ISDptbScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZVwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZV9faWNvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlX19kYXRlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0X190aW1lXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlU2VsZWN0ZWRcIiBAb3BhY2l0eUFuaW1hdGlvbj57eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSBISDptbScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci1kYXRlXCIgKm5nSWY9XCIhZGF0ZVNlbGVjdGVkXCIgQG9wYWNpdHlBbmltYXRpb24+e3sgJ3dhYy5EYXRlLlBsYWNlSG9sZGVyLmRkL01NL3l5eXlfSEg6bW0nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdFwiICpuZ0lmPVwidHlwZSA9PT0gJ3NlbGVjdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdF9faWNvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdF9fZGF0ZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGVTZWxlY3RlZFwiIEBvcGFjaXR5QW5pbWF0aW9uPnt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdkZC9NTS95eXl5IEhIOm1tJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci1kYXRlXCIgKm5nSWY9XCIhZGF0ZVNlbGVjdGVkXCIgQG9wYWNpdHlBbmltYXRpb24+e3sgJ3dhYy5EYXRlLlBsYWNlSG9sZGVyLmRkL01NL3l5eXlfSEg6bW0nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICB0b3A6IHBvc2l0aW9uID09PSAndG9wJyxcclxuICAgICAgICAgIGJvdHRvbTogcG9zaXRpb24gPT09ICdib3R0b20nLFxyXG4gICAgICAgICAgbGVmdDogcG9zaXRpb24gPT09ICdsZWZ0JyxcclxuICAgICAgICAgIHJpZ2h0OiBwb3NpdGlvbiA9PT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICdyaWdodC10b3AnOiBwb3NpdGlvbiA9PT0gJ3JpZ2h0LXRvcCcsXHJcbiAgICAgICAgICAncmlnaHQtYm90dG9tJzogcG9zaXRpb24gPT09ICdyaWdodC1ib3R0b20nLFxyXG4gICAgICAgICAgJ2xlZnQtdG9wJzogcG9zaXRpb24gPT09ICdsZWZ0LXRvcCcsXHJcbiAgICAgICAgICAnbGVmdC1ib3R0b20nOiBwb3NpdGlvbiA9PT0gJ2xlZnQtYm90dG9tJyxcclxuICAgICAgICAgICd3aXRoLXRpbWUnOiB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG53Yi1kYXRlLXBpY2tlciAjZGF0ZVBpY2tlciAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGlucHV0IFtud2JEYXRlcGlja2VyU3RhcnRdPVwiZGF0ZVBpY2tlclwiIHR5cGU9XCJ0ZXh0XCIgW253YkRhdGVUeXBlXT1cIidkYXRlJ1wiIFt2YWx1ZV09XCJkYXRlU2VsZWN0ZWQ/LnRvSVNPU3RyaW5nKClcIiAvPlxyXG4gICAgICAgIDwvbndiLWRhdGUtcGlja2VyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lXCIgKm5nSWY9XCJ0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2J0blwiIChjbGljayk9XCJpbmNyZW1lbnRIb3VycygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc19fYnRuXCIgKGNsaWNrKT1cImRlY3JlbWVudEhvdXJzKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX3JpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgI2hvdXJzIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJjYWxlbmRhckhvdXJzXCIgW3dhY09ubHlOdW1iZXJdPVwidHJ1ZVwiLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNfX2xlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCAjbWludXRlcyB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiY2FsZW5kYXJNaW51dGVzXCIgW3dhY09ubHlOdW1iZXJdPVwidHJ1ZVwiLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19idG5cIiAoY2xpY2spPVwiaW5jcmVtZW50TWludXRlcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19idG5cIiAoY2xpY2spPVwiZGVjcmVtZW50c01pbnV0ZXMoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvd2FjLW9wdGlvbmFsLWRpc2FibGUtY29udGFpbmVyPlxyXG4gIDxwIGNsYXNzPVwid2FjLWNhbGVuZGFyX19lbmRMYWJlbFwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCI+e3sgZW5kTGFiZWwgfX08L3A+XHJcbjwvZGl2PlxyXG4iXX0=
|