tin-spa 2.13.15 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bundles/tin-spa.umd.js +6694 -0
- package/bundles/tin-spa.umd.js.map +1 -0
- package/bundles/tin-spa.umd.min.js +16 -0
- package/bundles/tin-spa.umd.min.js.map +1 -0
- package/esm2015/lib/classes/Classes.js +254 -0
- package/esm2015/lib/classes/TinCore.js +137 -0
- package/esm2015/lib/components/activity/activity.component.js +92 -0
- package/esm2015/lib/components/attach/attach.component.js +181 -0
- package/esm2015/lib/components/change-password/change-password.component.js +179 -0
- package/esm2015/lib/components/check/check.component.js +69 -0
- package/esm2015/lib/components/chips/chips.component.js +107 -0
- package/esm2015/lib/components/create-account/create-account.component.js +160 -0
- package/esm2015/lib/components/date/date.component.js +66 -0
- package/esm2015/lib/components/datetime/datetime.component.js +57 -0
- package/esm2015/lib/components/filter/filter.component.js +64 -0
- package/esm2015/lib/components/html/html.component.js +102 -0
- package/esm2015/lib/components/label/label.component.js +117 -0
- package/esm2015/lib/components/loader/loader.component.js +53 -0
- package/esm2015/lib/components/login/login.component.js +240 -0
- package/esm2015/lib/components/logs/logs.component.js +195 -0
- package/esm2015/lib/components/message/messageDialog.component.js +142 -0
- package/esm2015/lib/components/money/currency-input-mask.directive.js +187 -0
- package/esm2015/lib/components/money/currency-input-mask.module.js +30 -0
- package/esm2015/lib/components/money/money.component.js +152 -0
- package/esm2015/lib/components/nav-menu/nav-menu.component.js +204 -0
- package/esm2015/lib/components/option/option.component.js +129 -0
- package/esm2015/lib/components/profile/profile.component.js +198 -0
- package/esm2015/lib/components/recover-account/recover-account.component.js +74 -0
- package/esm2015/lib/components/roles/addRoleDialog.component.js +132 -0
- package/esm2015/lib/components/roles/roles.component.js +211 -0
- package/esm2015/lib/components/select/select.component.js +133 -0
- package/esm2015/lib/components/settings/settings.component.js +118 -0
- package/esm2015/lib/components/signup/signup.component.js +139 -0
- package/esm2015/lib/components/steps/steps.component.js +114 -0
- package/esm2015/lib/components/table/table.component.js +375 -0
- package/esm2015/lib/components/text/text.component.js +240 -0
- package/esm2015/lib/components/tiles/tiles.component.js +95 -0
- package/esm2015/lib/components/timeout/timeout.component.js +133 -0
- package/esm2015/lib/components/tin-spa.component.js +26 -0
- package/esm2015/lib/components/users/users.component.js +373 -0
- package/esm2015/lib/components/viewer/viewer.component.js +92 -0
- package/esm2015/lib/components/viewer/viewerDialog.component.js +131 -0
- package/esm2015/lib/dnd.directive.js +56 -0
- package/esm2015/lib/modules/spa-admin.module.js +81 -0
- package/esm2015/lib/modules/spa-index.module.js +58 -0
- package/esm2015/lib/modules/spa-mat.module.js +68 -0
- package/esm2015/lib/modules/spa-user.module.js +55 -0
- package/esm2015/lib/services/auth.service.js +142 -0
- package/esm2015/lib/services/data.service.js +111 -0
- package/esm2015/lib/services/export.service.js +29 -0
- package/esm2015/lib/services/http.service.js +79 -0
- package/esm2015/lib/services/loader-interceptor.service.js +77 -0
- package/esm2015/lib/services/loader.service.js +17 -0
- package/esm2015/lib/services/log.service.js +76 -0
- package/esm2015/lib/services/message.service.js +52 -0
- package/esm2015/lib/services/storage.service.js +43 -0
- package/esm2015/lib/services/tin-spa.service.js +14 -0
- package/esm2015/lib/tin-spa.module.js +156 -0
- package/esm2015/public-api.js +56 -0
- package/esm2015/tin-spa.js +5 -0
- package/esm5/lib/classes/Classes.js +313 -0
- package/esm5/lib/classes/TinCore.js +164 -0
- package/esm5/lib/components/activity/activity.component.js +94 -0
- package/esm5/lib/components/attach/attach.component.js +195 -0
- package/esm5/lib/components/change-password/change-password.component.js +182 -0
- package/esm5/lib/components/check/check.component.js +71 -0
- package/esm5/lib/components/chips/chips.component.js +110 -0
- package/esm5/lib/components/create-account/create-account.component.js +163 -0
- package/esm5/lib/components/date/date.component.js +68 -0
- package/esm5/lib/components/datetime/datetime.component.js +59 -0
- package/esm5/lib/components/filter/filter.component.js +66 -0
- package/esm5/lib/components/html/html.component.js +104 -0
- package/esm5/lib/components/label/label.component.js +119 -0
- package/esm5/lib/components/loader/loader.component.js +56 -0
- package/esm5/lib/components/login/login.component.js +244 -0
- package/esm5/lib/components/logs/logs.component.js +198 -0
- package/esm5/lib/components/message/messageDialog.component.js +144 -0
- package/esm5/lib/components/money/currency-input-mask.directive.js +193 -0
- package/esm5/lib/components/money/currency-input-mask.module.js +34 -0
- package/esm5/lib/components/money/money.component.js +154 -0
- package/esm5/lib/components/nav-menu/nav-menu.component.js +207 -0
- package/esm5/lib/components/option/option.component.js +131 -0
- package/esm5/lib/components/profile/profile.component.js +203 -0
- package/esm5/lib/components/recover-account/recover-account.component.js +77 -0
- package/esm5/lib/components/roles/addRoleDialog.component.js +135 -0
- package/esm5/lib/components/roles/roles.component.js +218 -0
- package/esm5/lib/components/select/select.component.js +136 -0
- package/esm5/lib/components/settings/settings.component.js +122 -0
- package/esm5/lib/components/signup/signup.component.js +142 -0
- package/esm5/lib/components/steps/steps.component.js +128 -0
- package/esm5/lib/components/table/table.component.js +378 -0
- package/esm5/lib/components/text/text.component.js +244 -0
- package/esm5/lib/components/tiles/tiles.component.js +97 -0
- package/esm5/lib/components/timeout/timeout.component.js +136 -0
- package/esm5/lib/components/tin-spa.component.js +25 -0
- package/esm5/lib/components/users/users.component.js +380 -0
- package/esm5/lib/components/viewer/viewer.component.js +94 -0
- package/esm5/lib/components/viewer/viewerDialog.component.js +133 -0
- package/esm5/lib/dnd.directive.js +58 -0
- package/esm5/lib/modules/spa-admin.module.js +85 -0
- package/esm5/lib/modules/spa-index.module.js +62 -0
- package/esm5/lib/modules/spa-mat.module.js +72 -0
- package/esm5/lib/modules/spa-user.module.js +59 -0
- package/esm5/lib/services/auth.service.js +145 -0
- package/esm5/lib/services/data.service.js +113 -0
- package/esm5/lib/services/export.service.js +31 -0
- package/esm5/lib/services/http.service.js +81 -0
- package/esm5/lib/services/loader-interceptor.service.js +80 -0
- package/esm5/lib/services/loader.service.js +19 -0
- package/esm5/lib/services/log.service.js +114 -0
- package/esm5/lib/services/message.service.js +54 -0
- package/esm5/lib/services/storage.service.js +76 -0
- package/esm5/lib/services/tin-spa.service.js +17 -0
- package/esm5/lib/tin-spa.module.js +160 -0
- package/esm5/public-api.js +56 -0
- package/esm5/tin-spa.js +5 -0
- package/fesm2015/tin-spa.js +6204 -0
- package/fesm2015/tin-spa.js.map +1 -0
- package/fesm5/tin-spa.js +6453 -0
- package/fesm5/tin-spa.js.map +1 -0
- package/lib/classes/Classes.d.ts +228 -375
- package/lib/classes/TinCore.d.ts +11 -43
- package/lib/components/activity/activity.component.d.ts +2 -2
- package/lib/components/attach/attach.component.d.ts +27 -15
- package/lib/{pages → components}/change-password/change-password.component.d.ts +4 -4
- package/lib/components/check/check.component.d.ts +3 -8
- package/lib/components/chips/chips.component.d.ts +2 -2
- package/lib/{pages → components}/create-account/create-account.component.d.ts +4 -8
- package/lib/components/date/date.component.d.ts +12 -24
- package/lib/components/datetime/datetime.component.d.ts +2 -6
- package/lib/components/filter/filter.component.d.ts +2 -7
- package/lib/components/html/html.component.d.ts +10 -11
- package/lib/components/label/label.component.d.ts +2 -4
- package/lib/components/loader/loader.component.d.ts +2 -2
- package/lib/components/login/login.component.d.ts +32 -0
- package/lib/components/logs/logs.component.d.ts +18 -0
- package/lib/components/message/messageDialog.component.d.ts +2 -2
- package/lib/components/money/currency-input-mask.directive.d.ts +2 -2
- package/lib/components/money/currency-input-mask.module.d.ts +2 -3
- package/lib/components/money/money.component.d.ts +3 -13
- package/lib/components/nav-menu/nav-menu.component.d.ts +4 -22
- package/lib/components/option/option.component.d.ts +3 -14
- package/lib/{pages → components}/profile/profile.component.d.ts +4 -6
- package/lib/{pages → components}/recover-account/recover-account.component.d.ts +3 -3
- package/lib/components/roles/addRoleDialog.component.d.ts +22 -0
- package/lib/components/roles/roles.component.d.ts +30 -0
- package/lib/components/select/select.component.d.ts +20 -20
- package/lib/{pages → components}/settings/settings.component.d.ts +3 -3
- package/lib/{pages → components}/signup/signup.component.d.ts +4 -4
- package/lib/components/steps/steps.component.d.ts +10 -19
- package/lib/components/table/table.component.d.ts +21 -84
- package/lib/components/text/text.component.d.ts +14 -36
- package/lib/components/tiles/tiles.component.d.ts +7 -21
- package/lib/components/timeout/timeout.component.d.ts +24 -0
- package/lib/components/tin-spa.component.d.ts +6 -3
- package/lib/{pages → components}/users/users.component.d.ts +18 -11
- package/lib/components/viewer/viewer.component.d.ts +5 -11
- package/lib/components/viewer/viewerDialog.component.d.ts +4 -6
- package/lib/dnd.directive.d.ts +11 -0
- package/lib/modules/spa-admin.module.d.ts +10 -10
- package/lib/modules/spa-index.module.d.ts +7 -8
- package/lib/modules/spa-mat.module.d.ts +2 -8
- package/lib/modules/spa-user.module.d.ts +6 -6
- package/lib/services/auth.service.d.ts +4 -16
- package/lib/services/data.service.d.ts +38 -0
- package/lib/services/export.service.d.ts +6 -2
- package/lib/services/http.service.d.ts +2 -2
- package/lib/services/loader-interceptor.service.d.ts +3 -4
- package/lib/services/loader.service.d.ts +2 -2
- package/lib/services/log.service.d.ts +3 -3
- package/lib/services/message.service.d.ts +3 -4
- package/lib/services/storage.service.d.ts +2 -2
- package/lib/services/tin-spa.service.d.ts +2 -2
- package/lib/tin-spa.module.d.ts +34 -83
- package/package.json +16 -24
- package/public-api.d.ts +16 -47
- package/esm2020/lib/classes/Classes.mjs +0 -112
- package/esm2020/lib/classes/LibClasses.mjs +0 -180
- package/esm2020/lib/classes/TinCore.mjs +0 -568
- package/esm2020/lib/components/activity/activity.component.mjs +0 -24
- package/esm2020/lib/components/alert/alert.component.mjs +0 -43
- package/esm2020/lib/components/attach/attach.component.mjs +0 -102
- package/esm2020/lib/components/capsules/capsules.component.mjs +0 -63
- package/esm2020/lib/components/cards/cards.component.mjs +0 -103
- package/esm2020/lib/components/check/check.component.mjs +0 -67
- package/esm2020/lib/components/chips/chips.component.mjs +0 -58
- package/esm2020/lib/components/date/date.component.mjs +0 -103
- package/esm2020/lib/components/datetime/datetime.component.mjs +0 -55
- package/esm2020/lib/components/email/email.component.mjs +0 -133
- package/esm2020/lib/components/filter/filter.component.mjs +0 -58
- package/esm2020/lib/components/form/form.component.mjs +0 -296
- package/esm2020/lib/components/html/html.component.mjs +0 -34
- package/esm2020/lib/components/label/label.component.mjs +0 -31
- package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +0 -68
- package/esm2020/lib/components/loader/loader.component.mjs +0 -25
- package/esm2020/lib/components/message/messageDialog.component.mjs +0 -33
- package/esm2020/lib/components/money/currency-input-mask.directive.mjs +0 -185
- package/esm2020/lib/components/money/currency-input-mask.module.mjs +0 -28
- package/esm2020/lib/components/money/money.component.mjs +0 -137
- package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -165
- package/esm2020/lib/components/multi-text/multi-text.component.mjs +0 -208
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +0 -88
- package/esm2020/lib/components/notes/notes.component.mjs +0 -62
- package/esm2020/lib/components/number/number.component.mjs +0 -131
- package/esm2020/lib/components/option/option.component.mjs +0 -92
- package/esm2020/lib/components/page/page.component.mjs +0 -101
- package/esm2020/lib/components/search/search.component.mjs +0 -36
- package/esm2020/lib/components/select/select.component.mjs +0 -75
- package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +0 -87
- package/esm2020/lib/components/select-common/select-common.component.mjs +0 -206
- package/esm2020/lib/components/select-internal/select-internal.component.mjs +0 -75
- package/esm2020/lib/components/select-lite/select-lite.component.mjs +0 -18
- package/esm2020/lib/components/statuses/statuses.component.mjs +0 -44
- package/esm2020/lib/components/steps/steps.component.mjs +0 -112
- package/esm2020/lib/components/suffix/suffix.component.mjs +0 -70
- package/esm2020/lib/components/table/detailsDialog.component.mjs +0 -406
- package/esm2020/lib/components/table/table.component.mjs +0 -440
- package/esm2020/lib/components/table-action/table-action.component.mjs +0 -80
- package/esm2020/lib/components/table-header/table-header.component.mjs +0 -148
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +0 -406
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +0 -441
- package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +0 -404
- package/esm2020/lib/components/table-lite/table-lite.component.mjs +0 -441
- package/esm2020/lib/components/table-row/table-row.component.mjs +0 -93
- package/esm2020/lib/components/tabs/tabs.component.mjs +0 -74
- package/esm2020/lib/components/text/text.component.mjs +0 -255
- package/esm2020/lib/components/tiles/tiles.component.mjs +0 -99
- package/esm2020/lib/components/tin-spa.component.mjs +0 -19
- package/esm2020/lib/components/viewer/viewer.component.mjs +0 -83
- package/esm2020/lib/components/viewer/viewerDialog.component.mjs +0 -95
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +0 -71
- package/esm2020/lib/modules/admin/admin.module.mjs +0 -26
- package/esm2020/lib/modules/index/index-routing.module.mjs +0 -27
- package/esm2020/lib/modules/index/index.module.mjs +0 -26
- package/esm2020/lib/modules/spa-admin.module.mjs +0 -71
- package/esm2020/lib/modules/spa-index.module.mjs +0 -54
- package/esm2020/lib/modules/spa-mat.module.mjs +0 -84
- package/esm2020/lib/modules/spa-user.module.mjs +0 -47
- package/esm2020/lib/modules/user/user-routing.module.mjs +0 -23
- package/esm2020/lib/modules/user/user.module.mjs +0 -26
- package/esm2020/lib/pages/accounts/accountDialog.component.mjs +0 -56
- package/esm2020/lib/pages/accounts/accounts.component.mjs +0 -70
- package/esm2020/lib/pages/app-models/app-models.component.mjs +0 -56
- package/esm2020/lib/pages/approvals/approvals.component.mjs +0 -19
- package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +0 -165
- package/esm2020/lib/pages/bug/bug.component.mjs +0 -14
- package/esm2020/lib/pages/change-password/change-password.component.mjs +0 -92
- package/esm2020/lib/pages/create-account/create-account.component.mjs +0 -110
- package/esm2020/lib/pages/customers/customers.component.mjs +0 -21
- package/esm2020/lib/pages/departments/departments.component.mjs +0 -22
- package/esm2020/lib/pages/employees/employees.component.mjs +0 -20
- package/esm2020/lib/pages/grades/grades.component.mjs +0 -14
- package/esm2020/lib/pages/inventory/inventory.component.mjs +0 -99
- package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +0 -53
- package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +0 -71
- package/esm2020/lib/pages/login/login.component.mjs +0 -166
- package/esm2020/lib/pages/logs/logs.component.mjs +0 -42
- package/esm2020/lib/pages/membership/membership.component.mjs +0 -44
- package/esm2020/lib/pages/notifications/notifications.component.mjs +0 -90
- package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +0 -113
- package/esm2020/lib/pages/plans/plans.component.mjs +0 -44
- package/esm2020/lib/pages/positions/positions.component.mjs +0 -21
- package/esm2020/lib/pages/profile/profile.component.mjs +0 -94
- package/esm2020/lib/pages/recover-account/recover-account.component.mjs +0 -46
- package/esm2020/lib/pages/roles/addRoleDialog.component.mjs +0 -60
- package/esm2020/lib/pages/roles/roles.component.mjs +0 -151
- package/esm2020/lib/pages/settings/settings.component.mjs +0 -54
- package/esm2020/lib/pages/signup/signup.component.mjs +0 -50
- package/esm2020/lib/pages/suppliers/suppliers.component.mjs +0 -22
- package/esm2020/lib/pages/tasks/tasks.component.mjs +0 -86
- package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +0 -228
- package/esm2020/lib/pages/tenants/tenants.component.mjs +0 -47
- package/esm2020/lib/pages/transactions/transactDialog.component.mjs +0 -80
- package/esm2020/lib/pages/transactions/transactions.component.mjs +0 -101
- package/esm2020/lib/pages/users/users.component.mjs +0 -167
- package/esm2020/lib/pages/welcome/welcome.component.mjs +0 -86
- package/esm2020/lib/pipes/camelToWords.pipe.mjs +0 -17
- package/esm2020/lib/select-context.directive.mjs +0 -23
- package/esm2020/lib/services/auth.service.mjs +0 -175
- package/esm2020/lib/services/button.service.mjs +0 -162
- package/esm2020/lib/services/condition.service.mjs +0 -32
- package/esm2020/lib/services/csv.service.mjs +0 -49
- package/esm2020/lib/services/datalib.service.mjs +0 -860
- package/esm2020/lib/services/dialog.service.mjs +0 -125
- package/esm2020/lib/services/export.service.mjs +0 -16
- package/esm2020/lib/services/http.service.mjs +0 -79
- package/esm2020/lib/services/loader-interceptor.service.mjs +0 -86
- package/esm2020/lib/services/loader.service.mjs +0 -17
- package/esm2020/lib/services/log.service.mjs +0 -77
- package/esm2020/lib/services/message.service.mjs +0 -59
- package/esm2020/lib/services/notifications.service.mjs +0 -33
- package/esm2020/lib/services/storage.service.mjs +0 -34
- package/esm2020/lib/services/table-config.service.mjs +0 -78
- package/esm2020/lib/services/tin-spa.service.mjs +0 -14
- package/esm2020/lib/tin-spa.module.mjs +0 -225
- package/esm2020/public-api.mjs +0 -90
- package/esm2020/tin-spa.mjs +0 -5
- package/fesm2015/tin-spa.mjs +0 -11736
- package/fesm2015/tin-spa.mjs.map +0 -1
- package/fesm2020/tin-spa.mjs +0 -11738
- package/fesm2020/tin-spa.mjs.map +0 -1
- package/lib/classes/LibClasses.d.ts +0 -173
- package/lib/components/alert/alert.component.d.ts +0 -15
- package/lib/components/capsules/capsules.component.d.ts +0 -26
- package/lib/components/cards/cards.component.d.ts +0 -39
- package/lib/components/email/email.component.d.ts +0 -40
- package/lib/components/form/form.component.d.ts +0 -47
- package/lib/components/list-dialog/list-dialog.component.d.ts +0 -23
- package/lib/components/multi-select/multi-select.component.d.ts +0 -47
- package/lib/components/multi-text/multi-text.component.d.ts +0 -56
- package/lib/components/notes/notes.component.d.ts +0 -19
- package/lib/components/number/number.component.d.ts +0 -41
- package/lib/components/page/page.component.d.ts +0 -38
- package/lib/components/search/search.component.d.ts +0 -15
- package/lib/components/select-bitwise/select-bitwise.component.d.ts +0 -31
- package/lib/components/select-common/select-common.component.d.ts +0 -53
- package/lib/components/select-internal/select-internal.component.d.ts +0 -23
- package/lib/components/select-lite/select-lite.component.d.ts +0 -8
- package/lib/components/statuses/statuses.component.d.ts +0 -12
- package/lib/components/suffix/suffix.component.d.ts +0 -23
- package/lib/components/table/detailsDialog.component.d.ts +0 -86
- package/lib/components/table-action/table-action.component.d.ts +0 -25
- package/lib/components/table-header/table-header.component.d.ts +0 -46
- package/lib/components/table-internal/detailsDialog-internal.component.d.ts +0 -86
- package/lib/components/table-internal/table-internal.component.d.ts +0 -91
- package/lib/components/table-lite/detailsDialog-lite.component.d.ts +0 -86
- package/lib/components/table-lite/table-lite.component.d.ts +0 -91
- package/lib/components/table-row/table-row.component.d.ts +0 -31
- package/lib/components/tabs/tabs.component.d.ts +0 -32
- package/lib/modules/admin/admin-routing.module.d.ts +0 -7
- package/lib/modules/admin/admin.module.d.ts +0 -9
- package/lib/modules/index/index-routing.module.d.ts +0 -7
- package/lib/modules/index/index.module.d.ts +0 -9
- package/lib/modules/user/user-routing.module.d.ts +0 -7
- package/lib/modules/user/user.module.d.ts +0 -9
- package/lib/pages/accounts/accountDialog.component.d.ts +0 -27
- package/lib/pages/accounts/accounts.component.d.ts +0 -25
- package/lib/pages/app-models/app-models.component.d.ts +0 -15
- package/lib/pages/approvals/approvals.component.d.ts +0 -10
- package/lib/pages/approvals-config/approvals-config.component.d.ts +0 -24
- package/lib/pages/bug/bug.component.d.ts +0 -8
- package/lib/pages/customers/customers.component.d.ts +0 -12
- package/lib/pages/departments/departments.component.d.ts +0 -14
- package/lib/pages/employees/employees.component.d.ts +0 -12
- package/lib/pages/grades/grades.component.d.ts +0 -8
- package/lib/pages/inventory/inventory.component.d.ts +0 -25
- package/lib/pages/inventory/quantityDialog.component.d.ts +0 -23
- package/lib/pages/invitations-table/invitations-table.component.d.ts +0 -19
- package/lib/pages/login/login.component.d.ts +0 -46
- package/lib/pages/logs/logs.component.d.ts +0 -14
- package/lib/pages/membership/membership.component.d.ts +0 -13
- package/lib/pages/notifications/notifications.component.d.ts +0 -16
- package/lib/pages/notifications-config/notifications-config.component.d.ts +0 -17
- package/lib/pages/plans/plans.component.d.ts +0 -13
- package/lib/pages/positions/positions.component.d.ts +0 -12
- package/lib/pages/roles/addRoleDialog.component.d.ts +0 -24
- package/lib/pages/roles/roles.component.d.ts +0 -42
- package/lib/pages/suppliers/suppliers.component.d.ts +0 -14
- package/lib/pages/tasks/tasks.component.d.ts +0 -27
- package/lib/pages/tenant-settings/tenant-settings.component.d.ts +0 -47
- package/lib/pages/tenants/tenants.component.d.ts +0 -17
- package/lib/pages/transactions/transactDialog.component.d.ts +0 -26
- package/lib/pages/transactions/transactions.component.d.ts +0 -31
- package/lib/pages/welcome/welcome.component.d.ts +0 -25
- package/lib/pipes/camelToWords.pipe.d.ts +0 -7
- package/lib/select-context.directive.d.ts +0 -10
- package/lib/services/button.service.d.ts +0 -30
- package/lib/services/condition.service.d.ts +0 -10
- package/lib/services/csv.service.d.ts +0 -10
- package/lib/services/datalib.service.d.ts +0 -125
- package/lib/services/dialog.service.d.ts +0 -20
- package/lib/services/notifications.service.d.ts +0 -12
- package/lib/services/table-config.service.d.ts +0 -17
- /package/{index.d.ts → tin-spa.d.ts} +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../services/message.service";
|
|
5
|
-
import * as i2 from "../../services/datalib.service";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "@angular/forms";
|
|
8
|
-
import * as i5 from "@angular/material/button";
|
|
9
|
-
import * as i6 from "@angular/material/icon";
|
|
10
|
-
import * as i7 from "@angular/material/form-field";
|
|
11
|
-
import * as i8 from "@angular/material/select";
|
|
12
|
-
import * as i9 from "@angular/material/core";
|
|
13
|
-
import * as i10 from "@angular/material/tooltip";
|
|
14
|
-
import * as i11 from "../suffix/suffix.component";
|
|
15
|
-
export class MultiSelectComponent {
|
|
16
|
-
constructor(messageService, dataService) {
|
|
17
|
-
this.messageService = messageService;
|
|
18
|
-
this.dataService = dataService;
|
|
19
|
-
this.display = "";
|
|
20
|
-
this.value = "";
|
|
21
|
-
this.valueChange = new EventEmitter();
|
|
22
|
-
this.readonly = false;
|
|
23
|
-
this.required = true;
|
|
24
|
-
this.hint = "";
|
|
25
|
-
this.options = [];
|
|
26
|
-
this.optionDisplay = "name";
|
|
27
|
-
this.optionValue = "value";
|
|
28
|
-
this.copyContent = false;
|
|
29
|
-
this.clearContent = false;
|
|
30
|
-
this.nullable = false;
|
|
31
|
-
this.placeholder = "";
|
|
32
|
-
this.width = "100%";
|
|
33
|
-
this.control = new FormControl([]);
|
|
34
|
-
this.selectedValues = [];
|
|
35
|
-
this.isHovered = false;
|
|
36
|
-
this.hoverChange = new EventEmitter();
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
if (!this.placeholder) {
|
|
40
|
-
this.placeholder = `Select ${this.display}`;
|
|
41
|
-
}
|
|
42
|
-
if (this.loadAction) {
|
|
43
|
-
this.getData(this.loadAction);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.initializeValues();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
ngOnChanges() {
|
|
50
|
-
this.initializeValues();
|
|
51
|
-
}
|
|
52
|
-
initializeValues() {
|
|
53
|
-
if (this.value) {
|
|
54
|
-
const values = this.value.split(';')
|
|
55
|
-
.filter(v => v.trim())
|
|
56
|
-
.map(v => this.options.find(opt => opt[this.optionValue]?.toString() === v)
|
|
57
|
-
? v : null)
|
|
58
|
-
.filter(v => v !== null);
|
|
59
|
-
this.selectedValues = values;
|
|
60
|
-
this.control.setValue(values);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
this.selectedValues = [];
|
|
64
|
-
this.control.setValue([]);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
selectionChange(event) {
|
|
68
|
-
this.selectedValues = event.value || [];
|
|
69
|
-
this.updateValue();
|
|
70
|
-
}
|
|
71
|
-
updateValue() {
|
|
72
|
-
this.value = this.selectedValues.join(';');
|
|
73
|
-
this.valueChange.emit(this.value);
|
|
74
|
-
}
|
|
75
|
-
getOptionDisplay(value) {
|
|
76
|
-
const option = this.options?.find(opt => opt[this.optionValue]?.toString() === value?.toString());
|
|
77
|
-
return option ? option[this.optionDisplay] : value;
|
|
78
|
-
}
|
|
79
|
-
compareWith(v1, v2) {
|
|
80
|
-
return v1?.toString() === v2?.toString();
|
|
81
|
-
}
|
|
82
|
-
clear() {
|
|
83
|
-
this.selectedValues = [];
|
|
84
|
-
this.control.setValue([]);
|
|
85
|
-
this.value = '';
|
|
86
|
-
this.valueChange.emit(this.value);
|
|
87
|
-
}
|
|
88
|
-
copyValues() {
|
|
89
|
-
navigator.clipboard.writeText(this.value).then(() => {
|
|
90
|
-
this.messageService.toast('Copied');
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
onMouseEnter() {
|
|
94
|
-
this.isHovered = true;
|
|
95
|
-
this.hoverChange.emit(true);
|
|
96
|
-
}
|
|
97
|
-
onMouseLeave() {
|
|
98
|
-
this.isHovered = false;
|
|
99
|
-
this.hoverChange.emit(false);
|
|
100
|
-
}
|
|
101
|
-
refresh(event) {
|
|
102
|
-
event.stopPropagation();
|
|
103
|
-
if (!this.loadAction) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
const refreshAction = {
|
|
107
|
-
...this.loadAction,
|
|
108
|
-
forceRefresh: true
|
|
109
|
-
};
|
|
110
|
-
this.getData(refreshAction);
|
|
111
|
-
}
|
|
112
|
-
getData(action) {
|
|
113
|
-
if (!action)
|
|
114
|
-
return;
|
|
115
|
-
this.dataService.CallApi(action).subscribe((apiResponse) => {
|
|
116
|
-
if (apiResponse.success) {
|
|
117
|
-
this.options = apiResponse.data;
|
|
118
|
-
this.initializeValues();
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
MultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i1.MessageService }, { token: i2.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
-
MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MultiSelectComponent, selector: "spa-multi-select", inputs: { display: "display", value: "value", readonly: "readonly", required: "required", hint: "hint", options: "options", optionDisplay: "optionDisplay", optionValue: "optionValue", infoMessage: "infoMessage", copyContent: "copyContent", clearContent: "clearContent", nullable: "nullable", placeholder: "placeholder", width: "width", suffix: "suffix", loadAction: "loadAction" }, outputs: { valueChange: "valueChange", hoverChange: "hoverChange" }, usesOnChanges: true, ngImport: i0, template: "<mat-form-field [ngStyle]=\"{'width':width ?? '100%'}\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [formControl]=\"control\" [required]=\"required\" [disabled]=\"readonly\" multiple [placeholder]=\"placeholder\" [compareWith]=\"compareWith\" (selectionChange)=\"selectionChange($event)\">\r\n <mat-option *ngIf=\"nullable\" [value]=\"null\">None</mat-option>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option[optionValue]\">\r\n {{option[optionDisplay]}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"true\" [(value)]=\"value\">\r\n </spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.SuffixComponent, selector: "spa-suffix", inputs: ["label", "infoMessage", "copyContent", "isHovered", "clearContent", "value"], outputs: ["infoClick", "copyClick", "clearClick", "valueChange"] }] });
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
126
|
-
type: Component,
|
|
127
|
-
args: [{ selector: 'spa-multi-select', template: "<mat-form-field [ngStyle]=\"{'width':width ?? '100%'}\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [formControl]=\"control\" [required]=\"required\" [disabled]=\"readonly\" multiple [placeholder]=\"placeholder\" [compareWith]=\"compareWith\" (selectionChange)=\"selectionChange($event)\">\r\n <mat-option *ngIf=\"nullable\" [value]=\"null\">None</mat-option>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option[optionValue]\">\r\n {{option[optionDisplay]}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"true\" [(value)]=\"value\">\r\n </spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n" }]
|
|
128
|
-
}], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.DataServiceLib }]; }, propDecorators: { display: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], value: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], valueChange: [{
|
|
133
|
-
type: Output
|
|
134
|
-
}], readonly: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], required: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], hint: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], options: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], optionDisplay: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], optionValue: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], infoMessage: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], copyContent: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], clearContent: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}], nullable: [{
|
|
153
|
-
type: Input
|
|
154
|
-
}], placeholder: [{
|
|
155
|
-
type: Input
|
|
156
|
-
}], width: [{
|
|
157
|
-
type: Input
|
|
158
|
-
}], suffix: [{
|
|
159
|
-
type: Input
|
|
160
|
-
}], loadAction: [{
|
|
161
|
-
type: Input
|
|
162
|
-
}], hoverChange: [{
|
|
163
|
-
type: Output
|
|
164
|
-
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVM3QyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLGNBQThCLEVBQVUsV0FBMkI7UUFBbkUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBRTlFLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFHLE1BQU0sQ0FBQztRQUN2QixnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQUV0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBRyxNQUFNLENBQUM7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O2dCQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEE5SFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsZ2hCQ1ZqQyxpcENBaUJBOzJGRFBhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7a0lBTW5CLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkF5RUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uLCBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLW11bHRpLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIpIHsgfVxyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSB2YWx1ZSA9IFwiXCI7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBvcHRpb25EaXNwbGF5ID0gXCJuYW1lXCI7XHJcbiAgQElucHV0KCkgb3B0aW9uVmFsdWUgPSBcInZhbHVlXCI7XHJcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcclxuICBASW5wdXQoKSBjb3B5Q29udGVudCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsZWFyQ29udGVudCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG51bGxhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHdpZHRoID0gXCIxMDAlXCI7XHJcbiAgQElucHV0KCkgc3VmZml4OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRBY3Rpb246IEFjdGlvbjtcclxuXHJcbiAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChbXSk7XHJcbiAgc2VsZWN0ZWRWYWx1ZXM6IGFueVtdID0gW107XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBgU2VsZWN0ICR7dGhpcy5kaXNwbGF5fWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sb2FkQWN0aW9uKXtcclxuICAgICAgdGhpcy5nZXREYXRhKHRoaXMubG9hZEFjdGlvbik7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVZhbHVlcygpIHtcclxuICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWUuc3BsaXQoJzsnKVxyXG4gICAgICAgIC5maWx0ZXIodiA9PiB2LnRyaW0oKSlcclxuICAgICAgICAubWFwKHYgPT4gdGhpcy5vcHRpb25zLmZpbmQob3B0ID0+IG9wdFt0aGlzLm9wdGlvblZhbHVlXT8udG9TdHJpbmcoKSA9PT0gdilcclxuICAgICAgICAgID8gdiA6IG51bGwpXHJcbiAgICAgICAgLmZpbHRlcih2ID0+IHYgIT09IG51bGwpO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHZhbHVlcztcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW107XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IGV2ZW50LnZhbHVlIHx8IFtdO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLmpvaW4oJzsnKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbkRpc3BsYXkodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnM/LmZpbmQob3B0ID0+XHJcbiAgICAgIG9wdFt0aGlzLm9wdGlvblZhbHVlXT8udG9TdHJpbmcoKSA9PT0gdmFsdWU/LnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uW3RoaXMub3B0aW9uRGlzcGxheV0gOiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVXaXRoKHYxOiBhbnksIHYyOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2MT8udG9TdHJpbmcoKSA9PT0gdjI/LnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBjb3B5VmFsdWVzKCk6IHZvaWQge1xyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy52YWx1ZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoJ0NvcGllZCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNIb3ZlcmVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGhvdmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNIb3ZlcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuaG92ZXJDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmhvdmVyQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoIXRoaXMubG9hZEFjdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVmcmVzaEFjdGlvbiA9IHtcclxuICAgICAgLi4udGhpcy5sb2FkQWN0aW9uLFxyXG4gICAgICBmb3JjZVJlZnJlc2g6IHRydWVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZXREYXRhKHJlZnJlc2hBY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YShhY3Rpb246IEFjdGlvbikge1xyXG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShhY3Rpb24pLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVWYWx1ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzp3aWR0aCA/PyAnMTAwJSd9XCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gIDxtYXQtbGFiZWw+e3tkaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIG11bHRpcGxlIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwibnVsbGFibGVcIiBbdmFsdWVdPVwibnVsbFwiPk5vbmU8L21hdC1vcHRpb24+XHJcbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uW29wdGlvblZhbHVlXVwiPlxyXG4gICAgICB7e29wdGlvbltvcHRpb25EaXNwbGF5XX19XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgPC9tYXQtc2VsZWN0PlxyXG4gIDxtYXQtaGludCAqbmdJZj1cImhpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJzdWZmaXgtaWNvbnNcIj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwibG9hZEFjdGlvbiAmJiBpc0hvdmVyZWRcIiAoY2xpY2spPVwicmVmcmVzaCgkZXZlbnQpXCIgbWF0VG9vbHRpcD1cIlJlZnJlc2hcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+Y2FjaGVkPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPHNwYS1zdWZmaXggW2xhYmVsXT1cInN1ZmZpeFwiIFtpbmZvTWVzc2FnZV09XCJpbmZvTWVzc2FnZVwiIFtjb3B5Q29udGVudF09XCJjb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiY2xlYXJDb250ZW50XCIgKGNsZWFyQ2xpY2spPVwiY2xlYXIoKVwiIFtpc0hvdmVyZWRdPVwidHJ1ZVwiIFsodmFsdWUpXT1cInZhbHVlXCI+XHJcbiAgICA8L3NwYS1zdWZmaXg+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
3
|
-
import { map, startWith } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../services/message.service";
|
|
6
|
-
import * as i2 from "../../services/datalib.service";
|
|
7
|
-
import * as i3 from "@angular/common";
|
|
8
|
-
import * as i4 from "@angular/forms";
|
|
9
|
-
import * as i5 from "@angular/material/button";
|
|
10
|
-
import * as i6 from "@angular/material/icon";
|
|
11
|
-
import * as i7 from "@angular/material/form-field";
|
|
12
|
-
import * as i8 from "@angular/material/chips";
|
|
13
|
-
import * as i9 from "@angular/material/core";
|
|
14
|
-
import * as i10 from "@angular/material/autocomplete";
|
|
15
|
-
import * as i11 from "@angular/material/tooltip";
|
|
16
|
-
import * as i12 from "../suffix/suffix.component";
|
|
17
|
-
export class MultiTextComponent {
|
|
18
|
-
constructor(messageService, dataService) {
|
|
19
|
-
this.messageService = messageService;
|
|
20
|
-
this.dataService = dataService;
|
|
21
|
-
this.display = "";
|
|
22
|
-
this.value = "";
|
|
23
|
-
this.valueChange = new EventEmitter();
|
|
24
|
-
this.readonly = false;
|
|
25
|
-
this.required = true;
|
|
26
|
-
this.hint = "";
|
|
27
|
-
this.strict = false;
|
|
28
|
-
this.copyContent = false;
|
|
29
|
-
this.clearContent = false;
|
|
30
|
-
this.options = [];
|
|
31
|
-
this.optionDisplay = "name"; // Default to name if not provided
|
|
32
|
-
this.optionValue = "value"; // Default to value if not provided
|
|
33
|
-
this.values = [];
|
|
34
|
-
this.control = new FormControl('');
|
|
35
|
-
this.errorState = false;
|
|
36
|
-
this.selectedFromAutocomplete = false;
|
|
37
|
-
this.isHovered = false;
|
|
38
|
-
this.hoverChange = new EventEmitter();
|
|
39
|
-
}
|
|
40
|
-
ngOnInit() {
|
|
41
|
-
this.values = this.value ? this.value.split(';').filter(val => val.trim() !== '') : [];
|
|
42
|
-
this.setupAutoComplete();
|
|
43
|
-
this.getData(this.loadAction);
|
|
44
|
-
}
|
|
45
|
-
ngOnChanges() {
|
|
46
|
-
if (this.options) {
|
|
47
|
-
this.setupAutoComplete();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
setupAutoComplete() {
|
|
51
|
-
this.filteredOptions = this.control.valueChanges.pipe(startWith(''), map(value => this.filterOptions(value)));
|
|
52
|
-
}
|
|
53
|
-
filterOptions(value) {
|
|
54
|
-
if (!value || !this.options)
|
|
55
|
-
return this.options || [];
|
|
56
|
-
const searchValue = value.toString().toLowerCase();
|
|
57
|
-
return this.options.filter(option => {
|
|
58
|
-
const displayValue = option[this.optionDisplay]?.toString().toLowerCase();
|
|
59
|
-
return displayValue?.includes(searchValue);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
add(event) {
|
|
63
|
-
// Skip validation if option was selected from autocomplete
|
|
64
|
-
if (this.selectedFromAutocomplete) {
|
|
65
|
-
this.selectedFromAutocomplete = false;
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const input = (event.value || '').trim();
|
|
69
|
-
if (!input)
|
|
70
|
-
return;
|
|
71
|
-
if (this.strict) {
|
|
72
|
-
const found = this.options.find(opt => {
|
|
73
|
-
const optionDisplayValue = opt[this.optionDisplay]?.toString().toLowerCase();
|
|
74
|
-
const optionValue = opt[this.optionValue]?.toString().toLowerCase();
|
|
75
|
-
const inputLower = input.toLowerCase();
|
|
76
|
-
return optionDisplayValue === inputLower || optionValue === inputLower;
|
|
77
|
-
});
|
|
78
|
-
// if (!found) {
|
|
79
|
-
// this.errorState = true;
|
|
80
|
-
// this.hint = 'Value must be selected from the list';
|
|
81
|
-
// return;
|
|
82
|
-
// }
|
|
83
|
-
this.addValue(found[this.optionValue]?.toString());
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
this.addValue(input);
|
|
87
|
-
}
|
|
88
|
-
this.resetInput();
|
|
89
|
-
}
|
|
90
|
-
addValue(value) {
|
|
91
|
-
if (!this.values.includes(value)) {
|
|
92
|
-
this.values.push(value);
|
|
93
|
-
this.errorState = false;
|
|
94
|
-
this.updateValue();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
remove(value) {
|
|
98
|
-
const index = this.values.indexOf(value);
|
|
99
|
-
if (index >= 0) {
|
|
100
|
-
this.values.splice(index, 1);
|
|
101
|
-
this.updateValue();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
optionSelected(event) {
|
|
105
|
-
const selectedOption = event.option.value;
|
|
106
|
-
if (selectedOption) {
|
|
107
|
-
this.selectedFromAutocomplete = true;
|
|
108
|
-
this.addValue(selectedOption[this.optionValue]?.toString());
|
|
109
|
-
this.resetInput();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
resetInput() {
|
|
113
|
-
// Reset form control
|
|
114
|
-
this.control.setValue('');
|
|
115
|
-
// Reset input element if available
|
|
116
|
-
if (this.textInput?.nativeElement) {
|
|
117
|
-
this.textInput.nativeElement.value = '';
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
updateValue() {
|
|
121
|
-
this.value = this.values.join(';');
|
|
122
|
-
this.valueChange.emit(this.value);
|
|
123
|
-
}
|
|
124
|
-
clear() {
|
|
125
|
-
this.values = [];
|
|
126
|
-
this.updateValue();
|
|
127
|
-
}
|
|
128
|
-
getDisplayValue(value) {
|
|
129
|
-
const option = this.options?.find(opt => opt[this.optionValue]?.toString() === value);
|
|
130
|
-
return option ? option[this.optionDisplay]?.toString() : value;
|
|
131
|
-
}
|
|
132
|
-
copyValues() {
|
|
133
|
-
navigator.clipboard.writeText(this.value).then(() => {
|
|
134
|
-
this.messageService.toast('Copied');
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
onMouseEnter() {
|
|
138
|
-
this.isHovered = true;
|
|
139
|
-
this.hoverChange.emit(true);
|
|
140
|
-
}
|
|
141
|
-
onMouseLeave() {
|
|
142
|
-
this.isHovered = false;
|
|
143
|
-
this.hoverChange.emit(false);
|
|
144
|
-
}
|
|
145
|
-
refresh(event) {
|
|
146
|
-
event.stopPropagation();
|
|
147
|
-
if (!this.loadAction) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
const refreshAction = {
|
|
151
|
-
...this.loadAction,
|
|
152
|
-
forceRefresh: true
|
|
153
|
-
};
|
|
154
|
-
this.getData(refreshAction);
|
|
155
|
-
}
|
|
156
|
-
getData(action) {
|
|
157
|
-
if (!action)
|
|
158
|
-
return;
|
|
159
|
-
this.dataService.CallApi(action).subscribe((apiResponse) => {
|
|
160
|
-
if (apiResponse.success) {
|
|
161
|
-
this.options = apiResponse.data;
|
|
162
|
-
this.setupAutoComplete();
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
MultiTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MultiTextComponent, deps: [{ token: i1.MessageService }, { token: i2.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
-
MultiTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MultiTextComponent, selector: "spa-multi-text", inputs: { display: "display", value: "value", readonly: "readonly", required: "required", hint: "hint", strict: "strict", suffix: "suffix", infoMessage: "infoMessage", copyContent: "copyContent", clearContent: "clearContent", options: "options", optionDisplay: "optionDisplay", optionValue: "optionValue", loadAction: "loadAction" }, outputs: { valueChange: "valueChange", hoverChange: "hoverChange" }, viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-form-field style=\"width: 100%;\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let value of values\" [removable]=\"!readonly\" (removed)=\"remove(value)\">\r\n {{getDisplayValue(value)}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input #textInput autocomplete=\"off\" [placeholder]=\"readonly ? '' : display\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"add($event)\" [formControl]=\"control\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n {{option[optionDisplay]}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"errorState\">{{hint}}</mat-error>\r\n <mat-hint *ngIf=\"hint && !errorState\">{{hint}}</mat-hint>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"true\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i8.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i8.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i12.SuffixComponent, selector: "spa-suffix", inputs: ["label", "infoMessage", "copyContent", "isHovered", "clearContent", "value"], outputs: ["infoClick", "copyClick", "clearClick", "valueChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MultiTextComponent, decorators: [{
|
|
170
|
-
type: Component,
|
|
171
|
-
args: [{ selector: 'spa-multi-text', template: "<mat-form-field style=\"width: 100%;\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let value of values\" [removable]=\"!readonly\" (removed)=\"remove(value)\">\r\n {{getDisplayValue(value)}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input #textInput autocomplete=\"off\" [placeholder]=\"readonly ? '' : display\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"add($event)\" [formControl]=\"control\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n {{option[optionDisplay]}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"errorState\">{{hint}}</mat-error>\r\n <mat-hint *ngIf=\"hint && !errorState\">{{hint}}</mat-hint>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"true\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n" }]
|
|
172
|
-
}], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.DataServiceLib }]; }, propDecorators: { textInput: [{
|
|
173
|
-
type: ViewChild,
|
|
174
|
-
args: ['textInput']
|
|
175
|
-
}], display: [{
|
|
176
|
-
type: Input
|
|
177
|
-
}], value: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], valueChange: [{
|
|
180
|
-
type: Output
|
|
181
|
-
}], readonly: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}], required: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], hint: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], strict: [{
|
|
188
|
-
type: Input
|
|
189
|
-
}], suffix: [{
|
|
190
|
-
type: Input
|
|
191
|
-
}], infoMessage: [{
|
|
192
|
-
type: Input
|
|
193
|
-
}], copyContent: [{
|
|
194
|
-
type: Input
|
|
195
|
-
}], clearContent: [{
|
|
196
|
-
type: Input
|
|
197
|
-
}], options: [{
|
|
198
|
-
type: Input
|
|
199
|
-
}], optionDisplay: [{
|
|
200
|
-
type: Input
|
|
201
|
-
}], optionValue: [{
|
|
202
|
-
type: Input
|
|
203
|
-
}], loadAction: [{
|
|
204
|
-
type: Input
|
|
205
|
-
}], hoverChange: [{
|
|
206
|
-
type: Output
|
|
207
|
-
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aS10ZXh0L211bHRpLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktdGV4dC9tdWx0aS10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVNoRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW9CLGNBQThCLEVBQVUsV0FBMkI7UUFBbkUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBSTlFLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdmLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxrQ0FBa0M7UUFDMUQsZ0JBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxtQ0FBbUM7UUFJbkUsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUN0QixZQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNYLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQTBIekMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNSLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQXBKdUMsQ0FBQztJQTJCNUYsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkYsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNuRCxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQ2IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxRSxPQUFPLFlBQVksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQXdCO1FBQzFCLDJEQUEyRDtRQUMzRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLE9BQU87U0FDUjtRQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0UsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLGtCQUFrQixLQUFLLFVBQVUsSUFBSSxXQUFXLEtBQUssVUFBVSxDQUFDO1lBQ3pFLENBQUMsQ0FBQyxDQUFDO1lBRUgsZ0JBQWdCO1lBQ2hCLDRCQUE0QjtZQUM1Qix3REFBd0Q7WUFDeEQsWUFBWTtZQUNaLElBQUk7WUFFSixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFtQztRQUNoRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFHTyxVQUFVO1FBQ2hCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxQixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDdEMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxLQUFLLENBQzVDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVO1FBQ1IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBSUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTztTQUNSO1FBRUQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsR0FBRyxJQUFJLENBQUMsVUFBVTtZQUNsQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUN0RSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQXRMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixza0JDZC9CLGluREEwQkE7MkZEWmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGdCQUFnQjtrSUFNRixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBaUlJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb24sIEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtbXVsdGktdGV4dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXRleHQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYikgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RleHRJbnB1dCcpIHRleHRJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgQElucHV0KCkgZGlzcGxheSA9IFwiXCI7XHJcbiAgQElucHV0KCkgdmFsdWUgPSBcIlwiO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGhpbnQgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHN0cmljdCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1ZmZpeDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY29weUNvbnRlbnQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGVhckNvbnRlbnQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG9wdGlvbkRpc3BsYXkgPSBcIm5hbWVcIjsgLy8gRGVmYXVsdCB0byBuYW1lIGlmIG5vdCBwcm92aWRlZFxyXG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlID0gXCJ2YWx1ZVwiOyAvLyBEZWZhdWx0IHRvIHZhbHVlIGlmIG5vdCBwcm92aWRlZFxyXG5cclxuICBASW5wdXQoKSBsb2FkQWN0aW9uOiBBY3Rpb247XHJcblxyXG4gIHZhbHVlczogc3RyaW5nW10gPSBbXTtcclxuICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10+O1xyXG4gIGVycm9yU3RhdGUgPSBmYWxzZTtcclxuICBwcml2YXRlIHNlbGVjdGVkRnJvbUF1dG9jb21wbGV0ZSA9IGZhbHNlO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUuc3BsaXQoJzsnKS5maWx0ZXIodmFsID0+IHZhbC50cmltKCkgIT09ICcnKSA6IFtdO1xyXG4gICAgdGhpcy5zZXR1cEF1dG9Db21wbGV0ZSgpO1xyXG4gICAgdGhpcy5nZXREYXRhKHRoaXMubG9hZEFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5zZXR1cEF1dG9Db21wbGV0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEF1dG9Db21wbGV0ZSgpIHtcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzdGFydFdpdGgoJycpLFxyXG4gICAgICBtYXAodmFsdWUgPT4gdGhpcy5maWx0ZXJPcHRpb25zKHZhbHVlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlck9wdGlvbnModmFsdWU6IHN0cmluZyk6IGFueVtdIHtcclxuICAgIGlmICghdmFsdWUgfHwgIXRoaXMub3B0aW9ucykgcmV0dXJuIHRoaXMub3B0aW9ucyB8fCBbXTtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB7XHJcbiAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IG9wdGlvblt0aGlzLm9wdGlvbkRpc3BsYXldPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBkaXNwbGF5VmFsdWU/LmluY2x1ZGVzKHNlYXJjaFZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIG9wdGlvbiB3YXMgc2VsZWN0ZWQgZnJvbSBhdXRvY29tcGxldGVcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRnJvbUF1dG9jb21wbGV0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbUF1dG9jb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSAoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKTtcclxuICAgIGlmICghaW5wdXQpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5zdHJpY3QpIHtcclxuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLm9wdGlvbnMuZmluZChvcHQgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbkRpc3BsYXlWYWx1ZSA9IG9wdFt0aGlzLm9wdGlvbkRpc3BsYXldPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBvcHRbdGhpcy5vcHRpb25WYWx1ZV0/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBpbnB1dExvd2VyID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gb3B0aW9uRGlzcGxheVZhbHVlID09PSBpbnB1dExvd2VyIHx8IG9wdGlvblZhbHVlID09PSBpbnB1dExvd2VyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIGlmICghZm91bmQpIHtcclxuICAgICAgLy8gICB0aGlzLmVycm9yU3RhdGUgPSB0cnVlO1xyXG4gICAgICAvLyAgIHRoaXMuaGludCA9ICdWYWx1ZSBtdXN0IGJlIHNlbGVjdGVkIGZyb20gdGhlIGxpc3QnO1xyXG4gICAgICAvLyAgIHJldHVybjtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgdGhpcy5hZGRWYWx1ZShmb3VuZFt0aGlzLm9wdGlvblZhbHVlXT8udG9TdHJpbmcoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZFZhbHVlKGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc2V0SW5wdXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZXJyb3JTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnZhbHVlcy5pbmRleE9mKHZhbHVlKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIHRoaXMudmFsdWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wdGlvblNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcclxuICAgIGlmIChzZWxlY3RlZE9wdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbUF1dG9jb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkVmFsdWUoc2VsZWN0ZWRPcHRpb25bdGhpcy5vcHRpb25WYWx1ZV0/LnRvU3RyaW5nKCkpO1xyXG4gICAgICB0aGlzLnJlc2V0SW5wdXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHJlc2V0SW5wdXQoKTogdm9pZCB7XHJcbiAgICAvLyBSZXNldCBmb3JtIGNvbnRyb2xcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgLy8gUmVzZXQgaW5wdXQgZWxlbWVudCBpZiBhdmFpbGFibGVcclxuICAgIGlmICh0aGlzLnRleHRJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlcy5qb2luKCc7Jyk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVzID0gW107XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnM/LmZpbmQob3B0ID0+XHJcbiAgICAgIG9wdFt0aGlzLm9wdGlvblZhbHVlXT8udG9TdHJpbmcoKSA9PT0gdmFsdWVcclxuICAgICk7XHJcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uW3RoaXMub3B0aW9uRGlzcGxheV0/LnRvU3RyaW5nKCkgOiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGNvcHlWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLnZhbHVlKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCgnQ29waWVkJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzSG92ZXJlZCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBob3ZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLmhvdmVyQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5ob3ZlckNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKCF0aGlzLmxvYWRBY3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlZnJlc2hBY3Rpb24gPSB7XHJcbiAgICAgIC4uLnRoaXMubG9hZEFjdGlvbixcclxuICAgICAgZm9yY2VSZWZyZXNoOiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ2V0RGF0YShyZWZyZXNoQWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGdldERhdGEoYWN0aW9uOiBBY3Rpb24pIHtcclxuICAgIGlmICghYWN0aW9uKSByZXR1cm47XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoYWN0aW9uKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgdGhpcy5zZXR1cEF1dG9Db21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gIDxtYXQtbGFiZWw+e3tkaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3Q+XHJcbiAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHZhbHVlc1wiIFtyZW1vdmFibGVdPVwiIXJlYWRvbmx5XCIgKHJlbW92ZWQpPVwicmVtb3ZlKHZhbHVlKVwiPlxyXG4gICAgICB7e2dldERpc3BsYXlWYWx1ZSh2YWx1ZSl9fVxyXG4gICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZSAqbmdJZj1cIiFyZWFkb25seVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICA8L21hdC1jaGlwPlxyXG4gICAgPGlucHV0ICN0ZXh0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW3BsYWNlaG9sZGVyXT1cInJlYWRvbmx5ID8gJycgOiBkaXNwbGF5XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJbMTMsIDE4Nl1cIiBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cInRydWVcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkKCRldmVudClcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiPlxyXG4gIDwvbWF0LWNoaXAtbGlzdD5cclxuXHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cclxuICAgICAge3tvcHRpb25bb3B0aW9uRGlzcGxheV19fVxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuXHJcbiAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yU3RhdGVcIj57e2hpbnR9fTwvbWF0LWVycm9yPlxyXG4gIDxtYXQtaGludCAqbmdJZj1cImhpbnQgJiYgIWVycm9yU3RhdGVcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XHJcblxyXG4gIDxkaXYgbWF0U3VmZml4IGNsYXNzPVwic3VmZml4LWljb25zXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImxvYWRBY3Rpb24gJiYgaXNIb3ZlcmVkXCIgKGNsaWNrKT1cInJlZnJlc2goJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCJSZWZyZXNoXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmNhY2hlZDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxzcGEtc3VmZml4IFtsYWJlbF09XCJzdWZmaXhcIiBbaW5mb01lc3NhZ2VdPVwiaW5mb01lc3NhZ2VcIiBbY29weUNvbnRlbnRdPVwiY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImNsZWFyQ29udGVudFwiIChjbGVhckNsaWNrKT1cImNsZWFyKClcIiBbaXNIb3ZlcmVkXT1cInRydWVcIiBbKHZhbHVlKV09XCJ2YWx1ZVwiPjwvc3BhLXN1ZmZpeD5cclxuICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuIl19
|