tango-app-ui-store-builder 1.0.46 → 1.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
  2. package/esm2022/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.mjs +183 -0
  3. package/esm2022/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.mjs +211 -0
  4. package/esm2022/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.mjs +422 -0
  5. package/esm2022/lib/components/collection-update-ai/components/store-select/store-select.component.mjs +148 -0
  6. package/esm2022/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.mjs +20 -0
  7. package/esm2022/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.mjs +359 -0
  8. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.mjs +23 -0
  9. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +2524 -0
  10. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.mjs +66 -0
  11. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.mjs +85 -0
  12. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +2039 -0
  13. package/esm2022/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.mjs +433 -0
  14. package/esm2022/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.mjs +76 -0
  15. package/esm2022/lib/components/collection-update-ai/models/find-replace.model.mjs +2 -0
  16. package/esm2022/lib/components/collection-update-ai/services/data.service.mjs +291 -0
  17. package/esm2022/lib/components/create-fixture/create-fixture.component.mjs +233 -138
  18. package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +4 -2
  19. package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +4 -2
  20. package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +40 -4
  21. package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +3 -3
  22. package/esm2022/lib/components/fixture-template/template-summary/template-summary.component.mjs +3 -3
  23. package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +108 -79
  24. package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +33 -4
  25. package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +7 -3
  26. package/esm2022/lib/components/manage-plano/rollout-table/rollout-table.component.mjs +25 -3
  27. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +4 -2
  28. package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +27 -4
  29. package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +3 -3
  30. package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +10 -14
  31. package/esm2022/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.mjs +3 -3
  32. package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +3 -3
  33. package/esm2022/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.mjs +75 -31
  34. package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +7 -8
  35. package/esm2022/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.mjs +234 -0
  36. package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +1110 -0
  37. package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.mjs +52 -0
  38. package/esm2022/lib/components/planogram/merch-compliance/zone-products/zone-products.component.mjs +36 -10
  39. package/esm2022/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.mjs +68 -0
  40. package/esm2022/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.mjs +92 -0
  41. package/esm2022/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.mjs +645 -0
  42. package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +1276 -0
  43. package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +33 -15
  44. package/esm2022/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.mjs +41 -35
  45. package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +8 -4
  46. package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +19 -12
  47. package/esm2022/lib/components/planogram/plano-table/plano-table.component.mjs +3 -3
  48. package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -2
  49. package/esm2022/lib/components/store-plano/store-plano.component.mjs +4 -2
  50. package/esm2022/lib/interfaces/fixture-library.interface.mjs +1 -1
  51. package/esm2022/lib/services/store-builder.service.mjs +49 -1
  52. package/esm2022/lib/tango-store-builder-routing.module.mjs +23 -1
  53. package/esm2022/lib/tango-store-builder.module.mjs +42 -5
  54. package/fesm2022/tango-app-ui-store-builder.mjs +12677 -2064
  55. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  56. package/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.d.ts +51 -0
  57. package/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.d.ts +36 -0
  58. package/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.d.ts +50 -0
  59. package/lib/components/collection-update-ai/components/store-select/store-select.component.d.ts +33 -0
  60. package/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.d.ts +9 -0
  61. package/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.d.ts +58 -0
  62. package/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.d.ts +10 -0
  63. package/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.d.ts +141 -0
  64. package/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.d.ts +18 -0
  65. package/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.d.ts +19 -0
  66. package/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.d.ts +116 -0
  67. package/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.d.ts +63 -0
  68. package/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.d.ts +19 -0
  69. package/lib/components/collection-update-ai/models/find-replace.model.d.ts +55 -0
  70. package/lib/components/collection-update-ai/services/data.service.d.ts +70 -0
  71. package/lib/components/create-fixture/create-fixture.component.d.ts +15 -14
  72. package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +2 -0
  73. package/lib/components/fixture-template/template-vms/template-vms.component.d.ts +12 -12
  74. package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +2 -0
  75. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -2
  76. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +4 -4
  77. package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +2 -0
  78. package/lib/components/manage-store-plano/template-vms/template-vms.component.d.ts +0 -1
  79. package/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.d.ts +8 -2
  80. package/lib/components/planogram/merch-compliance/merch-compliance.component.d.ts +1 -3
  81. package/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.d.ts +47 -0
  82. package/lib/components/planogram/merch-compliance/product-locator/product-locator.component.d.ts +70 -0
  83. package/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.d.ts +16 -0
  84. package/lib/components/planogram/merch-compliance/zone-products/zone-products.component.d.ts +13 -3
  85. package/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.d.ts +25 -0
  86. package/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.d.ts +24 -0
  87. package/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.d.ts +93 -0
  88. package/lib/components/planogram/plano-analytics/plano-analytics.component.d.ts +97 -0
  89. package/lib/components/planogram/plano-details-parent/plano-details-parent.component.d.ts +8 -3
  90. package/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.d.ts +2 -4
  91. package/lib/interfaces/fixture-library.interface.d.ts +1 -1
  92. package/lib/services/store-builder.service.d.ts +25 -0
  93. package/lib/tango-store-builder.module.d.ts +31 -21
  94. package/package.json +1 -1
@@ -0,0 +1,148 @@
1
+ import { Component, Input, Output, EventEmitter, HostListener, ViewChild } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class StoreSelectComponent {
7
+ options = [];
8
+ initialSelected = [];
9
+ selectedChange = new EventEmitter();
10
+ inputWrapper;
11
+ selectedItems = new Set();
12
+ inputText = '';
13
+ isDropdownOpen = false;
14
+ ngOnInit() {
15
+ // Initialize with any pre-selected items if needed
16
+ this.setInitialSelections();
17
+ }
18
+ ngOnChanges(changes) {
19
+ if (changes['initialSelected'] || changes['options']) {
20
+ this.setInitialSelections();
21
+ }
22
+ }
23
+ setInitialSelections() {
24
+ // Only set initial selections if both options and initialSelected are available
25
+ if (this.initialSelected && this.initialSelected.length > 0 && this.options && this.options.length > 0) {
26
+ this.selectedItems.clear();
27
+ this.initialSelected.forEach(option => {
28
+ // Match by id first, then by label
29
+ const matchedOption = this.options.find(opt => opt.id === option.id || opt.label === option.label);
30
+ if (matchedOption) {
31
+ this.selectedItems.add(matchedOption.id);
32
+ }
33
+ });
34
+ // Emit the selected options
35
+ if (this.selectedItems.size > 0) {
36
+ this.selectedChange.emit(this.selectedOptions);
37
+ }
38
+ }
39
+ }
40
+ onDocumentClick(event) {
41
+ if (this.inputWrapper && !this.inputWrapper.nativeElement.contains(event.target)) {
42
+ this.isDropdownOpen = false;
43
+ }
44
+ }
45
+ get selectedOptions() {
46
+ return this.options.filter(option => this.selectedItems.has(option.id));
47
+ }
48
+ get isAllSelected() {
49
+ return this.options.length > 0 && this.selectedItems.size === this.options.length;
50
+ }
51
+ get isIndeterminate() {
52
+ return this.selectedItems.size > 0 && this.selectedItems.size < this.options.length;
53
+ }
54
+ isSelected(id) {
55
+ return this.selectedItems.has(id);
56
+ }
57
+ toggleSelectAll() {
58
+ if (this.isAllSelected) {
59
+ // Deselect all
60
+ this.selectedItems.clear();
61
+ }
62
+ else {
63
+ // Select all
64
+ this.options.forEach(option => {
65
+ this.selectedItems.add(option.id);
66
+ });
67
+ }
68
+ this.selectedChange.emit(this.selectedOptions);
69
+ }
70
+ onInputChange(event) {
71
+ const target = event.target;
72
+ this.inputText = target.value;
73
+ }
74
+ onKeyDown(event) {
75
+ const keyboardEvent = event;
76
+ if (keyboardEvent.key === 'Enter') {
77
+ keyboardEvent.preventDefault();
78
+ const target = keyboardEvent.target;
79
+ const value = target.value.trim();
80
+ if (value.length > 0) {
81
+ // Split by comma and process each value
82
+ const values = value.split(',').map(v => v.trim()).filter(v => v.length > 0);
83
+ let hasChanges = false;
84
+ values.forEach(val => {
85
+ // Find matching option by label (case-insensitive)
86
+ const matchedOption = this.options.find(opt => opt.label.toLowerCase() === val.toLowerCase());
87
+ if (matchedOption && !this.selectedItems.has(matchedOption.id)) {
88
+ this.selectedItems.add(matchedOption.id);
89
+ hasChanges = true;
90
+ }
91
+ });
92
+ // Only emit if there were changes
93
+ if (hasChanges) {
94
+ this.selectedChange.emit(this.selectedOptions);
95
+ }
96
+ // Clear input after processing
97
+ this.inputText = '';
98
+ target.value = '';
99
+ }
100
+ }
101
+ }
102
+ onInputClick() {
103
+ // Open dropdown on input click
104
+ this.isDropdownOpen = true;
105
+ }
106
+ onInputFocus() {
107
+ // Open dropdown on focus
108
+ this.isDropdownOpen = true;
109
+ }
110
+ toggleSelection(option) {
111
+ if (this.selectedItems.has(option.id)) {
112
+ this.selectedItems.delete(option.id);
113
+ }
114
+ else {
115
+ this.selectedItems.add(option.id);
116
+ }
117
+ this.selectedChange.emit(this.selectedOptions);
118
+ }
119
+ removeChip(option, event) {
120
+ event.stopPropagation();
121
+ event.preventDefault();
122
+ this.selectedItems.delete(option.id);
123
+ this.selectedChange.emit(this.selectedOptions);
124
+ }
125
+ onDropdownClick(event) {
126
+ // Prevent click from bubbling to document
127
+ event.stopPropagation();
128
+ }
129
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
130
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StoreSelectComponent, isStandalone: true, selector: "lib-store-select", inputs: { options: "options", initialSelected: "initialSelected" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "inputWrapper", first: true, predicate: ["inputWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"input-wrapper\" #inputWrapper>\r\n <div class=\"form-control custom-input d-flex align-items-center gap-2 flex-wrap\" \r\n (click)=\"onInputClick()\">\r\n <span *ngFor=\"let option of selectedOptions\" \r\n class=\"store-badge\"\r\n (click)=\"removeChip(option, $event)\">\r\n <span class=\"badge-text\">{{ option.label }}</span>\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <input \r\n type=\"text\" \r\n class=\"input-text\"\r\n [value]=\"inputText\"\r\n (input)=\"onInputChange($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (focus)=\"onInputFocus()\"\r\n placeholder=\"Type and press Enter\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"dropdown-menu-custom\" \r\n *ngIf=\"isDropdownOpen && options.length > 0\"\r\n (click)=\"onDropdownClick($event)\">\r\n <div class=\"dropdown-item-custom select-all-item\"\r\n (click)=\"toggleSelectAll()\">\r\n <div class=\"custom-checkbox\">\r\n <div class=\"checkbox-box\" [class.checked]=\"isAllSelected\" [class.indeterminate]=\"isIndeterminate\">\r\n <svg *ngIf=\"isAllSelected\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#00A3FF\" stroke-width=\"1.6666\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <svg *ngIf=\"isIndeterminate && !isAllSelected\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M2 6H10\" stroke=\"#00A3FF\" stroke-width=\"1.6666\" stroke-linecap=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <span class=\"dropdown-item-text\">Select All</span>\r\n </div>\r\n <hr class=\"dropdown-divider\">\r\n <div *ngFor=\"let option of options\" \r\n class=\"dropdown-item-custom\"\r\n (click)=\"toggleSelection(option)\">\r\n <div class=\"custom-checkbox\">\r\n <div class=\"checkbox-box\" [class.checked]=\"isSelected(option.id)\">\r\n <svg *ngIf=\"isSelected(option.id)\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#00A3FF\" stroke-width=\"1.6666\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <span class=\"dropdown-item-text\">{{ option.label }}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [".input-wrapper{position:relative;width:100%}:host{display:block;flex:1;min-width:0}.custom-input{background:#fff;border:1px solid #d0d5dd;border-radius:8px;padding:6px 10px;min-height:44px;max-height:160px;box-shadow:0 1px 2px #1018280d;display:flex;align-items:flex-start;overflow-y:auto;overflow-x:hidden}.custom-input:focus,.custom-input:focus-within{outline:none;box-shadow:0 1px 2px #1018280d}.store-badge{background-color:#f2f4f7;border-radius:16px;padding:2px 6px 2px 8px;display:inline-flex;align-items:center;gap:4px;flex-shrink:0;cursor:pointer;transition:background-color .2s ease}.store-badge:hover{background-color:#e4e7ec}.badge-text{font-size:12px;font-weight:500;line-height:18px;color:#344054}.input-text{font-size:14px;font-weight:400;line-height:20px;color:#1d2939;border:none;outline:none;background:transparent;flex:1;min-width:120px;padding:0}.input-text:focus{outline:none;box-shadow:none}.input-text::placeholder{color:#98a2b3}.dropdown-menu-custom{position:absolute;background:#fff;border:1px solid #f2f4f7;border-radius:8px;width:100%;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808;margin-top:8px;top:100%;left:0;z-index:1000;max-height:300px;overflow-y:auto;overflow-x:hidden}.dropdown-menu-custom::-webkit-scrollbar,.custom-input::-webkit-scrollbar{width:6px}.dropdown-menu-custom::-webkit-scrollbar-track,.custom-input::-webkit-scrollbar-track{background:#f9fafb;border-radius:4px}.dropdown-menu-custom::-webkit-scrollbar-thumb,.custom-input::-webkit-scrollbar-thumb{background:#d0d5dd;border-radius:4px}.dropdown-menu-custom::-webkit-scrollbar-thumb:hover,.custom-input::-webkit-scrollbar-thumb:hover{background:#98a2b3}.dropdown-item-custom{display:flex;align-items:center;gap:12px;padding:10px 16px;cursor:pointer;transition:background-color .2s ease}.dropdown-item-custom:hover{background-color:#f9fafb}.select-all-item{font-weight:600;border-bottom:1px solid #f2f4f7;margin-bottom:4px}.dropdown-item-text{font-size:14px;font-weight:500;line-height:20px;color:#344054}.custom-checkbox{display:flex;align-items:center;justify-content:center}.checkbox-box{width:16px;height:16px;background:#fff;border:1px solid #d0d5dd;border-radius:4px;display:flex;align-items:center;justify-content:center}.checkbox-box.checked,.checkbox-box.indeterminate{background-color:#eaf8ff;border-color:#00a3ff}.dropdown-divider{background-color:#f2f4f7;height:1px;margin:0;opacity:1}@media (max-width: 767px){.btn-apply{width:100%;margin-top:0}.dropdown-menu-custom{position:absolute;margin-top:8px;width:100%;left:0}}@media (max-width: 575px){.custom-input{flex-direction:column;align-items:flex-start}.store-badge{margin-bottom:4px}}.gap-2{gap:.5rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] });
131
+ }
132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreSelectComponent, decorators: [{
133
+ type: Component,
134
+ args: [{ selector: 'lib-store-select', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"input-wrapper\" #inputWrapper>\r\n <div class=\"form-control custom-input d-flex align-items-center gap-2 flex-wrap\" \r\n (click)=\"onInputClick()\">\r\n <span *ngFor=\"let option of selectedOptions\" \r\n class=\"store-badge\"\r\n (click)=\"removeChip(option, $event)\">\r\n <span class=\"badge-text\">{{ option.label }}</span>\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <input \r\n type=\"text\" \r\n class=\"input-text\"\r\n [value]=\"inputText\"\r\n (input)=\"onInputChange($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (focus)=\"onInputFocus()\"\r\n placeholder=\"Type and press Enter\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"dropdown-menu-custom\" \r\n *ngIf=\"isDropdownOpen && options.length > 0\"\r\n (click)=\"onDropdownClick($event)\">\r\n <div class=\"dropdown-item-custom select-all-item\"\r\n (click)=\"toggleSelectAll()\">\r\n <div class=\"custom-checkbox\">\r\n <div class=\"checkbox-box\" [class.checked]=\"isAllSelected\" [class.indeterminate]=\"isIndeterminate\">\r\n <svg *ngIf=\"isAllSelected\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#00A3FF\" stroke-width=\"1.6666\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <svg *ngIf=\"isIndeterminate && !isAllSelected\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M2 6H10\" stroke=\"#00A3FF\" stroke-width=\"1.6666\" stroke-linecap=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <span class=\"dropdown-item-text\">Select All</span>\r\n </div>\r\n <hr class=\"dropdown-divider\">\r\n <div *ngFor=\"let option of options\" \r\n class=\"dropdown-item-custom\"\r\n (click)=\"toggleSelection(option)\">\r\n <div class=\"custom-checkbox\">\r\n <div class=\"checkbox-box\" [class.checked]=\"isSelected(option.id)\">\r\n <svg *ngIf=\"isSelected(option.id)\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#00A3FF\" stroke-width=\"1.6666\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <span class=\"dropdown-item-text\">{{ option.label }}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [".input-wrapper{position:relative;width:100%}:host{display:block;flex:1;min-width:0}.custom-input{background:#fff;border:1px solid #d0d5dd;border-radius:8px;padding:6px 10px;min-height:44px;max-height:160px;box-shadow:0 1px 2px #1018280d;display:flex;align-items:flex-start;overflow-y:auto;overflow-x:hidden}.custom-input:focus,.custom-input:focus-within{outline:none;box-shadow:0 1px 2px #1018280d}.store-badge{background-color:#f2f4f7;border-radius:16px;padding:2px 6px 2px 8px;display:inline-flex;align-items:center;gap:4px;flex-shrink:0;cursor:pointer;transition:background-color .2s ease}.store-badge:hover{background-color:#e4e7ec}.badge-text{font-size:12px;font-weight:500;line-height:18px;color:#344054}.input-text{font-size:14px;font-weight:400;line-height:20px;color:#1d2939;border:none;outline:none;background:transparent;flex:1;min-width:120px;padding:0}.input-text:focus{outline:none;box-shadow:none}.input-text::placeholder{color:#98a2b3}.dropdown-menu-custom{position:absolute;background:#fff;border:1px solid #f2f4f7;border-radius:8px;width:100%;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808;margin-top:8px;top:100%;left:0;z-index:1000;max-height:300px;overflow-y:auto;overflow-x:hidden}.dropdown-menu-custom::-webkit-scrollbar,.custom-input::-webkit-scrollbar{width:6px}.dropdown-menu-custom::-webkit-scrollbar-track,.custom-input::-webkit-scrollbar-track{background:#f9fafb;border-radius:4px}.dropdown-menu-custom::-webkit-scrollbar-thumb,.custom-input::-webkit-scrollbar-thumb{background:#d0d5dd;border-radius:4px}.dropdown-menu-custom::-webkit-scrollbar-thumb:hover,.custom-input::-webkit-scrollbar-thumb:hover{background:#98a2b3}.dropdown-item-custom{display:flex;align-items:center;gap:12px;padding:10px 16px;cursor:pointer;transition:background-color .2s ease}.dropdown-item-custom:hover{background-color:#f9fafb}.select-all-item{font-weight:600;border-bottom:1px solid #f2f4f7;margin-bottom:4px}.dropdown-item-text{font-size:14px;font-weight:500;line-height:20px;color:#344054}.custom-checkbox{display:flex;align-items:center;justify-content:center}.checkbox-box{width:16px;height:16px;background:#fff;border:1px solid #d0d5dd;border-radius:4px;display:flex;align-items:center;justify-content:center}.checkbox-box.checked,.checkbox-box.indeterminate{background-color:#eaf8ff;border-color:#00a3ff}.dropdown-divider{background-color:#f2f4f7;height:1px;margin:0;opacity:1}@media (max-width: 767px){.btn-apply{width:100%;margin-top:0}.dropdown-menu-custom{position:absolute;margin-top:8px;width:100%;left:0}}@media (max-width: 575px){.custom-input{flex-direction:column;align-items:flex-start}.store-badge{margin-bottom:4px}}.gap-2{gap:.5rem!important}\n"] }]
135
+ }], propDecorators: { options: [{
136
+ type: Input
137
+ }], initialSelected: [{
138
+ type: Input
139
+ }], selectedChange: [{
140
+ type: Output
141
+ }], inputWrapper: [{
142
+ type: ViewChild,
143
+ args: ['inputWrapper', { static: false }]
144
+ }], onDocumentClick: [{
145
+ type: HostListener,
146
+ args: ['document:click', ['$event']]
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbGxlY3Rpb24tdXBkYXRlLWFpL2NvbXBvbmVudHMvc3RvcmUtc2VsZWN0L3N0b3JlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9jb2xsZWN0aW9uLXVwZGF0ZS1haS9jb21wb25lbnRzL3N0b3JlLXNlbGVjdC9zdG9yZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBb0MsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFjN0MsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUM1QixlQUFlLEdBQWtCLEVBQUUsQ0FBQztJQUNuQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDZixZQUFZLENBQWM7SUFFeEUsYUFBYSxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZDLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUVoQyxRQUFRO1FBQ04sbURBQW1EO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJB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Q0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFZO1FBQzFCLDBDQUEwQztRQUMxQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQzt3R0FuSlUsb0JBQW9COzRGQUFwQixvQkFBb0Isd1lDaEJqQyxvNkZBb0RNLDJyRkR4Q00sWUFBWSwrUEFBRSxXQUFXOzs0RkFJeEIsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDOzhCQUszQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUN1QyxZQUFZO3NCQUF6RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBc0M1QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdG9yZU9wdGlvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdG9yZS1zZWxlY3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zdG9yZS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yZVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBvcHRpb25zOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgQElucHV0KCkgaW5pdGlhbFNlbGVjdGVkOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdG9yZU9wdGlvbltdPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0V3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dFdyYXBwZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBzZWxlY3RlZEl0ZW1zOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuICBpbnB1dFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB3aXRoIGFueSBwcmUtc2VsZWN0ZWQgaXRlbXMgaWYgbmVlZGVkXHJcbiAgICB0aGlzLnNldEluaXRpYWxTZWxlY3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1snaW5pdGlhbFNlbGVjdGVkJ10gfHwgY2hhbmdlc1snb3B0aW9ucyddKSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFNlbGVjdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEluaXRpYWxTZWxlY3Rpb25zKCkge1xyXG4gICAgLy8gT25seSBzZXQgaW5pdGlhbCBzZWxlY3Rpb25zIGlmIGJvdGggb3B0aW9ucyBhbmQgaW5pdGlhbFNlbGVjdGVkIGFyZSBhdmFpbGFibGVcclxuICAgIGlmICh0aGlzLmluaXRpYWxTZWxlY3RlZCAmJiB0aGlzLmluaXRpYWxTZWxlY3RlZC5sZW5ndGggPiAwICYmIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5pbml0aWFsU2VsZWN0ZWQuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgIC8vIE1hdGNoIGJ5IGlkIGZpcnN0LCB0aGVuIGJ5IGxhYmVsXHJcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKFxyXG4gICAgICAgICAgb3B0ID0+IG9wdC5pZCA9PT0gb3B0aW9uLmlkIHx8IG9wdC5sYWJlbCA9PT0gb3B0aW9uLmxhYmVsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobWF0Y2hlZE9wdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChtYXRjaGVkT3B0aW9uLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBFbWl0IHRoZSBzZWxlY3RlZCBvcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuc2l6ZSA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFdyYXBwZXIgJiYgIXRoaXMuaW5wdXRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2VsZWN0ZWRPcHRpb25zKCk6IFN0b3JlT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHRoaXMuc2VsZWN0ZWRJdGVtcy5oYXMob3B0aW9uLmlkKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkSXRlbXMuc2l6ZSA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldCBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNpemUgPiAwICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5zaXplIDwgdGhpcy5vcHRpb25zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5oYXMoaWQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsKCkge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCkge1xyXG4gICAgICAvLyBEZXNlbGVjdCBhbGxcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBTZWxlY3QgYWxsXHJcbiAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChvcHRpb24uaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICB0aGlzLmlucHV0VGV4dCA9IHRhcmdldC52YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uS2V5RG93bihldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGtleWJvYXJkRXZlbnQgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xyXG4gICAgaWYgKGtleWJvYXJkRXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIGtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgY29uc3QgdGFyZ2V0ID0ga2V5Ym9hcmRFdmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgY29uc3QgdmFsdWUgPSB0YXJnZXQudmFsdWUudHJpbSgpO1xyXG5cclxuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBTcGxpdCBieSBjb21tYSBhbmQgcHJvY2VzcyBlYWNoIHZhbHVlXHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKSkuZmlsdGVyKHYgPT4gdi5sZW5ndGggPiAwKTtcclxuICAgICAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAvLyBGaW5kIG1hdGNoaW5nIG9wdGlvbiBieSBsYWJlbCAoY2FzZS1pbnNlbnNpdGl2ZSlcclxuICAgICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChcclxuICAgICAgICAgICAgb3B0ID0+IG9wdC5sYWJlbC50b0xvd2VyQ2FzZSgpID09PSB2YWwudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKG1hdGNoZWRPcHRpb24gJiYgIXRoaXMuc2VsZWN0ZWRJdGVtcy5oYXMobWF0Y2hlZE9wdGlvbi5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChtYXRjaGVkT3B0aW9uLmlkKTtcclxuICAgICAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIE9ubHkgZW1pdCBpZiB0aGVyZSB3ZXJlIGNoYW5nZXNcclxuICAgICAgICBpZiAoaGFzQ2hhbmdlcykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENsZWFyIGlucHV0IGFmdGVyIHByb2Nlc3NpbmdcclxuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xyXG4gICAgICAgIHRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2xpY2soKSB7XHJcbiAgICAvLyBPcGVuIGRyb3Bkb3duIG9uIGlucHV0IGNsaWNrXHJcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRGb2N1cygpIHtcclxuICAgIC8vIE9wZW4gZHJvcGRvd24gb24gZm9jdXNcclxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0aW9uKG9wdGlvbjogU3RvcmVPcHRpb24pIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuaGFzKG9wdGlvbi5pZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShvcHRpb24uaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChvcHRpb24uaWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXAob3B0aW9uOiBTdG9yZU9wdGlvbiwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZGVsZXRlKG9wdGlvbi5pZCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wZG93bkNsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gUHJldmVudCBjbGljayBmcm9tIGJ1YmJsaW5nIHRvIGRvY3VtZW50XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiAjaW5wdXRXcmFwcGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20taW5wdXQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBmbGV4LXdyYXBcIiBcclxuICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygpXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnNcIiBcclxuICAgICAgICAgICAgICBjbGFzcz1cInN0b3JlLWJhZGdlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2hpcChvcHRpb24sICRldmVudClcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZS10ZXh0XCI+e3sgb3B0aW9uLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cImlucHV0LXRleHRcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwiaW5wdXRUZXh0XCJcclxuICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIGFuZCBwcmVzcyBFbnRlclwiXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudS1jdXN0b21cIiBcclxuICAgICAgICAgKm5nSWY9XCJpc0Ryb3Bkb3duT3BlbiAmJiBvcHRpb25zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAoY2xpY2spPVwib25Ecm9wZG93bkNsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbS1jdXN0b20gc2VsZWN0LWFsbC1pdGVtXCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3RBbGwoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtYm94XCIgW2NsYXNzLmNoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZFwiIFtjbGFzcy5pbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc0FsbFNlbGVjdGVkXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgM0w0LjUgOC41TDIgNlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzSW5kZXRlcm1pbmF0ZSAmJiAhaXNBbGxTZWxlY3RlZFwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIgNkgxMFwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0tdGV4dFwiPlNlbGVjdCBBbGw8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgXHJcbiAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0tY3VzdG9tXCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb24ob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtYm94XCIgW2NsYXNzLmNoZWNrZWRdPVwiaXNTZWxlY3RlZChvcHRpb24uaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzU2VsZWN0ZWQob3B0aW9uLmlkKVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0tdGV4dFwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
3
+ import { CommonModule } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ export class CancelConfirmationModalComponent {
6
+ activeModal = inject(NgbActiveModal);
7
+ onKeepProcessing() {
8
+ this.activeModal.dismiss();
9
+ }
10
+ onCancelBatchProcess() {
11
+ this.activeModal.close(true);
12
+ }
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CancelConfirmationModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CancelConfirmationModalComponent, isStandalone: true, selector: "lib-cancel-confirmation-modal", ngImport: i0, template: "<div class=\"modal-content-custom\">\r\n <!-- Modal Header -->\r\n <div class=\"modal-header-custom\">\r\n <h5 class=\"modal-title\">Abort batch process?</h5>\r\n </div>\r\n \r\n <!-- Modal Body -->\r\n <div class=\"modal-body-custom\">\r\n <p class=\"description-text\">This will cancel the batch process and discard any progress. Are you sure you want to continue?</p>\r\n </div>\r\n \r\n <!-- Modal Footer -->\r\n <div class=\"modal-footer-custom\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onKeepProcessing()\">Keep Processing</button>\r\n <button type=\"button\" class=\"btn btn-primary-custom\" (click)=\"onCancelBatchProcess()\">Cancel Batch Process</button>\r\n </div>\r\n</div>\r\n", styles: [".modal-content-custom{background:#fff;border-radius:12px;padding:0;box-shadow:0 20px 24px -4px #10182814,0 8px 8px -4px #10182808;border:none;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.modal-header-custom{padding:24px 16px 0;border-bottom:none}.modal-title{color:#1d2939;font-size:18px;font-weight:600;line-height:28px;margin:0}.modal-body-custom{padding:24px 16px}.description-text{color:#1d2939;font-size:16px;font-weight:500;line-height:24px;margin:0}.modal-footer-custom{border-top:none;padding:0 16px 24px;display:flex;justify-content:flex-end;gap:12px}.btn-outline{background:#fff;color:#344054;border:1px solid #d0d5dd;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:all .2s}.btn-outline:hover{background-color:#f9fafb;border-color:#d0d5dd;color:#344054}.btn-primary-custom{background:#00a3ff;color:#fff;border:1px solid #00a3ff;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:all .2s}.btn-primary-custom:hover{background:#0090e0;border-color:#0090e0;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CancelConfirmationModalComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'lib-cancel-confirmation-modal', standalone: true, imports: [CommonModule], template: "<div class=\"modal-content-custom\">\r\n <!-- Modal Header -->\r\n <div class=\"modal-header-custom\">\r\n <h5 class=\"modal-title\">Abort batch process?</h5>\r\n </div>\r\n \r\n <!-- Modal Body -->\r\n <div class=\"modal-body-custom\">\r\n <p class=\"description-text\">This will cancel the batch process and discard any progress. Are you sure you want to continue?</p>\r\n </div>\r\n \r\n <!-- Modal Footer -->\r\n <div class=\"modal-footer-custom\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onKeepProcessing()\">Keep Processing</button>\r\n <button type=\"button\" class=\"btn btn-primary-custom\" (click)=\"onCancelBatchProcess()\">Cancel Batch Process</button>\r\n </div>\r\n</div>\r\n", styles: [".modal-content-custom{background:#fff;border-radius:12px;padding:0;box-shadow:0 20px 24px -4px #10182814,0 8px 8px -4px #10182808;border:none;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.modal-header-custom{padding:24px 16px 0;border-bottom:none}.modal-title{color:#1d2939;font-size:18px;font-weight:600;line-height:28px;margin:0}.modal-body-custom{padding:24px 16px}.description-text{color:#1d2939;font-size:16px;font-weight:500;line-height:24px;margin:0}.modal-footer-custom{border-top:none;padding:0 16px 24px;display:flex;justify-content:flex-end;gap:12px}.btn-outline{background:#fff;color:#344054;border:1px solid #d0d5dd;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:all .2s}.btn-outline:hover{background-color:#f9fafb;border-color:#d0d5dd;color:#344054}.btn-primary-custom{background:#00a3ff;color:#fff;border:1px solid #00a3ff;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:all .2s}.btn-primary-custom:hover{background:#0090e0;border-color:#0090e0;color:#fff}\n"] }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9jb2xsZWN0aW9uLXVwZGF0ZS1haS9maW5kLXJlcGxhY2UtbGF5b3V0L2NhbmNlbC1jb25maXJtYXRpb24tbW9kYWwvY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9jb2xsZWN0aW9uLXVwZGF0ZS1haS9maW5kLXJlcGxhY2UtbGF5b3V0L2NhbmNlbC1jb25maXJtYXRpb24tbW9kYWwvY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVMvQyxNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckMsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7d0dBVFUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0MseUZDWDdDLHd3QkFpQkEsOHlDRFZZLFlBQVk7OzRGQUlYLGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDRSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jYW5jZWwtY29uZmlybWF0aW9uLW1vZGFsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYW5jZWwtY29uZmlybWF0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbmNlbENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IHtcclxuICBhY3RpdmVNb2RhbCA9IGluamVjdChOZ2JBY3RpdmVNb2RhbCk7XHJcblxyXG4gIG9uS2VlcFByb2Nlc3NpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmRpc21pc3MoKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsQmF0Y2hQcm9jZXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSh0cnVlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtY3VzdG9tXCI+XHJcbiAgICA8IS0tIE1vZGFsIEhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXItY3VzdG9tXCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5BYm9ydCBiYXRjaCBwcm9jZXNzPzwvaDU+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPCEtLSBNb2RhbCBCb2R5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHktY3VzdG9tXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvbi10ZXh0XCI+VGhpcyB3aWxsIGNhbmNlbCB0aGUgYmF0Y2ggcHJvY2VzcyBhbmQgZGlzY2FyZCBhbnkgcHJvZ3Jlc3MuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT88L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPCEtLSBNb2RhbCBGb290ZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyLWN1c3RvbVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm9uS2VlcFByb2Nlc3NpbmcoKVwiPktlZXAgUHJvY2Vzc2luZzwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5LWN1c3RvbVwiIChjbGljayk9XCJvbkNhbmNlbEJhdGNoUHJvY2VzcygpXCI+Q2FuY2VsIEJhdGNoIFByb2Nlc3M8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19