@idea-ionic/agenda 5.29.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/environment.d.ts +3 -0
- package/esm2020/environment.mjs +20 -0
- package/esm2020/idea-ionic-agenda.mjs +5 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/esm2020/src/agenda.component.mjs +248 -0
- package/esm2020/src/agenda.module.mjs +57 -0
- package/esm2020/src/calendar.component.mjs +125 -0
- package/esm2020/src/calendarCreation.component.mjs +142 -0
- package/esm2020/src/calendarItem.component.mjs +136 -0
- package/esm2020/src/calendars.service.mjs +255 -0
- package/esm2020/src/dateFormatter.provider.mjs +38 -0
- package/fesm2015/idea-ionic-agenda.mjs +974 -0
- package/fesm2015/idea-ionic-agenda.mjs.map +1 -0
- package/fesm2020/idea-ionic-agenda.mjs +967 -0
- package/fesm2020/idea-ionic-agenda.mjs.map +1 -0
- package/idea-ionic-agenda.d.ts +4 -0
- package/package.json +31 -19
- package/src/agenda.component.d.ts +127 -2
- package/src/agenda.module.d.ts +13 -0
- package/src/calendar.component.d.ts +41 -1
- package/src/calendarCreation.component.d.ts +41 -1
- package/src/calendarItem.component.d.ts +25 -0
- package/src/calendars.service.d.ts +50 -0
- package/src/dateFormatter.provider.d.ts +3 -0
- package/bundles/idea-ionic-agenda.umd.js +0 -1141
- package/bundles/idea-ionic-agenda.umd.js.map +0 -1
- package/bundles/idea-ionic-agenda.umd.min.js +0 -16
- package/bundles/idea-ionic-agenda.umd.min.js.map +0 -1
- package/esm2015/environment.js +0 -17
- package/esm2015/environment.ngsummary.json +0 -1
- package/esm2015/idea-ionic-agenda.js +0 -2
- package/esm2015/idea-ionic-agenda.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/animations/animations.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/common/common.ngfactory.js +0 -5
- package/esm2015/node_modules/@angular/common/common.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/common/http/http.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/core/core.ngfactory.js +0 -4
- package/esm2015/node_modules/@angular/core/core.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/forms/forms.ngfactory.js +0 -9
- package/esm2015/node_modules/@angular/forms/forms.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/router/router.ngfactory.js +0 -12
- package/esm2015/node_modules/@angular/router/router.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/core-plugin-definitions.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/definitions.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/global.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/accessibility.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/app.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/browser.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/camera.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/clipboard.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/device.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/filesystem.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/geolocation.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/local-notifications.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/modals.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/motion.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/network.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/permissions.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/share.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/splash-screen.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/storage.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/toast.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web-plugins.ngsummary.json +0 -1
- package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngfactory.js +0 -1546
- package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/angular/ionic-angular.ngfactory.js +0 -524
- package/esm2015/node_modules/@ionic/angular/ionic-angular.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/angular/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/action-sheet/action-sheet-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/alert/alert-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/checkbox/checkbox-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/content/content-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/datetime/datetime-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/input/input-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/loading/loading-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/menu/menu-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/modal/modal-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/nav/constants.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/nav/nav-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/nav/view-controller.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/picker/picker-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/popover/popover-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/radio-group/radio-group-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/range/range-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/refresher/refresher-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/reorder-group/reorder-group-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/route/route-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/router/utils/interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/searchbar/searchbar-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/segment/segment-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/select/select-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/select-popover/select-popover-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-configs.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/tab-bar/tab-bar-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/textarea/textarea-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/toast/toast-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/toggle/toggle-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/virtual-scroll/virtual-scroll-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/global/config.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/stencil-public-runtime.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/cubic-bezier.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/config.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/gesture-controller.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/menu-controller/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/platform.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/sanitization/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/ios.transition.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/md.transition.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/storage/ionic-storage.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/storage/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-calendar/angular-calendar.ngfactory.js +0 -397
- package/esm2015/node_modules/angular-calendar/angular-calendar.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-calendar/date-adapters/date-fns/index.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-calendar/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-draggable-droppable/angular-draggable-droppable.ngfactory.js +0 -5
- package/esm2015/node_modules/angular-draggable-droppable/angular-draggable-droppable.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-draggable-droppable/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-resizable-element/angular-resizable-element.ngfactory.js +0 -5
- package/esm2015/node_modules/angular-resizable-element/angular-resizable-element.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-resizable-element/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/calendar-utils/calendar-utils.ngsummary.json +0 -1
- package/esm2015/node_modules/calendar-utils/date-adapters/date-adapter/index.ngsummary.json +0 -1
- package/esm2015/node_modules/date-fns/typings.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/APIRequestLog.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCAttachedResource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCConfiguredFolder.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCFolder.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCResource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/address.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/amazonTranslateLanguages.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/announcement.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/appointment.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/attachment.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/booleanChoices.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/cacheable.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/cacheableResource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/calendar.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/check.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/clientInfo.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/contactRequest.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/contacts.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/countries.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customBlockMeta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customFieldMeta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customFieldTypes.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customSectionMeta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/delta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/emailChangeRequest.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/emailData.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/epoch.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/errorReport.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/errorWhitelisted.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/index.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/invitation.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/ionicons.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/label.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/labelVariable.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/languages.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/languages.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/limitCounter.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/markdown.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/membership.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/notification.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/pdfTemplate.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/projectPlan.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/projectSubscription.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/pushNotificationsDevice.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/pushNotificationsPlatforms.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/resource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/sentiment.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/signature.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/signedURL.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/stringVariable.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/suggestion.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/team.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/teamModules.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/timeInterval.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/user.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/utils.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/components/icon/icon.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/components/icon/utils.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/components.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/index.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/stencil-public-runtime.ngsummary.json +0 -1
- package/esm2015/node_modules/localforage/typings/localforage.ngsummary.json +0 -1
- package/esm2015/node_modules/positioning/dist/entry.ngsummary.json +0 -1
- package/esm2015/node_modules/positioning/dist/positioning.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/index.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/AsyncSubject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/BehaviorSubject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/InnerSubscriber.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Notification.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Observable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Operator.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/OuterSubscriber.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/ReplaySubject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Scheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Subject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Subscriber.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Subscription.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/config.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/ConnectableObservable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/bindCallback.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/bindNodeCallback.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/combineLatest.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/concat.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/defer.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/empty.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/forkJoin.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/from.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/fromEvent.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/fromEventPattern.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/generate.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/iif.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/interval.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/merge.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/never.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/of.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/onErrorResumeNext.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/pairs.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/partition.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/race.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/range.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/throwError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/timer.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/using.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/zip.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/operators/groupBy.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduled/scheduled.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/Action.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AsapScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AsyncAction.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AsyncScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/QueueScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/animationFrame.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/asap.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/async.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/queue.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/symbol/observable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/types.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/EmptyError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/ObjectUnsubscribedError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/TimeoutError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/UnsubscriptionError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/identity.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/isObservable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/noop.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/pipe.ngsummary.json +0 -1
- package/esm2015/node_modules/signature_pad/dist/types/point.ngsummary.json +0 -1
- package/esm2015/node_modules/signature_pad/dist/types/signature_pad.ngsummary.json +0 -1
- package/esm2015/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/public-api.ngsummary.json +0 -1
- package/esm2015/src/agenda.component.js +0 -142
- package/esm2015/src/agenda.component.ngfactory.js +0 -120
- package/esm2015/src/agenda.component.ngsummary.json +0 -1
- package/esm2015/src/agenda.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/agenda.module.js +0 -40
- package/esm2015/src/agenda.module.ngfactory.js +0 -20
- package/esm2015/src/agenda.module.ngsummary.json +0 -1
- package/esm2015/src/calendar.component.js +0 -111
- package/esm2015/src/calendar.component.ngfactory.js +0 -54
- package/esm2015/src/calendar.component.ngsummary.json +0 -1
- package/esm2015/src/calendar.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/calendarCreation.component.js +0 -116
- package/esm2015/src/calendarCreation.component.ngfactory.js +0 -43
- package/esm2015/src/calendarCreation.component.ngsummary.json +0 -1
- package/esm2015/src/calendarCreation.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/calendarItem.component.js +0 -119
- package/esm2015/src/calendarItem.component.ngfactory.js +0 -24
- package/esm2015/src/calendarItem.component.ngsummary.json +0 -1
- package/esm2015/src/calendarItem.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/calendars.service.js +0 -209
- package/esm2015/src/calendars.service.ngsummary.json +0 -1
- package/esm2015/src/dateFormatter.provider.js +0 -32
- package/esm2015/src/dateFormatter.provider.ngsummary.json +0 -1
- package/fesm2015/idea-ionic-agenda.js +0 -736
- package/fesm2015/idea-ionic-agenda.js.map +0 -1
- package/idea-ionic-agenda.metadata.json +0 -1
- package/src/agenda.component.ngfactory.d.ts +0 -1
- package/src/agenda.component.scss.shim.ngstyle.d.ts +0 -1
- package/src/agenda.module.ngfactory.d.ts +0 -3
- package/src/calendar.component.ngfactory.d.ts +0 -1
- package/src/calendar.component.scss.shim.ngstyle.d.ts +0 -1
- package/src/calendarCreation.component.ngfactory.d.ts +0 -1
- package/src/calendarCreation.component.scss.shim.ngstyle.d.ts +0 -1
- package/src/calendarItem.component.ngfactory.d.ts +0 -1
- package/src/calendarItem.component.scss.shim.ngstyle.d.ts +0 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Calendar, Check } from 'idea-toolbox';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./calendars.service";
|
|
5
|
+
import * as i2 from "@ionic/angular";
|
|
6
|
+
import * as i3 from "@idea-ionic/common";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
export class IDEACalendarComponent {
|
|
10
|
+
constructor(calendars, modalCtrl, alertCtrl, tc, loading, message, API, t) {
|
|
11
|
+
this.calendars = calendars;
|
|
12
|
+
this.modalCtrl = modalCtrl;
|
|
13
|
+
this.alertCtrl = alertCtrl;
|
|
14
|
+
this.tc = tc;
|
|
15
|
+
this.loading = loading;
|
|
16
|
+
this.message = message;
|
|
17
|
+
this.API = API;
|
|
18
|
+
this.t = t;
|
|
19
|
+
/**
|
|
20
|
+
* Errors while validating the entity.
|
|
21
|
+
*/
|
|
22
|
+
this.errors = new Set();
|
|
23
|
+
/**
|
|
24
|
+
* The default color for a calendar.
|
|
25
|
+
*/
|
|
26
|
+
this.DEFAULT_COLOR = '#555';
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
this.membership = this.tc.get('membership');
|
|
30
|
+
// work on a copy
|
|
31
|
+
this._calendar = new Calendar(this.calendar);
|
|
32
|
+
// load the teammates to use for shared calendars permissions
|
|
33
|
+
this.API.getResource(`teams/${this.membership.teamId}/memberships`)
|
|
34
|
+
.then((memberships) => (this.membershipsChecks = memberships.map(m => new Check({
|
|
35
|
+
value: m.userId,
|
|
36
|
+
name: m.name,
|
|
37
|
+
checked: (this._calendar.usersCanManageAppointments || []).some(x => x === m.userId)
|
|
38
|
+
}))))
|
|
39
|
+
.catch(() => { });
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Set the support array to display errors in the UI.
|
|
43
|
+
*/
|
|
44
|
+
hasFieldAnError(field) {
|
|
45
|
+
return this.errors.has(field);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Save a calendar with the new info.
|
|
49
|
+
*/
|
|
50
|
+
async save() {
|
|
51
|
+
// set the default color, in case none was selected
|
|
52
|
+
if (!this._calendar.color)
|
|
53
|
+
this._calendar.color = this.DEFAULT_COLOR;
|
|
54
|
+
// map the memberships able to manage appointments
|
|
55
|
+
if (this._calendar.isShared() && this.advancedPermissions)
|
|
56
|
+
this._calendar.usersCanManageAppointments = this.membershipsChecks
|
|
57
|
+
.filter(x => x.checked)
|
|
58
|
+
.map(x => String(x.value));
|
|
59
|
+
else
|
|
60
|
+
delete this._calendar.usersCanManageAppointments;
|
|
61
|
+
// checkings
|
|
62
|
+
this.errors = new Set(this._calendar.validate());
|
|
63
|
+
if (this.errors.size)
|
|
64
|
+
return this.message.error('COMMON.FORM_HAS_ERROR_TO_CHECK');
|
|
65
|
+
// send a put request
|
|
66
|
+
await this.loading.show();
|
|
67
|
+
this.calendars
|
|
68
|
+
.putCalendar(this._calendar)
|
|
69
|
+
.then((res) => {
|
|
70
|
+
this.calendar.load(res);
|
|
71
|
+
this.message.success('IDEA_AGENDA.CALENDARS.CALENDAR_SAVED');
|
|
72
|
+
this.modalCtrl.dismiss(this.calendar);
|
|
73
|
+
})
|
|
74
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
75
|
+
.finally(() => this.loading.hide());
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Delete the calendar.
|
|
79
|
+
*/
|
|
80
|
+
delete() {
|
|
81
|
+
this.alertCtrl
|
|
82
|
+
.create({
|
|
83
|
+
header: this.t._('COMMON.ARE_YOU_SURE'),
|
|
84
|
+
subHeader: this.t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR'),
|
|
85
|
+
message: this.t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT'),
|
|
86
|
+
buttons: [
|
|
87
|
+
{ text: this.t._('COMMON.CANCEL'), role: 'cancel' },
|
|
88
|
+
{
|
|
89
|
+
text: this.t._('COMMON.DELETE'),
|
|
90
|
+
handler: async () => {
|
|
91
|
+
await this.loading.show();
|
|
92
|
+
this.calendars
|
|
93
|
+
.deleteCalendar(this._calendar)
|
|
94
|
+
.then(() => {
|
|
95
|
+
this.message.success('IDEA_AGENDA.CALENDARS.CALENDAR_DELETED');
|
|
96
|
+
this.modalCtrl.dismiss(true);
|
|
97
|
+
})
|
|
98
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
99
|
+
.finally(() => this.loading.hide());
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
})
|
|
104
|
+
.then(alert => alert.present());
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Close the component.
|
|
108
|
+
*/
|
|
109
|
+
close() {
|
|
110
|
+
this.modalCtrl.dismiss();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
IDEACalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarComponent, deps: [{ token: i1.IDEACalendarsService }, { token: i2.ModalController }, { token: i2.AlertController }, { token: i3.IDEATinCanService }, { token: i3.IDEALoadingService }, { token: i3.IDEAMessageService }, { token: i3.IDEAAWSAPIService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
+
IDEACalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarComponent, selector: "idea-calendar", inputs: { calendar: "calendar", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.IDEAColorPickerComponent, selector: "idea-color-picker", inputs: ["colors", "current", "label", "placeholder", "icon", "iconColor", "disabled", "obligatory", "lines"], outputs: ["select", "iconSelect"] }, { type: i3.IDEACheckerComponent, selector: "idea-checker", inputs: ["data", "numMaxElementsInPreview", "dataProvider", "label", "icon", "iconColor", "searchPlaceholder", "noPreviewText", "noElementsFoundText", "noneEqualsAll", "noneText", "allText", "lines", "disabled", "tappableWhenDisabled", "obligatory", "sortData", "showAvatars", "fallbackAvatar", "limitSelectionToNum", "allowSelectDeselectAll"], outputs: ["change", "iconSelect"] }, { type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.IDEATranslatePipe } });
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarComponent, decorators: [{
|
|
116
|
+
type: Component,
|
|
117
|
+
args: [{ selector: 'idea-calendar', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"] }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.IDEACalendarsService }, { type: i2.ModalController }, { type: i2.AlertController }, { type: i3.IDEATinCanService }, { type: i3.IDEALoadingService }, { type: i3.IDEAMessageService }, { type: i3.IDEAAWSAPIService }, { type: i3.IDEATranslationsService }]; }, propDecorators: { calendar: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], advancedPermissions: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], hideColor: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}] } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBYyxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQWdCM0QsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFDUyxTQUErQixFQUMvQixTQUEwQixFQUMxQixTQUEwQixFQUMxQixFQUFxQixFQUNyQixPQUEyQixFQUMzQixPQUEyQixFQUMzQixHQUFzQixFQUN0QixDQUEwQjtRQVAxQixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQWpCbkM7O1dBRUc7UUFDSSxXQUFNLEdBQWdCLElBQUksR0FBRyxFQUFVLENBQUM7UUFDL0M7O1dBRUc7UUFDSSxrQkFBYSxHQUFHLE1BQU0sQ0FBQztJQVczQixDQUFDO0lBQ0csUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFB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QUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7a0hBdklVLHFCQUFxQjtzR0FBckIscUJBQXFCLDJKQ2xCbEMseTBKQThHQTsyRkQ1RmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7K1VBUVQsUUFBUTtzQkFBdkIsS0FBSztnQkFJVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBSVUsU0FBUztzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBDYWxlbmRhciwgQ2hlY2ssIE1lbWJlcnNoaXAgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHtcbiAgSURFQUxvYWRpbmdTZXJ2aWNlLFxuICBJREVBQVdTQVBJU2VydmljZSxcbiAgSURFQVRpbkNhblNlcnZpY2UsXG4gIElERUFNZXNzYWdlU2VydmljZSxcbiAgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2Vcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIHRvIG1hbmFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjYWxlbmRhcjogQ2FsZW5kYXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGFkdmFuY2VkIHBlcm1pc3Npb25zIChiYXNlZCBvbiB0aGUgbWVtYmVyc2hpcHMpIG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhZHZhbmNlZFBlcm1pc3Npb25zOiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY2FsZW5kYXIgY29sb3IgaXMgYW4gaW1wb3J0YW50IGRldGFpbCBvciBpdCBzaG91bGRuJ3QgYmUgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNvbG9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXb3JraW5nIGNvcHkgb2YgdGhlIGNhbGVuZGFyLCB0byB1cGRhdGUgb25seSB3aGVuIGNvbmZpcm1lZC5cbiAgICovXG4gIHB1YmxpYyBfY2FsZW5kYXI6IENhbGVuZGFyO1xuICAvKipcbiAgICogSGVscGVyIHRvIGFsbG93IHNlbGVjdGluZyBtZW1iZXJzaGlwcy5cbiAgICovXG4gIHB1YmxpYyBtZW1iZXJzaGlwc0NoZWNrczogQ2hlY2tbXTtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IG1lbWJlcnNoaXAuXG4gICAqL1xuICBwdWJsaWMgbWVtYmVyc2hpcDogTWVtYmVyc2hpcDtcbiAgLyoqXG4gICAqIEVycm9ycyB3aGlsZSB2YWxpZGF0aW5nIHRoZSBlbnRpdHkuXG4gICAqL1xuICBwdWJsaWMgZXJyb3JzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY29sb3IgZm9yIGEgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgREVGQVVMVF9DT0xPUiA9ICcjNTU1JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FsZW5kYXJzOiBJREVBQ2FsZW5kYXJzU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHVibGljIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHB1YmxpYyB0YzogSURFQVRpbkNhblNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBBUEk6IElERUFBV1NBUElTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lbWJlcnNoaXAgPSB0aGlzLnRjLmdldCgnbWVtYmVyc2hpcCcpO1xuICAgIC8vIHdvcmsgb24gYSBjb3B5XG4gICAgdGhpcy5fY2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXIodGhpcy5jYWxlbmRhcik7XG4gICAgLy8gbG9hZCB0aGUgdGVhbW1hdGVzIHRvIHVzZSBmb3Igc2hhcmVkIGNhbGVuZGFycyBwZXJtaXNzaW9uc1xuICAgIHRoaXMuQVBJLmdldFJlc291cmNlKGB0ZWFtcy8ke3RoaXMubWVtYmVyc2hpcC50ZWFtSWR9L21lbWJlcnNoaXBzYClcbiAgICAgIC50aGVuKFxuICAgICAgICAobWVtYmVyc2hpcHM6IE1lbWJlcnNoaXBbXSkgPT5cbiAgICAgICAgICAodGhpcy5tZW1iZXJzaGlwc0NoZWNrcyA9IG1lbWJlcnNoaXBzLm1hcChcbiAgICAgICAgICAgIG0gPT5cbiAgICAgICAgICAgICAgbmV3IENoZWNrKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbS51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbS5uYW1lLFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICh0aGlzLl9jYWxlbmRhci51c2Vyc0Nhbk1hbmFnZUFwcG9pbnRtZW50cyB8fCBbXSkuc29tZSh4ID0+IHggPT09IG0udXNlcklkKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICkpXG4gICAgICApXG4gICAgICAuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3VwcG9ydCBhcnJheSB0byBkaXNwbGF5IGVycm9ycyBpbiB0aGUgVUkuXG4gICAqL1xuICBwdWJsaWMgaGFzRmllbGRBbkVycm9yKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMuaGFzKGZpZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgY2FsZW5kYXIgd2l0aCB0aGUgbmV3IGluZm8uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZSgpIHtcbiAgICAvLyBzZXQgdGhlIGRlZmF1bHQgY29sb3IsIGluIGNhc2Ugbm9uZSB3YXMgc2VsZWN0ZWRcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyLmNvbG9yKSB0aGlzLl9jYWxlbmRhci5jb2xvciA9IHRoaXMuREVGQVVMVF9DT0xPUjtcbiAgICAvLyBtYXAgdGhlIG1lbWJlcnNoaXBzIGFibGUgdG8gbWFuYWdlIGFwcG9pbnRtZW50c1xuICAgIGlmICh0aGlzLl9jYWxlbmRhci5pc1NoYXJlZCgpICYmIHRoaXMuYWR2YW5jZWRQZXJtaXNzaW9ucylcbiAgICAgIHRoaXMuX2NhbGVuZGFyLnVzZXJzQ2FuTWFuYWdlQXBwb2ludG1lbnRzID0gdGhpcy5tZW1iZXJzaGlwc0NoZWNrc1xuICAgICAgICAuZmlsdGVyKHggPT4geC5jaGVja2VkKVxuICAgICAgICAubWFwKHggPT4gU3RyaW5nKHgudmFsdWUpKTtcbiAgICBlbHNlIGRlbGV0ZSB0aGlzLl9jYWxlbmRhci51c2Vyc0Nhbk1hbmFnZUFwcG9pbnRtZW50cztcbiAgICAvLyBjaGVja2luZ3NcbiAgICB0aGlzLmVycm9ycyA9IG5ldyBTZXQodGhpcy5fY2FsZW5kYXIudmFsaWRhdGUoKSk7XG4gICAgaWYgKHRoaXMuZXJyb3JzLnNpemUpIHJldHVybiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5GT1JNX0hBU19FUlJPUl9UT19DSEVDSycpO1xuICAgIC8vIHNlbmQgYSBwdXQgcmVxdWVzdFxuICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgIC5wdXRDYWxlbmRhcih0aGlzLl9jYWxlbmRhcilcbiAgICAgIC50aGVuKChyZXM6IENhbGVuZGFyKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChyZXMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX1NBVkVEJyk7XG4gICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlKCkge1xuICAgIHRoaXMuYWxlcnRDdHJsXG4gICAgICAuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0aGlzLnQuXygnQ09NTU9OLkFSRV9ZT1VfU1VSRScpLFxuICAgICAgICBzdWJIZWFkZXI6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSJyksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnKSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHsgdGV4dDogdGhpcy50Ll8oJ0NPTU1PTi5DQU5DRUwnKSwgcm9sZTogJ2NhbmNlbCcgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnQuXygnQ09NTU9OLkRFTEVURScpLFxuICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1xuICAgICAgICAgICAgICAgIC5kZWxldGVDYWxlbmRhcih0aGlzLl9jYWxlbmRhcilcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX0RFTEVURUQnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5tZXNzYWdlLmVycm9yKCdDT01NT04uT1BFUkFUSU9OX0ZBSUxFRCcpKVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICAgIC50aGVuKGFsZXJ0ID0+IGFsZXJ0LnByZXNlbnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCJ0Ll8oJ0NPTU1PTi5DTE9TRScpXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5FRElUX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwidC5fKCdDT01NT04uU0FWRScpXCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8ZGl2IGNsYXNzPVwibWF4V2lkdGhDb250YWluZXJcIiAqbmdJZj1cIl9jYWxlbmRhclwiPlxuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgICA8aW9uLWl0ZW1cbiAgICAgICAgbGluZXM9XCJpbnNldFwiXG4gICAgICAgIFtjbGFzcy5maWVsZEhhc0Vycm9yXT1cImhhc0ZpZWxkQW5FcnJvcignbmFtZScpXCJcbiAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLk5BTUVfSElOVCcpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLk5BTUUnIHwgdHJhbnNsYXRlIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWlucHV0IFtwbGFjZWhvbGRlcl09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5OQU1FX0hJTlQnKVwiIFsobmdNb2RlbCldPVwiX2NhbGVuZGFyLm5hbWVcIj48L2lvbi1pbnB1dD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICA8aW9uLWl0ZW1cbiAgICAgICAgbGluZXM9XCJpbnNldFwiXG4gICAgICAgIFtjbGFzcy5maWVsZEhhc0Vycm9yXT1cImhhc0ZpZWxkQW5FcnJvcignZGVzY3JpcHRpb24nKVwiXG4gICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ERVNDUklQVElPTl9ISU5UJylcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwic3RhY2tlZFwiPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRFU0NSSVBUSU9OX0hJTlQnKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJfY2FsZW5kYXIuZGVzY3JpcHRpb25cIlxuICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgICAgPGlkZWEtY29sb3ItcGlja2VyXG4gICAgICAgICpuZ0lmPVwiIWhpZGVDb2xvclwiXG4gICAgICAgIFtsaW5lc109XCInaW5zZXQnXCJcbiAgICAgICAgW2N1cnJlbnRdPVwiX2NhbGVuZGFyLmNvbG9yXCJcbiAgICAgICAgW2xhYmVsXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNPTE9SJylcIlxuICAgICAgICBbY2xhc3MuZmllbGRIYXNFcnJvcl09XCJoYXNGaWVsZEFuRXJyb3IoJ2NvbG9yJylcIlxuICAgICAgICAoc2VsZWN0KT1cIiRldmVudCA/IChfY2FsZW5kYXIuY29sb3IgPSAkZXZlbnQpIDogbnVsbFwiXG4gICAgICA+PC9pZGVhLWNvbG9yLXBpY2tlcj5cbiAgICAgIDxpZGVhLWNoZWNrZXJcbiAgICAgICAgKm5nSWY9XCJtZW1iZXJzaGlwc0NoZWNrcyAmJiBfY2FsZW5kYXIuaXNTaGFyZWQoKSAmJiBhZHZhbmNlZFBlcm1pc3Npb25zXCJcbiAgICAgICAgW2RhdGFdPVwibWVtYmVyc2hpcHNDaGVja3NcIlxuICAgICAgICBbbGFiZWxdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVVNFUlNfQUxMT1dFRF9UT19NQU5BR0VfQVBQT0lOVE1FTlRTJylcIlxuICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuV0hPX0NBTl9NQU5BR0VfQVBQT0lOVE1FTlRTJylcIlxuICAgICAgICBbbm9uZVRleHRdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTk9CT0RZJylcIlxuICAgICAgICBbYWxsVGV4dF09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5FVkVSWU9ORScpXCJcbiAgICAgICAgW2FsbG93U2VsZWN0RGVzZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgIFtsaW5lc109XCInaW5zZXQnXCJcbiAgICAgID48L2lkZWEtY2hlY2tlcj5cbiAgICA8L2lvbi1saXN0PlxuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCIgKm5nSWY9XCJfY2FsZW5kYXIuZXh0ZXJuYWw/LnNlcnZpY2VcIj5cbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgPGgyPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuSU5GT19PTl9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgPGlvbi1pdGVtIGxpbmVzPVwiaW5zZXRcIiAqbmdJZj1cImNhbGVuZGFyLnVzZXJJZFwiPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuUFJJVkFURV9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBSSVZBVEVfQ0FMRU5EQVJfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJwZXJzb25cIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cImluc2V0XCIgKm5nSWY9XCJjYWxlbmRhci50ZWFtSWRcIj5cbiAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRFQU1fQ0FMRU5EQVInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5URUFNX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGVvcGxlXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJpbnNldFwiPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTElOS0VEX1RPJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuU0VSVklDRVMuJyArIF9jYWxlbmRhci5leHRlcm5hbC5zZXJ2aWNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHA+e3sgX2NhbGVuZGFyLmV4dGVybmFsLm5hbWUgfX0gKHt7IF9jYWxlbmRhci5leHRlcm5hbC5lbWFpbCB9fSk8L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIFtuYW1lXT1cImNhbGVuZGFycy5nZXRTZXJ2aWNlSWNvbihfY2FsZW5kYXIuZXh0ZXJuYWwuc2VydmljZSlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cImluc2V0XCI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAge3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5BQ0NFU1NfTEVWRUxTLicgKyBfY2FsZW5kYXIuZXh0ZXJuYWwudXNlckFjY2VzcyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQkFTRURfT05fRVhURVJOQUxfU0VSVklDRV9TSEFSSU5HX1BFUk1JU1NJT04nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwic2hpZWxkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9pb24tbGlzdD5cbiAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIDxoMj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRBTkdFUk9VU19aT05FJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJpbnNldFwiPlxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJkYW5nZXJcIiBbdGl0bGVdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnKVwiIChjbGljayk9XCJkZWxldGUoKVwiPlxuICAgICAgICAgIHt7ICdDT01NT04uREVMRVRFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLWxpc3Q+XG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Calendar, ExternalCalendarInfo, ExternalCalendarSources } from 'idea-toolbox';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./calendars.service";
|
|
5
|
+
import * as i2 from "@ionic/angular";
|
|
6
|
+
import * as i3 from "@idea-ionic/common";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class IDEACalendarCreationComponent {
|
|
9
|
+
constructor(calendars, modalCtrl, tc, loading, message, API, t) {
|
|
10
|
+
this.calendars = calendars;
|
|
11
|
+
this.modalCtrl = modalCtrl;
|
|
12
|
+
this.tc = tc;
|
|
13
|
+
this.loading = loading;
|
|
14
|
+
this.message = message;
|
|
15
|
+
this.API = API;
|
|
16
|
+
this.t = t;
|
|
17
|
+
/**
|
|
18
|
+
* The default color for a new calendar.
|
|
19
|
+
*/
|
|
20
|
+
this.DEFAULT_COLOR = '#555';
|
|
21
|
+
/**
|
|
22
|
+
* The possible external services for the new calendar.
|
|
23
|
+
*/
|
|
24
|
+
this.SOURCES = Object.keys(ExternalCalendarSources);
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.calendar = new Calendar();
|
|
28
|
+
this.membership = this.tc.get('membership');
|
|
29
|
+
if (this.fixScope === CalendarScopes.SHARED)
|
|
30
|
+
this.calendar.teamId = this.membership.teamId;
|
|
31
|
+
if (this.fixScope === CalendarScopes.PRIVATE)
|
|
32
|
+
this.calendar.userId = this.membership.userId;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* If allowed by the component configuration, reset the scope of the calendar (private/shared).
|
|
36
|
+
*/
|
|
37
|
+
resetScope() {
|
|
38
|
+
if (this.canChangeScope())
|
|
39
|
+
this.calendar.teamId = this.calendar.userId = null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Whether we can change the scope of the calendar (private/shared).
|
|
43
|
+
*/
|
|
44
|
+
canChangeScope() {
|
|
45
|
+
return !this.fixScope && this.scopeIsSet();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether the scope has been set already.
|
|
49
|
+
*/
|
|
50
|
+
scopeIsSet() {
|
|
51
|
+
return Boolean(this.calendar.userId) || Boolean(this.calendar.teamId);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Add a new calendar based on the configuration set.
|
|
55
|
+
*/
|
|
56
|
+
async saveNewCalendar(service) {
|
|
57
|
+
// be sure the scope of the calendar was chosen
|
|
58
|
+
if (!this.scopeIsSet())
|
|
59
|
+
return;
|
|
60
|
+
// be sure we are allowed to create the calendar
|
|
61
|
+
if (!service && this.onlyExternalCalendars)
|
|
62
|
+
return;
|
|
63
|
+
// flag the calendar so it has to be linked to an externals service (the procedure follows the creation)
|
|
64
|
+
if (service) {
|
|
65
|
+
this.calendar.external = new ExternalCalendarInfo({ service });
|
|
66
|
+
this.calendar.name = '-'; // it will be substituted with the external name
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// default values for local calendars
|
|
70
|
+
this.calendar.name = this.calendar.userId
|
|
71
|
+
? this.t._('IDEA_AGENDA.CALENDARS.DEFAULT_PERSONAL_CALENDAR_NAME')
|
|
72
|
+
: this.t._('IDEA_AGENDA.CALENDARS.DEFAULT_TEAM_CALENDAR_NAME');
|
|
73
|
+
this.calendar.color = this.DEFAULT_COLOR;
|
|
74
|
+
}
|
|
75
|
+
// save (create) the new calendar
|
|
76
|
+
await this.loading.show();
|
|
77
|
+
this.calendars
|
|
78
|
+
.postCalendar(this.calendar)
|
|
79
|
+
.then(cal => {
|
|
80
|
+
this.calendar.load(cal);
|
|
81
|
+
this.message.success('IDEA_AGENDA.CALENDARS.CALENDAR_CREATED');
|
|
82
|
+
// if the calendar is local, no further action is needed
|
|
83
|
+
if (!cal.external)
|
|
84
|
+
return this.modalCtrl.dismiss(this.calendar);
|
|
85
|
+
// if the calendar should be linked to an external service, proceed
|
|
86
|
+
this.calendars
|
|
87
|
+
.linkExtService(this.calendar)
|
|
88
|
+
// if the link was successful, let the user pick an external calendar to set
|
|
89
|
+
.then(() => this.calendars.chooseAndSetExternalCalendar(this.calendar))
|
|
90
|
+
.then(async (res) => {
|
|
91
|
+
// if a calendar wasn't set, it can be done later on
|
|
92
|
+
if (!res)
|
|
93
|
+
return this.modalCtrl.dismiss(this.calendar);
|
|
94
|
+
// if an external calendar was set, update the calendar
|
|
95
|
+
this.calendar.load(res);
|
|
96
|
+
// run a first sync for the linked external calendar
|
|
97
|
+
await this.loading.show(this.t._('IDEA_AGENDA.CALENDARS.FIRST_SYNC_MAY_TAKE_A_WHILE'));
|
|
98
|
+
this.calendars
|
|
99
|
+
.syncCalendar(this.calendar)
|
|
100
|
+
.then(() => this.message.success('IDEA_AGENDA.CALENDARS.FIRST_SYNC_COMPLETED'))
|
|
101
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
102
|
+
.finally(() => {
|
|
103
|
+
this.loading.hide();
|
|
104
|
+
// the calendar is ready to go
|
|
105
|
+
this.modalCtrl.dismiss(this.calendar);
|
|
106
|
+
});
|
|
107
|
+
})
|
|
108
|
+
.catch(() => {
|
|
109
|
+
this.message.error('COMMON.OPERATION_FAILED');
|
|
110
|
+
// the operation can be retried later on; close the modal anyway
|
|
111
|
+
this.modalCtrl.dismiss(this.calendar);
|
|
112
|
+
});
|
|
113
|
+
})
|
|
114
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
115
|
+
.finally(() => this.loading.hide());
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Close the component.
|
|
119
|
+
*/
|
|
120
|
+
close() {
|
|
121
|
+
this.modalCtrl.dismiss();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
IDEACalendarCreationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarCreationComponent, deps: [{ token: i1.IDEACalendarsService }, { token: i2.ModalController }, { token: i3.IDEATinCanService }, { token: i3.IDEALoadingService }, { token: i3.IDEAMessageService }, { token: i3.IDEAAWSAPIService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
125
|
+
IDEACalendarCreationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarCreationComponent, selector: "idea-calendar-creation", inputs: { fixScope: "fixScope", onlyExternalCalendars: "onlyExternalCalendars" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button *ngIf=\"!canChangeScope()\" [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button *ngIf=\"canChangeScope()\" (click)=\"resetScope()\">\n <ion-icon name=\"arrow-back\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>\n <span *ngIf=\"!scopeIsSet()\">{{ 'IDEA_AGENDA.CALENDARS.ADD_A_CALENDAR' | translate }}</span>\n <span *ngIf=\"calendar.userId\">{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</span>\n <span *ngIf=\"calendar.teamId\">\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate: { team: tc.get('team').name } }}\n </span>\n </ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <!-- 1st STEP -->\n <ion-grid class=\"ion-padding choiceGrid\" *ngIf=\"!scopeIsSet()\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.CREATE_PRIVATE_OR_TEAM' | translate }}</h1>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.userId = membership.userId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"person\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.teamId = membership.teamId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"people\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n <!-- 2nd STEP -->\n <ion-grid class=\"ion-padding choiceGrid\" *ngIf=\"scopeIsSet()\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK_HINT' | translate }}</p>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"12\" *ngIf=\"!onlyExternalCalendars\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar()\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"remove\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col class=\"ion-text-center\" *ngFor=\"let s of SOURCES\" [size]=\"12\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar(s)\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon [name]=\"calendars.getServiceIcon(s)\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>\n {{ 'IDEA_AGENDA.CALENDARS.LINK_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + s | translate }}\n </h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.LINK_TO_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-content{--background: var(--ion-color-white-shade)}.choiceGrid ion-row ion-col>h1{margin:10px 0 0;font-size:1.1em}.choiceGrid ion-row ion-col>p{margin-top:0;margin-bottom:0;font-size:.9em}.choiceGrid ion-row:first-child ion-col{padding-bottom:25px}.choiceGrid ion-card{--ion-item-background: var(--ion-color-white);--color: var(--ion-color-dark-tint);height:240px;margin:0 auto;text-align:center}.choiceGrid ion-card ion-card-header{padding-bottom:10px}.choiceGrid ion-card ion-card-header ion-card-title{font-size:2.5em}.choiceGrid ion-card ion-card-content h1{font-size:1.4em;height:60px}.choiceGrid ion-card.step2{height:135px}.choiceGrid ion-card.step2 ion-card-header{padding-top:10px;padding-bottom:0}.choiceGrid ion-card.step2 ion-card-content h1{height:auto}\n"], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { type: i2.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i3.IDEATranslatePipe } });
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarCreationComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'idea-calendar-creation', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button *ngIf=\"!canChangeScope()\" [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button *ngIf=\"canChangeScope()\" (click)=\"resetScope()\">\n <ion-icon name=\"arrow-back\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>\n <span *ngIf=\"!scopeIsSet()\">{{ 'IDEA_AGENDA.CALENDARS.ADD_A_CALENDAR' | translate }}</span>\n <span *ngIf=\"calendar.userId\">{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</span>\n <span *ngIf=\"calendar.teamId\">\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate: { team: tc.get('team').name } }}\n </span>\n </ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <!-- 1st STEP -->\n <ion-grid class=\"ion-padding choiceGrid\" *ngIf=\"!scopeIsSet()\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.CREATE_PRIVATE_OR_TEAM' | translate }}</h1>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.userId = membership.userId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"person\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.teamId = membership.teamId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"people\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n <!-- 2nd STEP -->\n <ion-grid class=\"ion-padding choiceGrid\" *ngIf=\"scopeIsSet()\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK_HINT' | translate }}</p>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"12\" *ngIf=\"!onlyExternalCalendars\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar()\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"remove\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col class=\"ion-text-center\" *ngFor=\"let s of SOURCES\" [size]=\"12\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar(s)\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon [name]=\"calendars.getServiceIcon(s)\"></ion-icon>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>\n {{ 'IDEA_AGENDA.CALENDARS.LINK_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + s | translate }}\n </h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.LINK_TO_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-content{--background: var(--ion-color-white-shade)}.choiceGrid ion-row ion-col>h1{margin:10px 0 0;font-size:1.1em}.choiceGrid ion-row ion-col>p{margin-top:0;margin-bottom:0;font-size:.9em}.choiceGrid ion-row:first-child ion-col{padding-bottom:25px}.choiceGrid ion-card{--ion-item-background: var(--ion-color-white);--color: var(--ion-color-dark-tint);height:240px;margin:0 auto;text-align:center}.choiceGrid ion-card ion-card-header{padding-bottom:10px}.choiceGrid ion-card ion-card-header ion-card-title{font-size:2.5em}.choiceGrid ion-card ion-card-content h1{font-size:1.4em;height:60px}.choiceGrid ion-card.step2{height:135px}.choiceGrid ion-card.step2 ion-card-header{padding-top:10px;padding-bottom:0}.choiceGrid ion-card.step2 ion-card-content h1{height:auto}\n"] }]
|
|
129
|
+
}], ctorParameters: function () { return [{ type: i1.IDEACalendarsService }, { type: i2.ModalController }, { type: i3.IDEATinCanService }, { type: i3.IDEALoadingService }, { type: i3.IDEAMessageService }, { type: i3.IDEAAWSAPIService }, { type: i3.IDEATranslationsService }]; }, propDecorators: { fixScope: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], onlyExternalCalendars: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}] } });
|
|
134
|
+
/**
|
|
135
|
+
* The possible scopes of the calendar.
|
|
136
|
+
*/
|
|
137
|
+
export var CalendarScopes;
|
|
138
|
+
(function (CalendarScopes) {
|
|
139
|
+
CalendarScopes["SHARED"] = "shared";
|
|
140
|
+
CalendarScopes["PRIVATE"] = "private"; // userId
|
|
141
|
+
})(CalendarScopes || (CalendarScopes = {}));
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFjLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFnQm5HLE1BQU0sT0FBTyw2QkFBNkI7SUEwQnhDLFlBQ1MsU0FBK0IsRUFDL0IsU0FBMEIsRUFDMUIsRUFBcUIsRUFDckIsT0FBMkIsRUFDM0IsT0FBMkIsRUFDM0IsR0FBc0IsRUFDdEIsQ0FBMEI7UUFOMUIsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsTUFBQyxHQUFELENBQUMsQ0FBeUI7UUFoQm5DOztXQUVHO1FBQ0ksa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFDOUI7O1dBRUc7UUFDSSxZQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBVW5ELENBQUM7SUFDRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMs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QUMsQ0FBQzthQUMxRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7OzBIQTlIVSw2QkFBNkI7OEdBQTdCLDZCQUE2QixnSkNsQjFDLGduSUFpR0E7MkZEL0VhLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSx3QkFBd0I7aVRBUWxCLFFBQVE7c0JBQXZCLEtBQUs7Z0JBSVUscUJBQXFCO3NCQUFwQyxLQUFLOztBQXlIUjs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIscUNBQW1CLENBQUEsQ0FBQyxTQUFTO0FBQy9CLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2FsZW5kYXIsIEV4dGVybmFsQ2FsZW5kYXJJbmZvLCBFeHRlcm5hbENhbGVuZGFyU291cmNlcywgTWVtYmVyc2hpcCB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQge1xuICBJREVBTG9hZGluZ1NlcnZpY2UsXG4gIElERUFBV1NBUElTZXJ2aWNlLFxuICBJREVBVGluQ2FuU2VydmljZSxcbiAgSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICBJREVBVHJhbnNsYXRpb25zU2VydmljZVxufSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJzU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXJzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWNhbGVuZGFyLWNyZWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdjYWxlbmRhckNyZWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NhbGVuZGFyQ3JlYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ2FsZW5kYXJDcmVhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIG9ubHkgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgY2FsZW5kYXIsIGJhc2VkIG9uIHRoZSBzY29wZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmaXhTY29wZTogQ2FsZW5kYXJTY29wZXM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGxvY2FsIGNhbGVuZGFycy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBvbmx5RXh0ZXJuYWxDYWxlbmRhcnM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBtZW1iZXJzaGlwIChnZW5lcmljKS5cbiAgICovXG4gIHB1YmxpYyBtZW1iZXJzaGlwOiBNZW1iZXJzaGlwO1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjYWxlbmRhcjogQ2FsZW5kYXI7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBjb2xvciBmb3IgYSBuZXcgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgREVGQVVMVF9DT0xPUiA9ICcjNTU1JztcbiAgLyoqXG4gICAqIFRoZSBwb3NzaWJsZSBleHRlcm5hbCBzZXJ2aWNlcyBmb3IgdGhlIG5ldyBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBTT1VSQ0VTID0gT2JqZWN0LmtleXMoRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjYWxlbmRhcnM6IElERUFDYWxlbmRhcnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwdWJsaWMgdGM6IElERUFUaW5DYW5TZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2FkaW5nOiBJREVBTG9hZGluZ1NlcnZpY2UsXG4gICAgcHVibGljIG1lc3NhZ2U6IElERUFNZXNzYWdlU2VydmljZSxcbiAgICBwdWJsaWMgQVBJOiBJREVBQVdTQVBJU2VydmljZSxcbiAgICBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2VcbiAgKSB7fVxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYWxlbmRhciA9IG5ldyBDYWxlbmRhcigpO1xuICAgIHRoaXMubWVtYmVyc2hpcCA9IHRoaXMudGMuZ2V0KCdtZW1iZXJzaGlwJyk7XG4gICAgaWYgKHRoaXMuZml4U2NvcGUgPT09IENhbGVuZGFyU2NvcGVzLlNIQVJFRCkgdGhpcy5jYWxlbmRhci50ZWFtSWQgPSB0aGlzLm1lbWJlcnNoaXAudGVhbUlkO1xuICAgIGlmICh0aGlzLmZpeFNjb3BlID09PSBDYWxlbmRhclNjb3Blcy5QUklWQVRFKSB0aGlzLmNhbGVuZGFyLnVzZXJJZCA9IHRoaXMubWVtYmVyc2hpcC51c2VySWQ7XG4gIH1cblxuICAvKipcbiAgICogSWYgYWxsb3dlZCBieSB0aGUgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24sIHJlc2V0IHRoZSBzY29wZSBvZiB0aGUgY2FsZW5kYXIgKHByaXZhdGUvc2hhcmVkKS5cbiAgICovXG4gIHB1YmxpYyByZXNldFNjb3BlKCkge1xuICAgIGlmICh0aGlzLmNhbkNoYW5nZVNjb3BlKCkpIHRoaXMuY2FsZW5kYXIudGVhbUlkID0gdGhpcy5jYWxlbmRhci51c2VySWQgPSBudWxsO1xuICB9XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIGNhbiBjaGFuZ2UgdGhlIHNjb3BlIG9mIHRoZSBjYWxlbmRhciAocHJpdmF0ZS9zaGFyZWQpLlxuICAgKi9cbiAgcHVibGljIGNhbkNoYW5nZVNjb3BlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5maXhTY29wZSAmJiB0aGlzLnNjb3BlSXNTZXQoKTtcbiAgfVxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2NvcGUgaGFzIGJlZW4gc2V0IGFscmVhZHkuXG4gICAqL1xuICBwdWJsaWMgc2NvcGVJc1NldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmNhbGVuZGFyLnVzZXJJZCkgfHwgQm9vbGVhbih0aGlzLmNhbGVuZGFyLnRlYW1JZCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGNhbGVuZGFyIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHNldC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzYXZlTmV3Q2FsZW5kYXIoc2VydmljZT86IEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzKSB7XG4gICAgLy8gYmUgc3VyZSB0aGUgc2NvcGUgb2YgdGhlIGNhbGVuZGFyIHdhcyBjaG9zZW5cbiAgICBpZiAoIXRoaXMuc2NvcGVJc1NldCgpKSByZXR1cm47XG4gICAgLy8gYmUgc3VyZSB3ZSBhcmUgYWxsb3dlZCB0byBjcmVhdGUgdGhlIGNhbGVuZGFyXG4gICAgaWYgKCFzZXJ2aWNlICYmIHRoaXMub25seUV4dGVybmFsQ2FsZW5kYXJzKSByZXR1cm47XG4gICAgLy8gZmxhZyB0aGUgY2FsZW5kYXIgc28gaXQgaGFzIHRvIGJlIGxpbmtlZCB0byBhbiBleHRlcm5hbHMgc2VydmljZSAodGhlIHByb2NlZHVyZSBmb2xsb3dzIHRoZSBjcmVhdGlvbilcbiAgICBpZiAoc2VydmljZSkge1xuICAgICAgdGhpcy5jYWxlbmRhci5leHRlcm5hbCA9IG5ldyBFeHRlcm5hbENhbGVuZGFySW5mbyh7IHNlcnZpY2UgfSk7XG4gICAgICB0aGlzLmNhbGVuZGFyLm5hbWUgPSAnLSc7IC8vIGl0IHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgZXh0ZXJuYWwgbmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWZhdWx0IHZhbHVlcyBmb3IgbG9jYWwgY2FsZW5kYXJzXG4gICAgICB0aGlzLmNhbGVuZGFyLm5hbWUgPSB0aGlzLmNhbGVuZGFyLnVzZXJJZFxuICAgICAgICA/IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVGQVVMVF9QRVJTT05BTF9DQUxFTkRBUl9OQU1FJylcbiAgICAgICAgOiB0aGlzLnQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRFRkFVTFRfVEVBTV9DQUxFTkRBUl9OQU1FJyk7XG4gICAgICB0aGlzLmNhbGVuZGFyLmNvbG9yID0gdGhpcy5ERUZBVUxUX0NPTE9SO1xuICAgIH1cbiAgICAvLyBzYXZlIChjcmVhdGUpIHRoZSBuZXcgY2FsZW5kYXJcbiAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgIHRoaXMuY2FsZW5kYXJzXG4gICAgICAucG9zdENhbGVuZGFyKHRoaXMuY2FsZW5kYXIpXG4gICAgICAudGhlbihjYWwgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyLmxvYWQoY2FsKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlLnN1Y2Nlc3MoJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5DQUxFTkRBUl9DUkVBVEVEJyk7XG4gICAgICAgIC8vIGlmIHRoZSBjYWxlbmRhciBpcyBsb2NhbCwgbm8gZnVydGhlciBhY3Rpb24gaXMgbmVlZGVkXG4gICAgICAgIGlmICghY2FsLmV4dGVybmFsKSByZXR1cm4gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgLy8gaWYgdGhlIGNhbGVuZGFyIHNob3VsZCBiZSBsaW5rZWQgdG8gYW4gZXh0ZXJuYWwgc2VydmljZSwgcHJvY2VlZFxuICAgICAgICB0aGlzLmNhbGVuZGFyc1xuICAgICAgICAgIC5saW5rRXh0U2VydmljZSh0aGlzLmNhbGVuZGFyKVxuICAgICAgICAgIC8vIGlmIHRoZSBsaW5rIHdhcyBzdWNjZXNzZnVsLCBsZXQgdGhlIHVzZXIgcGljayBhbiBleHRlcm5hbCBjYWxlbmRhciB0byBzZXRcbiAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmNhbGVuZGFycy5jaG9vc2VBbmRTZXRFeHRlcm5hbENhbGVuZGFyKHRoaXMuY2FsZW5kYXIpKVxuICAgICAgICAgIC50aGVuKGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAvLyBpZiBhIGNhbGVuZGFyIHdhc24ndCBzZXQsIGl0IGNhbiBiZSBkb25lIGxhdGVyIG9uXG4gICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICAgICAgICAvLyBpZiBhbiBleHRlcm5hbCBjYWxlbmRhciB3YXMgc2V0LCB1cGRhdGUgdGhlIGNhbGVuZGFyXG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyLmxvYWQocmVzKTtcbiAgICAgICAgICAgIC8vIHJ1biBhIGZpcnN0IHN5bmMgZm9yIHRoZSBsaW5rZWQgZXh0ZXJuYWwgY2FsZW5kYXJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRklSU1RfU1lOQ19NQVlfVEFLRV9BX1dISUxFJykpO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgICAgICAgICAgLnN5bmNDYWxlbmRhcih0aGlzLmNhbGVuZGFyKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkZJUlNUX1NZTkNfQ09NUExFVEVEJykpXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJykpXG4gICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxlbmRhciBpcyByZWFkeSB0byBnb1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKTtcbiAgICAgICAgICAgIC8vIHRoZSBvcGVyYXRpb24gY2FuIGJlIHJldHJpZWQgbGF0ZXIgb247IGNsb3NlIHRoZSBtb2RhbCBhbnl3YXlcbiAgICAgICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcygpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHBvc3NpYmxlIHNjb3BlcyBvZiB0aGUgY2FsZW5kYXIuXG4gKi9cbmV4cG9ydCBlbnVtIENhbGVuZGFyU2NvcGVzIHtcbiAgU0hBUkVEID0gJ3NoYXJlZCcsIC8vIHRlYW1JZFxuICBQUklWQVRFID0gJ3ByaXZhdGUnIC8vIHVzZXJJZFxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImlkZWFUb29sYmFyXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCIhY2FuQ2hhbmdlU2NvcGUoKVwiIFt0aXRsZV09XCJ0Ll8oJ0NPTU1PTi5DTE9TRScpXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJjYW5DaGFuZ2VTY29wZSgpXCIgKGNsaWNrKT1cInJlc2V0U2NvcGUoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LWJhY2tcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFzY29wZUlzU2V0KClcIj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkFERF9BX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY2FsZW5kYXIudXNlcklkXCI+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5QRVJTT05BTF9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNhbGVuZGFyLnRlYW1JZFwiPlxuICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRFQU1fQ0FMRU5EQVInIHwgdHJhbnNsYXRlOiB7IHRlYW06IHRjLmdldCgndGVhbScpLm5hbWUgfSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvaW9uLXRpdGxlPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8IS0tIDFzdCBTVEVQIC0tPlxuICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tcGFkZGluZyBjaG9pY2VHcmlkXCIgKm5nSWY9XCIhc2NvcGVJc1NldCgpXCI+XG4gICAgPGlvbi1yb3c+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8aDE+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5DUkVBVEVfUFJJVkFURV9PUl9URUFNJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNlwiPlxuICAgICAgICA8aW9uLWNhcmQgW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cImNhbGVuZGFyLnVzZXJJZCA9IG1lbWJlcnNoaXAudXNlcklkXCI+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZXJzb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBFUlNPTkFMX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBFUlNPTkFMX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMTJcIiBbc2l6ZVNtXT1cIjZcIj5cbiAgICAgICAgPGlvbi1jYXJkIFtidXR0b25dPVwidHJ1ZVwiIChjbGljayk9XCJjYWxlbmRhci50ZWFtSWQgPSBtZW1iZXJzaGlwLnRlYW1JZFwiPlxuICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGVvcGxlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8aDE+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5URUFNX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRFQU1fQ0FMRU5EQVJfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cbiAgPCEtLSAybmQgU1RFUCAtLT5cbiAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLXBhZGRpbmcgY2hvaWNlR3JpZFwiICpuZ0lmPVwic2NvcGVJc1NldCgpXCI+XG4gICAgPGlvbi1yb3c+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8aDE+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5XSElDSF9FWFRFUk5BTF9TRVJWSUNFX1RPX0xJTksnIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5XSElDSF9FWFRFUk5BTF9TRVJWSUNFX1RPX0xJTktfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiICpuZ0lmPVwiIW9ubHlFeHRlcm5hbENhbGVuZGFyc1wiPlxuICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJzdGVwMlwiIFtidXR0b25dPVwidHJ1ZVwiIChjbGljayk9XCJzYXZlTmV3Q2FsZW5kYXIoKVwiPlxuICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVtb3ZlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8aDE+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ET05UX0xJTksnIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRE9OVF9MSU5LX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgKm5nRm9yPVwibGV0IHMgb2YgU09VUkNFU1wiIFtzaXplXT1cIjEyXCI+XG4gICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInN0ZXAyXCIgW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cInNhdmVOZXdDYWxlbmRhcihzKVwiPlxuICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJjYWxlbmRhcnMuZ2V0U2VydmljZUljb24ocylcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxoMT5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5MSU5LX1RPJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlNFUlZJQ0VTLicgKyBzIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5MSU5LX1RPX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLWdyaWQ+XG48L2lvbi1jb250ZW50PlxuIl19
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { IDEACalendarComponent } from './calendar.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./calendars.service";
|
|
5
|
+
import * as i2 from "@ionic/angular";
|
|
6
|
+
import * as i3 from "@idea-ionic/common";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class IDEACalendarItemComponent {
|
|
9
|
+
constructor(calendars, alertCtrl, modalCtrl, message, loading, t) {
|
|
10
|
+
this.calendars = calendars;
|
|
11
|
+
this.alertCtrl = alertCtrl;
|
|
12
|
+
this.modalCtrl = modalCtrl;
|
|
13
|
+
this.message = message;
|
|
14
|
+
this.loading = loading;
|
|
15
|
+
this.t = t;
|
|
16
|
+
/**
|
|
17
|
+
* Report to parent components a change.
|
|
18
|
+
*/
|
|
19
|
+
this.somethingChanged = new EventEmitter();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Open the modal to manage the calendar.
|
|
23
|
+
*/
|
|
24
|
+
manageCalendar() {
|
|
25
|
+
if (this.disabled)
|
|
26
|
+
return;
|
|
27
|
+
this.modalCtrl
|
|
28
|
+
.create({
|
|
29
|
+
component: IDEACalendarComponent,
|
|
30
|
+
componentProps: {
|
|
31
|
+
calendar: this.calendar,
|
|
32
|
+
advancedPermissions: this.advancedPermissions,
|
|
33
|
+
hideColor: this.hideColor
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
.then(modal => {
|
|
37
|
+
modal.onDidDismiss().then(res => {
|
|
38
|
+
const cal = res.data;
|
|
39
|
+
// nothing changed
|
|
40
|
+
if (cal === undefined)
|
|
41
|
+
return;
|
|
42
|
+
// the calendar was deleted
|
|
43
|
+
else if (cal === null)
|
|
44
|
+
this.calendar = null;
|
|
45
|
+
// the calendar was updated
|
|
46
|
+
else
|
|
47
|
+
this.calendar.load(cal);
|
|
48
|
+
// report changes to parent components
|
|
49
|
+
this.somethingChanged.emit();
|
|
50
|
+
});
|
|
51
|
+
modal.present();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Continue the auth flow to link an external service and set an external calendar;
|
|
56
|
+
* otherwise, the calendar can be deleted.
|
|
57
|
+
*/
|
|
58
|
+
linkExtCalendarOrDelete() {
|
|
59
|
+
if (this.disabled)
|
|
60
|
+
return;
|
|
61
|
+
// let the user pick an external calendar, in case the external service is linked
|
|
62
|
+
this.calendars
|
|
63
|
+
.chooseAndSetExternalCalendar(this.calendar)
|
|
64
|
+
.then(async (cal) => {
|
|
65
|
+
if (!cal)
|
|
66
|
+
return new Error('NO_EXTERNAL_CALENDAR_CHOSEN');
|
|
67
|
+
this.calendar.load(cal);
|
|
68
|
+
this.message.success('IDEA_AGENDA.CALENDARS.CALENDAR_LINKED');
|
|
69
|
+
// run a first sync for the linked external calendar
|
|
70
|
+
await this.loading.show(this.t._('IDEA_AGENDA.CALENDARS.FIRST_SYNC_MAY_TAKE_A_WHILE'));
|
|
71
|
+
this.calendars
|
|
72
|
+
.syncCalendar(this.calendar)
|
|
73
|
+
.then(() => this.message.success('IDEA_AGENDA.CALENDARS.FIRST_SYNC_COMPLETED'))
|
|
74
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
75
|
+
.finally(() => {
|
|
76
|
+
this.loading.hide();
|
|
77
|
+
// report changes to parent components
|
|
78
|
+
this.somethingChanged.emit();
|
|
79
|
+
});
|
|
80
|
+
})
|
|
81
|
+
.catch(() => {
|
|
82
|
+
// the external service isn't linked yet (we don't have a token): link or delete
|
|
83
|
+
this.alertCtrl
|
|
84
|
+
.create({
|
|
85
|
+
header: this.t._('IDEA_AGENDA.CALENDARS.CALENDAR_NOT_YET_LINKED'),
|
|
86
|
+
message: this.t._('IDEA_AGENDA.CALENDARS.DO_YOU_WANT_PROCEED_LINKING_OR_DELETE'),
|
|
87
|
+
buttons: [
|
|
88
|
+
{
|
|
89
|
+
text: this.t._('COMMON.DELETE'),
|
|
90
|
+
handler: async () => {
|
|
91
|
+
// request the calendar deletion
|
|
92
|
+
await this.loading.show();
|
|
93
|
+
this.calendars
|
|
94
|
+
.deleteCalendar(this.calendar)
|
|
95
|
+
.then(() => {
|
|
96
|
+
this.message.success('COMMON.OPERATION_COMPLETED');
|
|
97
|
+
// report changes to parent components
|
|
98
|
+
this.somethingChanged.emit();
|
|
99
|
+
})
|
|
100
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
101
|
+
.finally(() => this.loading.hide());
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
text: this.t._('IDEA_AGENDA.CALENDARS.LINK'),
|
|
106
|
+
handler: () =>
|
|
107
|
+
// try again to link the service
|
|
108
|
+
this.calendars
|
|
109
|
+
.linkExtService(this.calendar)
|
|
110
|
+
// if the service was successfully linked, go recursive to choose and set the external calendar
|
|
111
|
+
.then(() => this.linkExtCalendarOrDelete())
|
|
112
|
+
.catch(() => this.message.error('COMMON.OPERATION_FAILED'))
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
})
|
|
116
|
+
.then(alert => alert.present());
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
IDEACalendarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarItemComponent, deps: [{ token: i1.IDEACalendarsService }, { token: i2.AlertController }, { token: i2.ModalController }, { token: i3.IDEAMessageService }, { token: i3.IDEALoadingService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
121
|
+
IDEACalendarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarItemComponent, selector: "idea-calendar-item", inputs: { calendar: "calendar", disabled: "disabled", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, outputs: { somethingChanged: "somethingChanged" }, ngImport: i0, template: "<ion-item\n class=\"calendarItem\"\n *ngIf=\"calendar\"\n [button]=\"!disabled\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.EDIT_CALENDAR')\"\n (click)=\"calendar.external && !calendar.external.calendarId ? linkExtCalendarOrDelete() : manageCalendar()\"\n>\n <ion-avatar\n slot=\"start\"\n class=\"colorCircle\"\n *ngIf=\"!hideColor\"\n [style.background-color]=\"calendar.color\"\n ></ion-avatar>\n <ion-label>\n {{ calendar.name }}\n <p>\n <ion-text color=\"danger\" *ngIf=\"calendar.external && !calendar.external.calendarId\">\n {{ 'IDEA_AGENDA.CALENDARS.TAP_TO_CONFIGURE' | translate }}\n </ion-text>\n {{ calendar.description }}\n </p>\n </ion-label>\n <ion-icon\n slot=\"end\"\n color=\"danger\"\n name=\"flash-off\"\n *ngIf=\"calendar.external && !calendar.external.calendarId\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.CALENDAR_NOT_YET_LINKED_HINT')\"\n ></ion-icon>\n <ion-icon\n slot=\"end\"\n *ngIf=\"calendar.external?.service\"\n [name]=\"calendars.getServiceIcon(calendar.external.service)\"\n [title]=\"\n t._('IDEA_AGENDA.CALENDARS.LINKED_TO') + ' ' + t._('IDEA_AGENDA.CALENDARS.SERVICES.' + calendar.external.service)\n \"\n ></ion-icon>\n</ion-item>\n", styles: [".calendarItem ion-avatar.colorCircle{width:20px;height:20px;background-color:#555}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonAvatar, selector: "ion-avatar" }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3.IDEATranslatePipe } });
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarItemComponent, decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{ selector: 'idea-calendar-item', template: "<ion-item\n class=\"calendarItem\"\n *ngIf=\"calendar\"\n [button]=\"!disabled\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.EDIT_CALENDAR')\"\n (click)=\"calendar.external && !calendar.external.calendarId ? linkExtCalendarOrDelete() : manageCalendar()\"\n>\n <ion-avatar\n slot=\"start\"\n class=\"colorCircle\"\n *ngIf=\"!hideColor\"\n [style.background-color]=\"calendar.color\"\n ></ion-avatar>\n <ion-label>\n {{ calendar.name }}\n <p>\n <ion-text color=\"danger\" *ngIf=\"calendar.external && !calendar.external.calendarId\">\n {{ 'IDEA_AGENDA.CALENDARS.TAP_TO_CONFIGURE' | translate }}\n </ion-text>\n {{ calendar.description }}\n </p>\n </ion-label>\n <ion-icon\n slot=\"end\"\n color=\"danger\"\n name=\"flash-off\"\n *ngIf=\"calendar.external && !calendar.external.calendarId\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.CALENDAR_NOT_YET_LINKED_HINT')\"\n ></ion-icon>\n <ion-icon\n slot=\"end\"\n *ngIf=\"calendar.external?.service\"\n [name]=\"calendars.getServiceIcon(calendar.external.service)\"\n [title]=\"\n t._('IDEA_AGENDA.CALENDARS.LINKED_TO') + ' ' + t._('IDEA_AGENDA.CALENDARS.SERVICES.' + calendar.external.service)\n \"\n ></ion-icon>\n</ion-item>\n", styles: [".calendarItem ion-avatar.colorCircle{width:20px;height:20px;background-color:#555}\n"] }]
|
|
125
|
+
}], ctorParameters: function () { return [{ type: i1.IDEACalendarsService }, { type: i2.AlertController }, { type: i2.ModalController }, { type: i3.IDEAMessageService }, { type: i3.IDEALoadingService }, { type: i3.IDEATranslationsService }]; }, propDecorators: { calendar: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], disabled: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], advancedPermissions: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], hideColor: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], somethingChanged: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}] } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJJdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9jYWxlbmRhckl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2NhbGVuZGFySXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFPN0QsTUFBTSxPQUFPLHlCQUF5QjtJQXNCcEMsWUFDUyxTQUErQixFQUMvQixTQUEwQixFQUMxQixTQUEwQixFQUMxQixPQUEyQixFQUMzQixPQUEyQixFQUMzQixDQUEwQjtRQUwxQixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQVhuQzs7V0FFRztRQUNjLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7SUFTOUQsQ0FBQztJQUVKOztPQUVHO0lBQ0ksY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsU0FBUzthQUNYLE1BQU0sQ0FBQztZQUNOLFNBQVMsRUFBRSxxQkFBcUI7WUFDaEMsY0FBYyxFQUFFO2dCQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtnQkFDN0MsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQzFCO1NB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IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQUxvYWRpbmdTZXJ2aWNlLCBJREVBTWVzc2FnZVNlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcbmltcG9ydCB7IElERUFDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWxlbmRhci1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICdjYWxlbmRhckl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXJJdGVtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUNhbGVuZGFySXRlbUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgY2FsZW5kYXIgdG8gc2hvdy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjYWxlbmRhcjogQ2FsZW5kYXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGFkdmFuY2VkIHBlcm1pc3Npb25zIChiYXNlZCBvbiB0aGUgbWVtYmVyc2hpcHMpIG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhZHZhbmNlZFBlcm1pc3Npb25zOiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY2FsZW5kYXIgY29sb3IgaXMgYW4gaW1wb3J0YW50IGRldGFpbCBvciBpdCBzaG91bGRuJ3QgYmUgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNvbG9yOiBib29sZWFuO1xuICAvKipcbiAgICogUmVwb3J0IHRvIHBhcmVudCBjb21wb25lbnRzIGEgY2hhbmdlLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzb21ldGhpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhcj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FsZW5kYXJzOiBJREVBQ2FsZW5kYXJzU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgcHVibGljIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBtb2RhbCB0byBtYW5hZ2UgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIG1hbmFnZUNhbGVuZGFyKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5tb2RhbEN0cmxcbiAgICAgIC5jcmVhdGUoe1xuICAgICAgICBjb21wb25lbnQ6IElERUFDYWxlbmRhckNvbXBvbmVudCxcbiAgICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgICBjYWxlbmRhcjogdGhpcy5jYWxlbmRhcixcbiAgICAgICAgICBhZHZhbmNlZFBlcm1pc3Npb25zOiB0aGlzLmFkdmFuY2VkUGVybWlzc2lvbnMsXG4gICAgICAgICAgaGlkZUNvbG9yOiB0aGlzLmhpZGVDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4obW9kYWwgPT4ge1xuICAgICAgICBtb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgY29uc3QgY2FsID0gcmVzLmRhdGE7XG4gICAgICAgICAgLy8gbm90aGluZyBjaGFuZ2VkXG4gICAgICAgICAgaWYgKGNhbCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgICAgLy8gdGhlIGNhbGVuZGFyIHdhcyBkZWxldGVkXG4gICAgICAgICAgZWxzZSBpZiAoY2FsID09PSBudWxsKSB0aGlzLmNhbGVuZGFyID0gbnVsbDtcbiAgICAgICAgICAvLyB0aGUgY2FsZW5kYXIgd2FzIHVwZGF0ZWRcbiAgICAgICAgICBlbHNlIHRoaXMuY2FsZW5kYXIubG9hZChjYWwpO1xuICAgICAgICAgIC8vIHJlcG9ydCBjaGFuZ2VzIHRvIHBhcmVudCBjb21wb25lbnRzXG4gICAgICAgICAgdGhpcy5zb21ldGhpbmdDaGFuZ2VkLmVtaXQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1vZGFsLnByZXNlbnQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRpbnVlIHRoZSBhdXRoIGZsb3cgdG8gbGluayBhbiBleHRlcm5hbCBzZXJ2aWNlIGFuZCBzZXQgYW4gZXh0ZXJuYWwgY2FsZW5kYXI7XG4gICAqIG90aGVyd2lzZSwgdGhlIGNhbGVuZGFyIGNhbiBiZSBkZWxldGVkLlxuICAgKi9cbiAgcHVibGljIGxpbmtFeHRDYWxlbmRhck9yRGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgLy8gbGV0IHRoZSB1c2VyIHBpY2sgYW4gZXh0ZXJuYWwgY2FsZW5kYXIsIGluIGNhc2UgdGhlIGV4dGVybmFsIHNlcnZpY2UgaXMgbGlua2VkXG4gICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgIC5jaG9vc2VBbmRTZXRFeHRlcm5hbENhbGVuZGFyKHRoaXMuY2FsZW5kYXIpXG4gICAgICAudGhlbihhc3luYyBjYWwgPT4ge1xuICAgICAgICBpZiAoIWNhbCkgcmV0dXJuIG5ldyBFcnJvcignTk9fRVhURVJOQUxfQ0FMRU5EQVJfQ0hPU0VOJyk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChjYWwpO1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX0xJTktFRCcpO1xuICAgICAgICAvLyBydW4gYSBmaXJzdCBzeW5jIGZvciB0aGUgbGlua2VkIGV4dGVybmFsIGNhbGVuZGFyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRklSU1RfU1lOQ19NQVlfVEFLRV9BX1dISUxFJykpO1xuICAgICAgICB0aGlzLmNhbGVuZGFyc1xuICAgICAgICAgIC5zeW5jQ2FsZW5kYXIodGhpcy5jYWxlbmRhcilcbiAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkZJUlNUX1NZTkNfQ09NUExFVEVEJykpXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcuaGlkZSgpO1xuICAgICAgICAgICAgLy8gcmVwb3J0IGNoYW5nZXMgdG8gcGFyZW50IGNvbXBvbmVudHNcbiAgICAgICAgICAgIHRoaXMuc29tZXRoaW5nQ2hhbmdlZC5lbWl0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gdGhlIGV4dGVybmFsIHNlcnZpY2UgaXNuJ3QgbGlua2VkIHlldCAod2UgZG9uJ3QgaGF2ZSBhIHRva2VuKTogbGluayBvciBkZWxldGVcbiAgICAgICAgdGhpcy5hbGVydEN0cmxcbiAgICAgICAgICAuY3JlYXRlKHtcbiAgICAgICAgICAgIGhlYWRlcjogdGhpcy50Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5DQUxFTkRBUl9OT1RfWUVUX0xJTktFRCcpLFxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ET19ZT1VfV0FOVF9QUk9DRUVEX0xJTktJTkdfT1JfREVMRVRFJyksXG4gICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnQuXygnQ09NTU9OLkRFTEVURScpLFxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgdGhlIGNhbGVuZGFyIGRlbGV0aW9uXG4gICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZUNhbGVuZGFyKHRoaXMuY2FsZW5kYXIpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnQ09NTU9OLk9QRVJBVElPTl9DT01QTEVURUQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAvLyByZXBvcnQgY2hhbmdlcyB0byBwYXJlbnQgY29tcG9uZW50c1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29tZXRoaW5nQ2hhbmdlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJykpXG4gICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTElOSycpLFxuICAgICAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+XG4gICAgICAgICAgICAgICAgICAvLyB0cnkgYWdhaW4gdG8gbGluayB0aGUgc2VydmljZVxuICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgICAgICAgICAgICAgICAgLmxpbmtFeHRTZXJ2aWNlKHRoaXMuY2FsZW5kYXIpXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzZXJ2aWNlIHdhcyBzdWNjZXNzZnVsbHkgbGlua2VkLCBnbyByZWN1cnNpdmUgdG8gY2hvb3NlIGFuZCBzZXQgdGhlIGV4dGVybmFsIGNhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMubGlua0V4dENhbGVuZGFyT3JEZWxldGUoKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oYWxlcnQgPT4gYWxlcnQucHJlc2VudCgpKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8aW9uLWl0ZW1cbiAgY2xhc3M9XCJjYWxlbmRhckl0ZW1cIlxuICAqbmdJZj1cImNhbGVuZGFyXCJcbiAgW2J1dHRvbl09XCIhZGlzYWJsZWRcIlxuICBbdGl0bGVdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRURJVF9DQUxFTkRBUicpXCJcbiAgKGNsaWNrKT1cImNhbGVuZGFyLmV4dGVybmFsICYmICFjYWxlbmRhci5leHRlcm5hbC5jYWxlbmRhcklkID8gbGlua0V4dENhbGVuZGFyT3JEZWxldGUoKSA6IG1hbmFnZUNhbGVuZGFyKClcIlxuPlxuICA8aW9uLWF2YXRhclxuICAgIHNsb3Q9XCJzdGFydFwiXG4gICAgY2xhc3M9XCJjb2xvckNpcmNsZVwiXG4gICAgKm5nSWY9XCIhaGlkZUNvbG9yXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjYWxlbmRhci5jb2xvclwiXG4gID48L2lvbi1hdmF0YXI+XG4gIDxpb24tbGFiZWw+XG4gICAge3sgY2FsZW5kYXIubmFtZSB9fVxuICAgIDxwPlxuICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCIgKm5nSWY9XCJjYWxlbmRhci5leHRlcm5hbCAmJiAhY2FsZW5kYXIuZXh0ZXJuYWwuY2FsZW5kYXJJZFwiPlxuICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRBUF9UT19DT05GSUdVUkUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2lvbi10ZXh0PlxuICAgICAge3sgY2FsZW5kYXIuZGVzY3JpcHRpb24gfX1cbiAgICA8L3A+XG4gIDwvaW9uLWxhYmVsPlxuICA8aW9uLWljb25cbiAgICBzbG90PVwiZW5kXCJcbiAgICBjb2xvcj1cImRhbmdlclwiXG4gICAgbmFtZT1cImZsYXNoLW9mZlwiXG4gICAgKm5nSWY9XCJjYWxlbmRhci5leHRlcm5hbCAmJiAhY2FsZW5kYXIuZXh0ZXJuYWwuY2FsZW5kYXJJZFwiXG4gICAgW3RpdGxlXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX05PVF9ZRVRfTElOS0VEX0hJTlQnKVwiXG4gID48L2lvbi1pY29uPlxuICA8aW9uLWljb25cbiAgICBzbG90PVwiZW5kXCJcbiAgICAqbmdJZj1cImNhbGVuZGFyLmV4dGVybmFsPy5zZXJ2aWNlXCJcbiAgICBbbmFtZV09XCJjYWxlbmRhcnMuZ2V0U2VydmljZUljb24oY2FsZW5kYXIuZXh0ZXJuYWwuc2VydmljZSlcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgIHQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkxJTktFRF9UTycpICsgJyAnICsgdC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuU0VSVklDRVMuJyArIGNhbGVuZGFyLmV4dGVybmFsLnNlcnZpY2UpXG4gICAgXCJcbiAgPjwvaW9uLWljb24+XG48L2lvbi1pdGVtPlxuIl19
|