{"__symbolic":"module","version":4,"metadata":{"PromotionDetailComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"BaseDetailComponent","line":29,"character":46},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"vdr-promotion-detail","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":27,"character":21},"member":"OnPush"},"template":"<vdr-action-bar>\r\n    <vdr-ab-left>\r\n        <div class=\"flex clr-align-items-center\">\r\n            <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n            <clr-toggle-wrapper *vdrIfPermissions=\"'UpdatePromotion'\">\r\n                <input type=\"checkbox\" clrToggle name=\"enabled\" [formControl]=\"detailForm.get(['enabled'])\" />\r\n                <label>{{ 'common.enabled' | translate }}</label>\r\n            </clr-toggle-wrapper>\r\n        </div>\r\n    </vdr-ab-left>\r\n\r\n    <vdr-ab-right>\r\n        <vdr-action-bar-items locationId=\"promotion-detail\"></vdr-action-bar-items>\r\n        <button\r\n            class=\"btn btn-primary\"\r\n            *ngIf=\"isNew$ | async; else updateButton\"\r\n            (click)=\"create()\"\r\n            [disabled]=\"!saveButtonEnabled()\"\r\n        >\r\n            {{ 'common.create' | translate }}\r\n        </button>\r\n        <ng-template #updateButton>\r\n            <button\r\n                class=\"btn btn-primary\"\r\n                (click)=\"save()\"\r\n                *vdrIfPermissions=\"'UpdatePromotion'\"\r\n                [disabled]=\"!saveButtonEnabled()\"\r\n            >\r\n                {{ 'common.update' | translate }}\r\n            </button>\r\n        </ng-template>\r\n    </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n    <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n        <input\r\n            id=\"name\"\r\n            [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n            type=\"text\"\r\n            formControlName=\"name\"\r\n        />\r\n    </vdr-form-field>\r\n    <vdr-form-field [label]=\"'marketing.starts-at' | translate\" for=\"startsAt\">\r\n        <vdr-datetime-picker formControlName=\"startsAt\"></vdr-datetime-picker>\r\n    </vdr-form-field>\r\n    <vdr-form-field [label]=\"'marketing.ends-at' | translate\" for=\"endsAt\">\r\n        <vdr-datetime-picker formControlName=\"endsAt\"></vdr-datetime-picker>\r\n    </vdr-form-field>\r\n    <vdr-form-field [label]=\"'marketing.coupon-code' | translate\" for=\"couponCode\">\r\n        <input\r\n            id=\"couponCode\"\r\n            [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n            type=\"text\"\r\n            formControlName=\"couponCode\"\r\n        />\r\n    </vdr-form-field>\r\n    <vdr-form-field [label]=\"'marketing.per-customer-limit' | translate\" for=\"perCustomerUsageLimit\">\r\n        <input\r\n            id=\"perCustomerUsageLimit\"\r\n            [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n            type=\"number\"\r\n            min=\"1\"\r\n            max=\"999\"\r\n            formControlName=\"perCustomerUsageLimit\"\r\n        />\r\n    </vdr-form-field>\r\n\r\n    <div class=\"clr-row\">\r\n        <div class=\"clr-col\" formArrayName=\"conditions\">\r\n            <label class=\"clr-control-label\">{{ 'marketing.conditions' | translate }}</label>\r\n            <ng-container *ngFor=\"let condition of conditions; index as i\">\r\n                <vdr-configurable-input\r\n                    (remove)=\"removeCondition($event)\"\r\n                    [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n                    [operation]=\"condition\"\r\n                    [operationDefinition]=\"getConditionDefinition(condition)\"\r\n                    [formControlName]=\"i\"\r\n                ></vdr-configurable-input>\r\n            </ng-container>\r\n\r\n            <div>\r\n                <vdr-dropdown *vdrIfPermissions=\"'UpdatePromotion'\">\r\n                    <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n                        <clr-icon shape=\"plus\"></clr-icon>\r\n                        {{ 'marketing.add-condition' | translate }}\r\n                    </button>\r\n                    <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n                        <button\r\n                            *ngFor=\"let condition of getAvailableConditions()\"\r\n                            type=\"button\"\r\n                            vdrDropdownItem\r\n                            (click)=\"addCondition(condition)\"\r\n                        >\r\n                            {{ condition.description }}\r\n                        </button>\r\n                    </vdr-dropdown-menu>\r\n                </vdr-dropdown>\r\n            </div>\r\n        </div>\r\n        <div class=\"clr-col\" formArrayName=\"actions\">\r\n            <label class=\"clr-control-label\">{{ 'marketing.actions' | translate }}</label>\r\n            <vdr-configurable-input\r\n                *ngFor=\"let action of actions; index as i\"\r\n                (remove)=\"removeAction($event)\"\r\n                [operation]=\"action\"\r\n                [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n                [operationDefinition]=\"getActionDefinition(action)\"\r\n                [formControlName]=\"i\"\r\n            ></vdr-configurable-input>\r\n            <div>\r\n                <vdr-dropdown *vdrIfPermissions=\"'UpdatePromotion'\">\r\n                    <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n                        <clr-icon shape=\"plus\"></clr-icon>\r\n                        {{ 'marketing.add-action' | translate }}\r\n                    </button>\r\n                    <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n                        <button\r\n                            *ngFor=\"let action of getAvailableActions()\"\r\n                            type=\"button\"\r\n                            vdrDropdownItem\r\n                            (click)=\"addAction(action)\"\r\n                        >\r\n                            {{ action.description }}\r\n                        </button>\r\n                    </vdr-dropdown-menu>\r\n                </vdr-dropdown>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</form>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":40,"character":16},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":41,"character":15},{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"ServerConfigService","line":42,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":43,"character":32},{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"DataService","line":44,"character":31},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":45,"character":29},{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"NotificationService","line":46,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getAvailableConditions":[{"__symbolic":"method"}],"getConditionDefinition":[{"__symbolic":"method"}],"getAvailableActions":[{"__symbolic":"method"}],"getActionDefinition":[{"__symbolic":"method"}],"saveButtonEnabled":[{"__symbolic":"method"}],"addCondition":[{"__symbolic":"method"}],"addAction":[{"__symbolic":"method"}],"removeCondition":[{"__symbolic":"method"}],"removeAction":[{"__symbolic":"method"}],"formArrayOf":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"setFormValues":[{"__symbolic":"method"}],"mapOperationsToInputs":[{"__symbolic":"method"}],"addOperation":[{"__symbolic":"method"}],"getDefaultArgValue":[{"__symbolic":"method"}],"removeOperation":[{"__symbolic":"method"}]}},"PromotionSearchForm":{"__symbolic":"interface"},"PromotionListComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"BaseListComponent","line":24,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"vdr-promotion-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":21},"member":"OnPush"},"template":"<vdr-action-bar>\r\n    <vdr-ab-left>\r\n        <form class=\"search-form\" [formGroup]=\"searchForm\">\r\n            <input\r\n                type=\"text\"\r\n                formControlName=\"name\"\r\n                [placeholder]=\"'marketing.search-by-name' | translate\"\r\n                class=\"search-input\"\r\n            />\r\n            <input\r\n                type=\"text\"\r\n                formControlName=\"couponCode\"\r\n                [placeholder]=\"'marketing.search-by-coupon-code' | translate\"\r\n                class=\"search-input\"\r\n            />\r\n        </form>\r\n    </vdr-ab-left>\r\n    <vdr-ab-right>\r\n        <vdr-action-bar-items locationId=\"promotion-list\"></vdr-action-bar-items>\r\n        <a class=\"btn btn-primary\"\r\n           *vdrIfPermissions=\"'CreatePromotion'\"\r\n           [routerLink]=\"['./create']\">\r\n            <clr-icon shape=\"plus\"></clr-icon>\r\n            {{ 'marketing.create-new-promotion' | translate }}\r\n        </a>\r\n    </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n    [items]=\"items$ | async\"\r\n    [itemsPerPage]=\"itemsPerPage$ | async\"\r\n    [totalItems]=\"totalItems$ | async\"\r\n    [currentPage]=\"currentPage$ | async\"\r\n    (pageChange)=\"setPageNumber($event)\"\r\n    (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n    <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>\r\n    <vdr-dt-column>{{ 'marketing.coupon-code' | translate }}</vdr-dt-column>\r\n    <vdr-dt-column>{{ 'marketing.starts-at' | translate }}</vdr-dt-column>\r\n    <vdr-dt-column>{{ 'marketing.ends-at' | translate }}</vdr-dt-column>\r\n    <vdr-dt-column></vdr-dt-column>\r\n    <vdr-dt-column></vdr-dt-column>\r\n    <vdr-dt-column></vdr-dt-column>\r\n    <ng-template let-promotion=\"item\">\r\n        <td class=\"left align-middle\">{{ promotion.name }}</td>\r\n        <td class=\"left align-middle\">\r\n            <vdr-chip *ngIf=\"promotion.couponCode\">\r\n                {{ promotion.couponCode }}\r\n            </vdr-chip>\r\n        </td>\r\n        <td class=\"left align-middle\">{{ promotion.startsAt | localeDate: 'longDate' }}</td>\r\n        <td class=\"left align-middle\">{{ promotion.endsAt | localeDate: 'longDate' }}</td>\r\n        <td class=\"align-middle\">\r\n            <vdr-chip *ngIf=\"!promotion.enabled\">{{ 'common.disabled' | translate }}</vdr-chip>\r\n        </td>\r\n        <td class=\"right align-middle\">\r\n            <vdr-table-row-action\r\n                iconShape=\"edit\"\r\n                [label]=\"'common.edit' | translate\"\r\n                [linkTo]=\"['./', promotion.id]\"\r\n            ></vdr-table-row-action>\r\n        </td>\r\n        <td class=\"right align-middle\">\r\n            <vdr-dropdown>\r\n                <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n                    {{ 'common.actions' | translate }}\r\n                    <clr-icon shape=\"caret down\"></clr-icon>\r\n                </button>\r\n                <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n                    <button\r\n                        type=\"button\"\r\n                        class=\"delete-button\"\r\n                        (click)=\"deletePromotion(promotion.id)\"\r\n                        [disabled]=\"!('DeletePromotion' | hasPermission)\"\r\n                        vdrDropdownItem\r\n                    >\r\n                        <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n                        {{ 'common.delete' | translate }}\r\n                    </button>\r\n                </vdr-dropdown-menu>\r\n            </vdr-dropdown>\r\n        </td>\r\n    </ng-template>\r\n</vdr-data-table>\r\n","styles":[".search-form{padding:0}.search-input{margin:6px 8px 0 0;min-width:200px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"DataService","line":32,"character":29},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":33,"character":16},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":34,"character":15},{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"NotificationService","line":35,"character":37},{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"ModalService","line":36,"character":30}]}],"ngOnInit":[{"__symbolic":"method"}],"deletePromotion":[{"__symbolic":"method"}],"createQueryOptions":[{"__symbolic":"method"}]}},"MarketingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"SharedModule","line":9,"character":14},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":9,"character":28},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"marketingRoutes"}]}],"declarations":[{"__symbolic":"reference","name":"PromotionListComponent"},{"__symbolic":"reference","name":"PromotionDetailComponent"}]}]}],"members":{}},"marketingRoutes":[{"path":"promotions","component":{"__symbolic":"reference","name":"PromotionListComponent"},"data":{"breadcrumb":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@biesbjerg/ngx-translate-extract-marker","name":"marker","line":13,"character":24},"arguments":["breadcrumb.promotions"]}}},{"path":"promotions/:id","component":{"__symbolic":"reference","name":"PromotionDetailComponent"},"resolve":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"createResolveData","line":19,"character":17},"arguments":[{"__symbolic":"reference","name":"PromotionResolver"}]},"canDeactivate":[{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"CanDeactivateDetailGuard","line":20,"character":24}],"data":{"breadcrumb":{"__symbolic":"reference","name":"promotionBreadcrumb"}}}],"promotionBreadcrumb":{"__symbolic":"function","parameters":["data","params"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"detailBreadcrumb","line":28,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":32,"character":17,"module":"./marketing.routes"}]}},"PromotionResolver":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"BaseEntityResolver","line":10,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":11,"character":24},{"__symbolic":"reference","module":"@ishop/admin-ui/core","name":"DataService","line":11,"character":45}]}]},"statics":{"ɵprov":{}}}},"origins":{"PromotionDetailComponent":"./components/promotion-detail/promotion-detail.component","PromotionSearchForm":"./components/promotion-list/promotion-list.component","PromotionListComponent":"./components/promotion-list/promotion-list.component","MarketingModule":"./marketing.module","marketingRoutes":"./marketing.routes","promotionBreadcrumb":"./marketing.routes","PromotionResolver":"./providers/routing/promotion-resolver"},"importAs":"@ishop/admin-ui/marketing"}