@c8y/ngx-components 1023.14.2 → 1023.14.33
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/ai/index.d.ts +4 -2
- package/ai/index.d.ts.map +1 -1
- package/auth-configuration/index.d.ts +6 -3
- package/auth-configuration/index.d.ts.map +1 -1
- package/context-dashboard/index.d.ts +1 -0
- package/context-dashboard/index.d.ts.map +1 -1
- package/datapoint-explorer/view/index.d.ts +2 -1
- package/datapoint-explorer/view/index.d.ts.map +1 -1
- package/datapoint-library/details/index.d.ts.map +1 -1
- package/datapoint-selector/index.d.ts +6 -3
- package/datapoint-selector/index.d.ts.map +1 -1
- package/device-grid/index.d.ts.map +1 -1
- package/echart/index.d.ts +1 -0
- package/echart/index.d.ts.map +1 -1
- package/echart/models/index.d.ts +1 -0
- package/echart/models/index.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
- package/fesm2022/c8y-ngx-components-ai.mjs +11 -9
- package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
- package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
- package/fesm2022/c8y-ngx-components-api.mjs +7 -7
- package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +39 -39
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs → c8y-ngx-components-asset-property-grid.component-CDjsn5j9.mjs} +13 -13
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs.map → c8y-ngx-components-asset-property-grid.component-CDjsn5j9.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +244 -170
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
- package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
- package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
- package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DM3hASUP.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DM3hASUP.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs} +10 -10
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +113 -108
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0C7SH6L.mjs} +16 -16
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0C7SH6L.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
- package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +31 -26
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +6 -19
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +56 -57
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -44
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
- package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
- package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
- package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
- package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +120 -61
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
- package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +4 -4
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs +3 -3
- package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
- package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
- package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
- package/fesm2022/c8y-ngx-components-global-context.mjs +134 -134
- package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +21 -21
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
- package/fesm2022/c8y-ngx-components-location.mjs +28 -28
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-map.mjs +19 -19
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +10 -12
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
- package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
- package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
- package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
- package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
- package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
- package/fesm2022/c8y-ngx-components-search.mjs +48 -45
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services.mjs +29 -29
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
- package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +76 -66
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
- package/fesm2022/c8y-ngx-components-time-context.mjs +14 -7
- package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +15 -15
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
- package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
- package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +4 -4
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +24 -20
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
- package/fesm2022/c8y-ngx-components.mjs +9450 -9420
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/global-context/index.d.ts.map +1 -1
- package/index.d.ts +3283 -3271
- package/index.d.ts.map +1 -1
- package/locales/de.po +124 -133
- package/locales/es.po +48 -40
- package/locales/fr.po +41 -33
- package/locales/ja_JP.po +35 -28
- package/locales/ko.po +46 -38
- package/locales/locales.pot +17 -8
- package/locales/nl.po +44 -36
- package/locales/pl.po +62 -54
- package/locales/pt_BR.po +45 -37
- package/locales/zh_CN.po +42 -35
- package/locales/zh_TW.po +55 -46
- package/operations/operations-timeline/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/search/index.d.ts +5 -5
- package/search/index.d.ts.map +1 -1
- package/sub-assets/index.d.ts +3 -3
- package/sub-assets/index.d.ts.map +1 -1
- package/time-context/index.d.ts +3 -2
- package/time-context/index.d.ts.map +1 -1
|
@@ -20,10 +20,10 @@ class IconNamePipe {
|
|
|
20
20
|
}
|
|
21
21
|
return icon;
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
24
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
24
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: IconNamePipe, isStandalone: true, name: "iconName" }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconNamePipe, decorators: [{
|
|
27
27
|
type: Pipe,
|
|
28
28
|
args: [{ name: 'iconName' }]
|
|
29
29
|
}] });
|
|
@@ -75,10 +75,10 @@ class IconSelectorComponent {
|
|
|
75
75
|
this.selectedIcon = icon[0];
|
|
76
76
|
this.onSelect.emit(icon[0]);
|
|
77
77
|
}
|
|
78
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
79
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: IconSelectorComponent, isStandalone: true, selector: "c8y-icon-selector", inputs: { iconCategoriesToExclude: "iconCategoriesToExclude", showIconClass: "showIconClass", selectedIcon: "selectedIcon" }, outputs: { onSelect: "onSelect" }, ngImport: i0, template: "<div class=\"p-l-24 p-r-24 p-t-8 p-b-8 separator-bottom\">\n <div class=\"row d-flex-sm\">\n <div class=\"col-sm-6 m-b-8\">\n <div class=\"input-group-search input-group\" style=\"width: auto\">\n <input\n type=\"search\"\n class=\"form-control\"\n id=\"filter-icons\"\n [ngModel]=\"searchTerm$ | async\"\n (ngModelChange)=\"onSearchChange($event)\"\n placeholder=\"{{ 'Type to filter icons\u2026' | translate }}\"\n />\n <ng-template #searchIcon>\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\"></i>\n </span>\n </ng-template>\n <span\n class=\"input-group-addon pointer\"\n *ngIf=\"searchTerm$ | async; else searchIcon\"\n (click)=\"onSearchChange('')\"\n >\n <i c8yIcon=\"times\"></i>\n </span>\n </div>\n </div>\n <div class=\"col-sm-6 m-b-8 text-right\">\n <div class=\"d-inline-flex a-i-center text-left\">\n <label class=\"m-b-0 m-r-8 flex-no-shrink\" translate>Filter by type</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"exampleSelect\"\n class=\"form-control\"\n [ngModel]=\"selectedIconCategory$ | async\"\n (ngModelChange)=\"onCategoryFilterChanged($event)\"\n >\n <option *ngFor=\"let category of availableIconCategories$ | async\" [ngValue]=\"category\">\n {{ category | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" style=\"height: calc(100vh - 293px)\">\n <div class=\"dtm-icon-grid\">\n <div *ngFor=\"let iconDefinition of filteredIcons$ | async\" class=\"d-contents\">\n <div class=\"legend form-block center grid__col--fullspan\">\n {{ iconDefinition.label | translate }}\n </div>\n\n <div class=\"d-contents\" *ngFor=\"let icon of iconDefinition.icons\">\n <div\n class=\"dtm-icon-grid__item\"\n [ngClass]=\"{\n 'dtm-icon-grid__item--selected': selectedIcon && icon[0] === selectedIcon\n }\"\n >\n <button (click)=\"onIconClicked(icon)\" class=\"dtm-icon-grid__btn\" [title]=\"icon[0] | iconName\">\n <i [c8yIcon]=\"icon[0]\" class=\"d-block icon-40\"></i>\n <small *ngIf=\"showIconClass\" class=\"text-break-word\">{{ icon[0] | iconName }}</small>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: IconNamePipe, name: "iconName" }] }); }
|
|
80
80
|
}
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorComponent, decorators: [{
|
|
82
82
|
type: Component,
|
|
83
83
|
args: [{ selector: 'c8y-icon-selector', imports: [
|
|
84
84
|
FormsModule,
|
|
@@ -124,10 +124,10 @@ class IconSelectorModalComponent {
|
|
|
124
124
|
selectionChange(newSelection) {
|
|
125
125
|
this.currentSelection = newSelection;
|
|
126
126
|
}
|
|
127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorModalComponent, deps: [{ token: i1$1.BsModalRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: IconSelectorModalComponent, isStandalone: true, selector: "c8y-icon-selector-modal", ngImport: i0, template: "<div class=\"modal-header\">\n <div id=\"modal-title\" class=\"modal-title h4\">{{ title | translate }}</div>\n</div>\n<div id=\"modal-body\">\n <c8y-icon-selector\n (onSelect)=\"selectionChange($event)\"\n [selectedIcon]=\"currentSelection\"\n [iconCategoriesToExclude]=\"iconCategoriesToExclude\"\n [showIconClass]=\"showIconClass\"\n ></c8y-icon-selector>\n</div>\n<div class=\"modal-footer separator text-center\">\n <button class=\"btn btn-default\" (click)=\"close()\">\n {{ 'Cancel' | translate }}\n </button>\n <button class=\"btn btn-primary\" [disabled]=\"!currentSelection\" (click)=\"saveChanges()\">\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: IconSelectorComponent, selector: "c8y-icon-selector", inputs: ["iconCategoriesToExclude", "showIconClass", "selectedIcon"], outputs: ["onSelect"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
129
129
|
}
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorModalComponent, decorators: [{
|
|
131
131
|
type: Component,
|
|
132
132
|
args: [{ selector: 'c8y-icon-selector-modal', imports: [IconSelectorComponent, C8yTranslatePipe], template: "<div class=\"modal-header\">\n <div id=\"modal-title\" class=\"modal-title h4\">{{ title | translate }}</div>\n</div>\n<div id=\"modal-body\">\n <c8y-icon-selector\n (onSelect)=\"selectionChange($event)\"\n [selectedIcon]=\"currentSelection\"\n [iconCategoriesToExclude]=\"iconCategoriesToExclude\"\n [showIconClass]=\"showIconClass\"\n ></c8y-icon-selector>\n</div>\n<div class=\"modal-footer separator text-center\">\n <button class=\"btn btn-default\" (click)=\"close()\">\n {{ 'Cancel' | translate }}\n </button>\n <button class=\"btn btn-primary\" [disabled]=\"!currentSelection\" (click)=\"saveChanges()\">\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n" }]
|
|
133
133
|
}], ctorParameters: () => [{ type: i1$1.BsModalRef }] });
|
|
@@ -146,10 +146,10 @@ class IconSelectorService {
|
|
|
146
146
|
const content = modal.content;
|
|
147
147
|
return content.result;
|
|
148
148
|
}
|
|
149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
150
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorService, deps: [{ token: i1$1.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
150
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorService, providedIn: 'root' }); }
|
|
151
151
|
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorService, decorators: [{
|
|
153
153
|
type: Injectable,
|
|
154
154
|
args: [{ providedIn: 'root' }]
|
|
155
155
|
}], ctorParameters: () => [{ type: i1$1.BsModalService }] });
|
|
@@ -232,16 +232,16 @@ class IconSelectorWrapperComponent {
|
|
|
232
232
|
// nothing to do
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
236
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorWrapperComponent, deps: [{ token: IconSelectorService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: IconSelectorWrapperComponent, isStandalone: true, selector: "c8y-icon-selector-wrapper", inputs: { canRemoveIcon: "canRemoveIcon", selectedIcon: "selectedIcon", iconSize: "iconSize" }, outputs: { onSelect: "onSelect" }, providers: [
|
|
237
237
|
{
|
|
238
238
|
provide: NG_VALUE_ACCESSOR,
|
|
239
239
|
useExisting: forwardRef(() => IconSelectorWrapperComponent),
|
|
240
240
|
multi: true
|
|
241
241
|
}
|
|
242
|
-
], ngImport: i0, template: "<div class=\"d-flex a-i-center j-c-center p-relative\">\n
|
|
242
|
+
], ngImport: i0, template: "<div class=\"d-flex a-i-center j-c-center p-relative\">\n @if (selectedIcon) {\n <div class=\"icon-{{ iconSize }} text-center l-h-1 fit-w fit-h\">\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"selectedIcon\"\n ></i>\n </div>\n }\n\n @if (!selectedIcon) {\n <div\n class=\"icon-{{ iconSize }} text-muted text-center a-s-stretch fit-w\"\n style=\"border: 2px dashed var(--c8y-root-component-border-color)\"\n >\n <span class=\"d-flex a-i-center j-c-center text-12 fit-h\">\n <em>{{ 'Auto' | translate }}</em>\n </span>\n </div>\n }\n <div class=\"showOnHover d-flex j-c-center p-absolute fit-h fit-w\">\n @if (!selectedIcon) {\n <button\n class=\"btn btn-clean btn-icon btn-sm m-0\"\n title=\"{{ 'Select icon' | translate }}\"\n [attr.aria-label]=\"'Select icon' | translate\"\n type=\"button\"\n (click)=\"openIconSelector()\"\n >\n {{ 'Select' | translate }}\n </button>\n }\n @if (selectedIcon) {\n <button\n class=\"btn btn-dot btn-sm btn-icon m-0\"\n [attr.aria-label]=\"'Change icon' | translate\"\n tooltip=\"{{ 'Change icon' | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"openIconSelector()\"\n >\n <i [c8yIcon]=\"'replace'\"></i>\n </button>\n }\n @if (selectedIcon && canRemoveIcon) {\n <button\n class=\"btn btn-dot btn-dot--danger btn-icon btn-sm m-0\"\n [attr.aria-label]=\"'Remove icon and use default icon' | translate\"\n tooltip=\"{{ 'Remove icon and use default icon' | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"removeIcon()\"\n >\n <i [c8yIcon]=\"'trash'\"></i>\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
243
243
|
}
|
|
244
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorWrapperComponent, decorators: [{
|
|
245
245
|
type: Component,
|
|
246
246
|
args: [{ selector: 'c8y-icon-selector-wrapper', providers: [
|
|
247
247
|
{
|
|
@@ -249,7 +249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
249
249
|
useExisting: forwardRef(() => IconSelectorWrapperComponent),
|
|
250
250
|
multi: true
|
|
251
251
|
}
|
|
252
|
-
], imports: [NgIf, IconDirective, TooltipDirective, C8yTranslatePipe], template: "<div class=\"d-flex a-i-center j-c-center p-relative\">\n
|
|
252
|
+
], imports: [NgIf, IconDirective, TooltipDirective, C8yTranslatePipe], template: "<div class=\"d-flex a-i-center j-c-center p-relative\">\n @if (selectedIcon) {\n <div class=\"icon-{{ iconSize }} text-center l-h-1 fit-w fit-h\">\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"selectedIcon\"\n ></i>\n </div>\n }\n\n @if (!selectedIcon) {\n <div\n class=\"icon-{{ iconSize }} text-muted text-center a-s-stretch fit-w\"\n style=\"border: 2px dashed var(--c8y-root-component-border-color)\"\n >\n <span class=\"d-flex a-i-center j-c-center text-12 fit-h\">\n <em>{{ 'Auto' | translate }}</em>\n </span>\n </div>\n }\n <div class=\"showOnHover d-flex j-c-center p-absolute fit-h fit-w\">\n @if (!selectedIcon) {\n <button\n class=\"btn btn-clean btn-icon btn-sm m-0\"\n title=\"{{ 'Select icon' | translate }}\"\n [attr.aria-label]=\"'Select icon' | translate\"\n type=\"button\"\n (click)=\"openIconSelector()\"\n >\n {{ 'Select' | translate }}\n </button>\n }\n @if (selectedIcon) {\n <button\n class=\"btn btn-dot btn-sm btn-icon m-0\"\n [attr.aria-label]=\"'Change icon' | translate\"\n tooltip=\"{{ 'Change icon' | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"openIconSelector()\"\n >\n <i [c8yIcon]=\"'replace'\"></i>\n </button>\n }\n @if (selectedIcon && canRemoveIcon) {\n <button\n class=\"btn btn-dot btn-dot--danger btn-icon btn-sm m-0\"\n [attr.aria-label]=\"'Remove icon and use default icon' | translate\"\n tooltip=\"{{ 'Remove icon and use default icon' | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"removeIcon()\"\n >\n <i [c8yIcon]=\"'trash'\"></i>\n </button>\n }\n </div>\n</div>\n" }]
|
|
253
253
|
}], ctorParameters: () => [{ type: IconSelectorService }, { type: i2.GainsightService }], propDecorators: { canRemoveIcon: [{
|
|
254
254
|
type: Input
|
|
255
255
|
}], selectedIcon: [{
|
|
@@ -261,8 +261,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
261
261
|
}] } });
|
|
262
262
|
|
|
263
263
|
class IconSelectorModule {
|
|
264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
265
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
265
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorModule, imports: [CommonModule,
|
|
266
266
|
FormsModule,
|
|
267
267
|
DropAreaModule,
|
|
268
268
|
TooltipModule,
|
|
@@ -273,14 +273,14 @@ class IconSelectorModule {
|
|
|
273
273
|
IconSelectorModalComponent,
|
|
274
274
|
IconNamePipe,
|
|
275
275
|
IconSelectorWrapperComponent] }); }
|
|
276
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
276
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorModule, imports: [CommonModule,
|
|
277
277
|
FormsModule,
|
|
278
278
|
DropAreaModule,
|
|
279
279
|
TooltipModule,
|
|
280
280
|
IconSelectorComponent,
|
|
281
281
|
IconSelectorModalComponent] }); }
|
|
282
282
|
}
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IconSelectorModule, decorators: [{
|
|
284
284
|
type: NgModule,
|
|
285
285
|
args: [{
|
|
286
286
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-icon-selector.mjs","sources":["../../icon-selector/icon-name.pipe.ts","../../icon-selector/icon-selector.component.ts","../../icon-selector/icon-selector.component.html","../../icon-selector/icon-selector-modal/icon-selector-modal.component.ts","../../icon-selector/icon-selector-modal/icon-selector-modal.component.html","../../icon-selector/icon-selector.service.ts","../../icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.ts","../../icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.html","../../icon-selector/icon-selector.module.ts","../../icon-selector/c8y-ngx-components-icon-selector.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'iconName' })\nexport class IconNamePipe implements PipeTransform {\n transform(icon: string): string {\n if (icon.startsWith('c8y-')) {\n return icon.replace(/^c8y-/, '');\n }\n return icon;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest, defer, from } from 'rxjs';\nimport { debounceTime, map, shareReplay, startWith } from 'rxjs/operators';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { IconDirective, C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { clone } from 'lodash-es';\nimport { DefaultIconDefinition } from '@c8y/ngx-components/icon-selector/model';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\nimport { IconNamePipe } from './icon-name.pipe';\n\nconst allIconCategory = gettext('All`icons-category`');\n\n@Component({\n selector: 'c8y-icon-selector',\n templateUrl: './icon-selector.component.html',\n styleUrls: [],\n imports: [\n FormsModule,\n IconDirective,\n NgIf,\n C8yTranslateDirective,\n NgFor,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe,\n IconNamePipe\n ]\n})\nexport class IconSelectorComponent {\n @Input() iconCategoriesToExclude: string[] = [];\n @Input() showIconClass = true;\n @Output() onSelect = new EventEmitter<string>();\n @Input() selectedIcon: SupportedIconsSuggestions;\n\n icons$: Observable<DefaultIconDefinition[]>;\n filteredIcons$: Observable<DefaultIconDefinition[]>;\n searchTerm$ = new BehaviorSubject('');\n selectedIconCategory$ = new BehaviorSubject<string>(allIconCategory);\n availableIconCategories$: Observable<string[]>;\n\n constructor() {\n this.icons$ = defer(() => from(this.loadIconDefinitions())).pipe(\n map(icons => icons.filter(tmp => !this.iconCategoriesToExclude.includes(tmp.label))),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n this.filteredIcons$ = combineLatest([\n this.icons$,\n this.searchTerm$.pipe(debounceTime(500), startWith(this.searchTerm$.value)),\n this.selectedIconCategory$\n ]).pipe(\n map(([icons, searchTerm, category]) =>\n this.filterIconsByCategoryAndSearchTerm(icons, category, searchTerm)\n )\n );\n this.availableIconCategories$ = this.icons$.pipe(\n map(icons => [allIconCategory, ...icons.map(tmp => tmp.label)])\n );\n }\n\n async loadIconDefinitions(): Promise<DefaultIconDefinition[]> {\n const { allIcons } = await import('@c8y/ngx-components/icon-selector/icons');\n return allIcons;\n }\n\n filterIconsByCategoryAndSearchTerm(\n iconCategories: DefaultIconDefinition[],\n selectedCategory: string,\n searchTerm: string\n ): DefaultIconDefinition[] {\n if (selectedCategory !== allIconCategory) {\n iconCategories = iconCategories.filter(category => category.label === selectedCategory);\n }\n\n if (searchTerm) {\n const lowerCaseSearchTerm = searchTerm.toLowerCase();\n const matchingCategories = new Array<DefaultIconDefinition>();\n for (const category of iconCategories) {\n const matchingIcons = category.icons.filter(iconClasses =>\n iconClasses.some(iconClass => iconClass.includes(lowerCaseSearchTerm))\n );\n if (matchingIcons.length) {\n matchingCategories.push({ ...clone(category), icons: matchingIcons });\n }\n }\n return matchingCategories;\n }\n\n return iconCategories;\n }\n\n onSearchChange(searchTerm: string) {\n this.searchTerm$.next(searchTerm);\n }\n\n onCategoryFilterChanged(categoryChange: string): void {\n this.selectedIconCategory$.next(categoryChange);\n }\n\n onIconClicked(icon: ReadonlyArray<string>): void {\n this.selectedIcon = icon[0];\n this.onSelect.emit(icon[0]);\n }\n}\n","<div class=\"p-l-24 p-r-24 p-t-8 p-b-8 separator-bottom\">\n <div class=\"row d-flex-sm\">\n <div class=\"col-sm-6 m-b-8\">\n <div class=\"input-group-search input-group\" style=\"width: auto\">\n <input\n type=\"search\"\n class=\"form-control\"\n id=\"filter-icons\"\n [ngModel]=\"searchTerm$ | async\"\n (ngModelChange)=\"onSearchChange($event)\"\n placeholder=\"{{ 'Type to filter icons…' | translate }}\"\n />\n <ng-template #searchIcon>\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\"></i>\n </span>\n </ng-template>\n <span\n class=\"input-group-addon pointer\"\n *ngIf=\"searchTerm$ | async; else searchIcon\"\n (click)=\"onSearchChange('')\"\n >\n <i c8yIcon=\"times\"></i>\n </span>\n </div>\n </div>\n <div class=\"col-sm-6 m-b-8 text-right\">\n <div class=\"d-inline-flex a-i-center text-left\">\n <label class=\"m-b-0 m-r-8 flex-no-shrink\" translate>Filter by type</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"exampleSelect\"\n class=\"form-control\"\n [ngModel]=\"selectedIconCategory$ | async\"\n (ngModelChange)=\"onCategoryFilterChanged($event)\"\n >\n <option *ngFor=\"let category of availableIconCategories$ | async\" [ngValue]=\"category\">\n {{ category | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" style=\"height: calc(100vh - 293px)\">\n <div class=\"dtm-icon-grid\">\n <div *ngFor=\"let iconDefinition of filteredIcons$ | async\" class=\"d-contents\">\n <div class=\"legend form-block center grid__col--fullspan\">\n {{ iconDefinition.label | translate }}\n </div>\n\n <div class=\"d-contents\" *ngFor=\"let icon of iconDefinition.icons\">\n <div\n class=\"dtm-icon-grid__item\"\n [ngClass]=\"{\n 'dtm-icon-grid__item--selected': selectedIcon && icon[0] === selectedIcon\n }\"\n >\n <button (click)=\"onIconClicked(icon)\" class=\"dtm-icon-grid__btn\" [title]=\"icon[0] | iconName\">\n <i [c8yIcon]=\"icon[0]\" class=\"d-block icon-40\"></i>\n <small *ngIf=\"showIconClass\" class=\"text-break-word\">{{ icon[0] | iconName }}</small>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yTranslatePipe } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IconSelectorComponent } from '../icon-selector.component';\n\n@Component({\n selector: 'c8y-icon-selector-modal',\n templateUrl: './icon-selector-modal.component.html',\n imports: [IconSelectorComponent, C8yTranslatePipe]\n})\nexport class IconSelectorModalComponent {\n title: string = gettext('Select icon');\n currentSelection: string;\n saveButtonLabel: string = gettext('Select');\n iconCategoriesToExclude: string[] = [];\n showIconClass = true;\n\n readonly result: Promise<string> = new Promise((resolve, reject) => {\n this.save = resolve;\n this.cancel = reject;\n });\n\n private save: (value: string) => void;\n private cancel: (reason?: any) => void;\n\n constructor(private bsModal: BsModalRef) {}\n\n close() {\n this.bsModal.hide();\n this.cancel();\n }\n\n saveChanges(): void {\n this.bsModal.hide();\n this.save(this.currentSelection);\n }\n\n selectionChange(newSelection: string) {\n this.currentSelection = newSelection;\n }\n}\n","<div class=\"modal-header\">\n <div id=\"modal-title\" class=\"modal-title h4\">{{ title | translate }}</div>\n</div>\n<div id=\"modal-body\">\n <c8y-icon-selector\n (onSelect)=\"selectionChange($event)\"\n [selectedIcon]=\"currentSelection\"\n [iconCategoriesToExclude]=\"iconCategoriesToExclude\"\n [showIconClass]=\"showIconClass\"\n ></c8y-icon-selector>\n</div>\n<div class=\"modal-footer separator text-center\">\n <button class=\"btn btn-default\" (click)=\"close()\">\n {{ 'Cancel' | translate }}\n </button>\n <button class=\"btn btn-primary\" [disabled]=\"!currentSelection\" (click)=\"saveChanges()\">\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { IconSelectorModalComponent } from './icon-selector-modal/icon-selector-modal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class IconSelectorService {\n constructor(protected modal: BsModalService) {}\n\n selectIcon(\n initialState: Partial<\n Pick<\n IconSelectorModalComponent,\n | 'currentSelection'\n | 'title'\n | 'saveButtonLabel'\n | 'iconCategoriesToExclude'\n | 'showIconClass'\n >\n > = {}\n ): Promise<string> {\n const modal = this.modal.show(IconSelectorModalComponent, {\n ignoreBackdropClick: true,\n keyboard: false,\n initialState,\n class: 'modal-lg'\n });\n const content = modal.content as IconSelectorModalComponent;\n return content.result;\n }\n}\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconSelectorService } from '../icon-selector.service';\nimport { GainsightService, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ICON_SELECTOR } from '@c8y/ngx-components/icon-selector/model';\nimport { NgIf } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\n\n/**\n * A component which acts as a wrapper for the icon selector.\n *\n * Example 1:\n * ```\n <c8y-icon-selector-wrapper\n [selectedIcon]=\"'water'\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n * ```\n * OR as a part of a formGroup\n * Example 2:\n * ```\n <c8y-icon-selector-wrapper name=\"icon\" formControlName=\"icon\">\n </c8y-icon-selector-wrapper>\n * ```\n */\n@Component({\n selector: 'c8y-icon-selector-wrapper',\n templateUrl: './icon-selector-wrapper.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IconSelectorWrapperComponent),\n multi: true\n }\n ],\n imports: [NgIf, IconDirective, TooltipDirective, C8yTranslatePipe]\n})\nexport class IconSelectorWrapperComponent implements ControlValueAccessor {\n @Input() canRemoveIcon = false;\n @Input() selectedIcon: string;\n /**\n * The displayed icon size, the value has to be multiple of 8.\n */\n @Input() iconSize = 32;\n @Output() onSelect: EventEmitter<string> = new EventEmitter();\n\n /**\n * @ignore\n */\n onTouched: () => void;\n\n constructor(\n private iconSelector: IconSelectorService,\n private gainsightService: GainsightService\n ) {}\n\n /**\n * @ignore\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange: (value: string) => void = () => {};\n\n /**\n * @ignore\n * @param icon The value to update\n */\n writeValue(icon: string): void {\n this.selectedIcon = icon;\n }\n\n /**\n * @ignore\n * @param fn The function to register for changes\n */\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n /**\n * @ignore\n * @param fn The function to register for changes\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n removeIcon() {\n this.onSelect.emit(undefined);\n }\n\n async openIconSelector() {\n try {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_ICON_SELECTOR.EVENTS.ICON_SELECTOR, {\n component: PRODUCT_EXPERIENCE_ICON_SELECTOR.COMPONENTS.ICON_SELECTOR_WRAPPER_COMPONENT,\n action: PRODUCT_EXPERIENCE_ICON_SELECTOR.ACTIONS.OPEN_ICON_SELECTOR\n });\n const icon = await this.iconSelector.selectIcon({\n currentSelection: this.selectedIcon\n });\n this.onChange(icon);\n this.selectedIcon = icon;\n this.onSelect.emit(icon);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_ICON_SELECTOR.EVENTS.ICON_SELECTOR, {\n component: PRODUCT_EXPERIENCE_ICON_SELECTOR.COMPONENTS.ICON_SELECTOR_WRAPPER_COMPONENT,\n action: PRODUCT_EXPERIENCE_ICON_SELECTOR.ACTIONS.ICON_SELECTED\n });\n } catch {\n // nothing to do\n }\n }\n}\n","<div class=\"d-flex a-i-center j-c-center p-relative\">\n <div\n class=\"icon-{{ iconSize }} text-center l-h-1 fit-w fit-h\"\n *ngIf=\"selectedIcon\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"selectedIcon\"\n ></i>\n </div>\n\n <div\n class=\"icon-{{ iconSize }} text-muted text-center a-s-stretch fit-w\"\n style=\"border: 2px dashed var(--c8y-root-component-border-color)\"\n *ngIf=\"!selectedIcon\"\n >\n <span class=\"d-flex a-i-center j-c-center text-12 fit-h\">\n <em>{{ 'Auto' | translate }}</em>\n </span>\n </div>\n <div class=\"showOnHover d-flex j-c-center p-absolute fit-h fit-w\">\n <button\n class=\"btn btn-dot btn-icon btn-sm m-0\"\n title=\"{{ 'Select icon' | translate }}\"\n [attr.aria-label]=\"'Select icon' | translate\"\n type=\"button\"\n (click)=\"openIconSelector()\"\n *ngIf=\"!selectedIcon\"\n >\n {{ 'Select' | translate }}\n </button>\n <button\n class=\"btn btn-dot btn-sm btn-icon m-0\"\n [attr.aria-label]=\"'Change icon' | translate\"\n tooltip=\"{{ 'Change icon' | translate }}\"\n placement=\"top\"\n [delay]=\"500\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"selectedIcon\"\n (click)=\"openIconSelector()\"\n >\n <i [c8yIcon]=\"'replace'\"></i>\n </button>\n <button\n class=\"btn btn-dot btn-dot--danger btn-icon btn-sm m-0\"\n [attr.aria-label]=\"'Remove icon and use default icon' | translate\"\n tooltip=\"{{ 'Remove icon and use default icon' | translate }}\"\n placement=\"top\"\n [delay]=\"500\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"selectedIcon && canRemoveIcon\"\n (click)=\"removeIcon()\"\n >\n <i [c8yIcon]=\"'trash'\"></i>\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule, DropAreaModule } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { IconNamePipe } from './icon-name.pipe';\nimport { IconSelectorModalComponent } from './icon-selector-modal/icon-selector-modal.component';\nimport { IconSelectorComponent } from './icon-selector.component';\nimport { IconSelectorWrapperComponent } from './icon-selector-wrapper/icon-selector-wrapper.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n DropAreaModule,\n TooltipModule,\n IconSelectorComponent,\n IconSelectorModalComponent,\n IconNamePipe,\n IconSelectorWrapperComponent\n ],\n exports: [\n IconSelectorComponent,\n IconSelectorModalComponent,\n IconNamePipe,\n IconSelectorWrapperComponent\n ]\n})\nexport class IconSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.IconSelectorService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-icon-selector.mjs","sources":["../../icon-selector/icon-name.pipe.ts","../../icon-selector/icon-selector.component.ts","../../icon-selector/icon-selector.component.html","../../icon-selector/icon-selector-modal/icon-selector-modal.component.ts","../../icon-selector/icon-selector-modal/icon-selector-modal.component.html","../../icon-selector/icon-selector.service.ts","../../icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.ts","../../icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.html","../../icon-selector/icon-selector.module.ts","../../icon-selector/c8y-ngx-components-icon-selector.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'iconName' })\nexport class IconNamePipe implements PipeTransform {\n transform(icon: string): string {\n if (icon.startsWith('c8y-')) {\n return icon.replace(/^c8y-/, '');\n }\n return icon;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest, defer, from } from 'rxjs';\nimport { debounceTime, map, shareReplay, startWith } from 'rxjs/operators';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { IconDirective, C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { clone } from 'lodash-es';\nimport { DefaultIconDefinition } from '@c8y/ngx-components/icon-selector/model';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\nimport { IconNamePipe } from './icon-name.pipe';\n\nconst allIconCategory = gettext('All`icons-category`');\n\n@Component({\n selector: 'c8y-icon-selector',\n templateUrl: './icon-selector.component.html',\n styleUrls: [],\n imports: [\n FormsModule,\n IconDirective,\n NgIf,\n C8yTranslateDirective,\n NgFor,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe,\n IconNamePipe\n ]\n})\nexport class IconSelectorComponent {\n @Input() iconCategoriesToExclude: string[] = [];\n @Input() showIconClass = true;\n @Output() onSelect = new EventEmitter<string>();\n @Input() selectedIcon: SupportedIconsSuggestions;\n\n icons$: Observable<DefaultIconDefinition[]>;\n filteredIcons$: Observable<DefaultIconDefinition[]>;\n searchTerm$ = new BehaviorSubject('');\n selectedIconCategory$ = new BehaviorSubject<string>(allIconCategory);\n availableIconCategories$: Observable<string[]>;\n\n constructor() {\n this.icons$ = defer(() => from(this.loadIconDefinitions())).pipe(\n map(icons => icons.filter(tmp => !this.iconCategoriesToExclude.includes(tmp.label))),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n this.filteredIcons$ = combineLatest([\n this.icons$,\n this.searchTerm$.pipe(debounceTime(500), startWith(this.searchTerm$.value)),\n this.selectedIconCategory$\n ]).pipe(\n map(([icons, searchTerm, category]) =>\n this.filterIconsByCategoryAndSearchTerm(icons, category, searchTerm)\n )\n );\n this.availableIconCategories$ = this.icons$.pipe(\n map(icons => [allIconCategory, ...icons.map(tmp => tmp.label)])\n );\n }\n\n async loadIconDefinitions(): Promise<DefaultIconDefinition[]> {\n const { allIcons } = await import('@c8y/ngx-components/icon-selector/icons');\n return allIcons;\n }\n\n filterIconsByCategoryAndSearchTerm(\n iconCategories: DefaultIconDefinition[],\n selectedCategory: string,\n searchTerm: string\n ): DefaultIconDefinition[] {\n if (selectedCategory !== allIconCategory) {\n iconCategories = iconCategories.filter(category => category.label === selectedCategory);\n }\n\n if (searchTerm) {\n const lowerCaseSearchTerm = searchTerm.toLowerCase();\n const matchingCategories = new Array<DefaultIconDefinition>();\n for (const category of iconCategories) {\n const matchingIcons = category.icons.filter(iconClasses =>\n iconClasses.some(iconClass => iconClass.includes(lowerCaseSearchTerm))\n );\n if (matchingIcons.length) {\n matchingCategories.push({ ...clone(category), icons: matchingIcons });\n }\n }\n return matchingCategories;\n }\n\n return iconCategories;\n }\n\n onSearchChange(searchTerm: string) {\n this.searchTerm$.next(searchTerm);\n }\n\n onCategoryFilterChanged(categoryChange: string): void {\n this.selectedIconCategory$.next(categoryChange);\n }\n\n onIconClicked(icon: ReadonlyArray<string>): void {\n this.selectedIcon = icon[0];\n this.onSelect.emit(icon[0]);\n }\n}\n","<div class=\"p-l-24 p-r-24 p-t-8 p-b-8 separator-bottom\">\n <div class=\"row d-flex-sm\">\n <div class=\"col-sm-6 m-b-8\">\n <div class=\"input-group-search input-group\" style=\"width: auto\">\n <input\n type=\"search\"\n class=\"form-control\"\n id=\"filter-icons\"\n [ngModel]=\"searchTerm$ | async\"\n (ngModelChange)=\"onSearchChange($event)\"\n placeholder=\"{{ 'Type to filter icons…' | translate }}\"\n />\n <ng-template #searchIcon>\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\"></i>\n </span>\n </ng-template>\n <span\n class=\"input-group-addon pointer\"\n *ngIf=\"searchTerm$ | async; else searchIcon\"\n (click)=\"onSearchChange('')\"\n >\n <i c8yIcon=\"times\"></i>\n </span>\n </div>\n </div>\n <div class=\"col-sm-6 m-b-8 text-right\">\n <div class=\"d-inline-flex a-i-center text-left\">\n <label class=\"m-b-0 m-r-8 flex-no-shrink\" translate>Filter by type</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"exampleSelect\"\n class=\"form-control\"\n [ngModel]=\"selectedIconCategory$ | async\"\n (ngModelChange)=\"onCategoryFilterChanged($event)\"\n >\n <option *ngFor=\"let category of availableIconCategories$ | async\" [ngValue]=\"category\">\n {{ category | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" style=\"height: calc(100vh - 293px)\">\n <div class=\"dtm-icon-grid\">\n <div *ngFor=\"let iconDefinition of filteredIcons$ | async\" class=\"d-contents\">\n <div class=\"legend form-block center grid__col--fullspan\">\n {{ iconDefinition.label | translate }}\n </div>\n\n <div class=\"d-contents\" *ngFor=\"let icon of iconDefinition.icons\">\n <div\n class=\"dtm-icon-grid__item\"\n [ngClass]=\"{\n 'dtm-icon-grid__item--selected': selectedIcon && icon[0] === selectedIcon\n }\"\n >\n <button (click)=\"onIconClicked(icon)\" class=\"dtm-icon-grid__btn\" [title]=\"icon[0] | iconName\">\n <i [c8yIcon]=\"icon[0]\" class=\"d-block icon-40\"></i>\n <small *ngIf=\"showIconClass\" class=\"text-break-word\">{{ icon[0] | iconName }}</small>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yTranslatePipe } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IconSelectorComponent } from '../icon-selector.component';\n\n@Component({\n selector: 'c8y-icon-selector-modal',\n templateUrl: './icon-selector-modal.component.html',\n imports: [IconSelectorComponent, C8yTranslatePipe]\n})\nexport class IconSelectorModalComponent {\n title: string = gettext('Select icon');\n currentSelection: string;\n saveButtonLabel: string = gettext('Select');\n iconCategoriesToExclude: string[] = [];\n showIconClass = true;\n\n readonly result: Promise<string> = new Promise((resolve, reject) => {\n this.save = resolve;\n this.cancel = reject;\n });\n\n private save: (value: string) => void;\n private cancel: (reason?: any) => void;\n\n constructor(private bsModal: BsModalRef) {}\n\n close() {\n this.bsModal.hide();\n this.cancel();\n }\n\n saveChanges(): void {\n this.bsModal.hide();\n this.save(this.currentSelection);\n }\n\n selectionChange(newSelection: string) {\n this.currentSelection = newSelection;\n }\n}\n","<div class=\"modal-header\">\n <div id=\"modal-title\" class=\"modal-title h4\">{{ title | translate }}</div>\n</div>\n<div id=\"modal-body\">\n <c8y-icon-selector\n (onSelect)=\"selectionChange($event)\"\n [selectedIcon]=\"currentSelection\"\n [iconCategoriesToExclude]=\"iconCategoriesToExclude\"\n [showIconClass]=\"showIconClass\"\n ></c8y-icon-selector>\n</div>\n<div class=\"modal-footer separator text-center\">\n <button class=\"btn btn-default\" (click)=\"close()\">\n {{ 'Cancel' | translate }}\n </button>\n <button class=\"btn btn-primary\" [disabled]=\"!currentSelection\" (click)=\"saveChanges()\">\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { IconSelectorModalComponent } from './icon-selector-modal/icon-selector-modal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class IconSelectorService {\n constructor(protected modal: BsModalService) {}\n\n selectIcon(\n initialState: Partial<\n Pick<\n IconSelectorModalComponent,\n | 'currentSelection'\n | 'title'\n | 'saveButtonLabel'\n | 'iconCategoriesToExclude'\n | 'showIconClass'\n >\n > = {}\n ): Promise<string> {\n const modal = this.modal.show(IconSelectorModalComponent, {\n ignoreBackdropClick: true,\n keyboard: false,\n initialState,\n class: 'modal-lg'\n });\n const content = modal.content as IconSelectorModalComponent;\n return content.result;\n }\n}\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconSelectorService } from '../icon-selector.service';\nimport { GainsightService, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ICON_SELECTOR } from '@c8y/ngx-components/icon-selector/model';\nimport { NgIf } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\n\n/**\n * A component which acts as a wrapper for the icon selector.\n *\n * Example 1:\n * ```\n <c8y-icon-selector-wrapper\n [selectedIcon]=\"'water'\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n * ```\n * OR as a part of a formGroup\n * Example 2:\n * ```\n <c8y-icon-selector-wrapper name=\"icon\" formControlName=\"icon\">\n </c8y-icon-selector-wrapper>\n * ```\n */\n@Component({\n selector: 'c8y-icon-selector-wrapper',\n templateUrl: './icon-selector-wrapper.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IconSelectorWrapperComponent),\n multi: true\n }\n ],\n imports: [NgIf, IconDirective, TooltipDirective, C8yTranslatePipe]\n})\nexport class IconSelectorWrapperComponent implements ControlValueAccessor {\n @Input() canRemoveIcon = false;\n @Input() selectedIcon: string;\n /**\n * The displayed icon size, the value has to be multiple of 8.\n */\n @Input() iconSize = 32;\n @Output() onSelect: EventEmitter<string> = new EventEmitter();\n\n /**\n * @ignore\n */\n onTouched: () => void;\n\n constructor(\n private iconSelector: IconSelectorService,\n private gainsightService: GainsightService\n ) {}\n\n /**\n * @ignore\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange: (value: string) => void = () => {};\n\n /**\n * @ignore\n * @param icon The value to update\n */\n writeValue(icon: string): void {\n this.selectedIcon = icon;\n }\n\n /**\n * @ignore\n * @param fn The function to register for changes\n */\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n /**\n * @ignore\n * @param fn The function to register for changes\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n removeIcon() {\n this.onSelect.emit(undefined);\n }\n\n async openIconSelector() {\n try {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_ICON_SELECTOR.EVENTS.ICON_SELECTOR, {\n component: PRODUCT_EXPERIENCE_ICON_SELECTOR.COMPONENTS.ICON_SELECTOR_WRAPPER_COMPONENT,\n action: PRODUCT_EXPERIENCE_ICON_SELECTOR.ACTIONS.OPEN_ICON_SELECTOR\n });\n const icon = await this.iconSelector.selectIcon({\n currentSelection: this.selectedIcon\n });\n this.onChange(icon);\n this.selectedIcon = icon;\n this.onSelect.emit(icon);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_ICON_SELECTOR.EVENTS.ICON_SELECTOR, {\n component: PRODUCT_EXPERIENCE_ICON_SELECTOR.COMPONENTS.ICON_SELECTOR_WRAPPER_COMPONENT,\n action: PRODUCT_EXPERIENCE_ICON_SELECTOR.ACTIONS.ICON_SELECTED\n });\n } catch {\n // nothing to do\n }\n }\n}\n","<div class=\"d-flex a-i-center j-c-center p-relative\">\n @if (selectedIcon) {\n <div class=\"icon-{{ iconSize }} text-center l-h-1 fit-w fit-h\">\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"selectedIcon\"\n ></i>\n </div>\n }\n\n @if (!selectedIcon) {\n <div\n class=\"icon-{{ iconSize }} text-muted text-center a-s-stretch fit-w\"\n style=\"border: 2px dashed var(--c8y-root-component-border-color)\"\n >\n <span class=\"d-flex a-i-center j-c-center text-12 fit-h\">\n <em>{{ 'Auto' | translate }}</em>\n </span>\n </div>\n }\n <div class=\"showOnHover d-flex j-c-center p-absolute fit-h fit-w\">\n @if (!selectedIcon) {\n <button\n class=\"btn btn-clean btn-icon btn-sm m-0\"\n title=\"{{ 'Select icon' | translate }}\"\n [attr.aria-label]=\"'Select icon' | translate\"\n type=\"button\"\n (click)=\"openIconSelector()\"\n >\n {{ 'Select' | translate }}\n </button>\n }\n @if (selectedIcon) {\n <button\n class=\"btn btn-dot btn-sm btn-icon m-0\"\n [attr.aria-label]=\"'Change icon' | translate\"\n tooltip=\"{{ 'Change icon' | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"openIconSelector()\"\n >\n <i [c8yIcon]=\"'replace'\"></i>\n </button>\n }\n @if (selectedIcon && canRemoveIcon) {\n <button\n class=\"btn btn-dot btn-dot--danger btn-icon btn-sm m-0\"\n [attr.aria-label]=\"'Remove icon and use default icon' | translate\"\n tooltip=\"{{ 'Remove icon and use default icon' | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"removeIcon()\"\n >\n <i [c8yIcon]=\"'trash'\"></i>\n </button>\n }\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule, DropAreaModule } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { IconNamePipe } from './icon-name.pipe';\nimport { IconSelectorModalComponent } from './icon-selector-modal/icon-selector-modal.component';\nimport { IconSelectorComponent } from './icon-selector.component';\nimport { IconSelectorWrapperComponent } from './icon-selector-wrapper/icon-selector-wrapper.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n DropAreaModule,\n TooltipModule,\n IconSelectorComponent,\n IconSelectorModalComponent,\n IconNamePipe,\n IconSelectorWrapperComponent\n ],\n exports: [\n IconSelectorComponent,\n IconSelectorModalComponent,\n IconNamePipe,\n IconSelectorWrapperComponent\n ]\n})\nexport class IconSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.IconSelectorService"],"mappings":"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"}
|
|
@@ -94,8 +94,8 @@ class IntervalPickerComponent {
|
|
|
94
94
|
setDisabledState(disabled) {
|
|
95
95
|
this.disabled = disabled;
|
|
96
96
|
}
|
|
97
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IntervalPickerComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: IntervalPickerComponent, isStandalone: true, selector: "c8y-interval-picker", inputs: { INTERVALS: "INTERVALS" }, providers: [
|
|
99
99
|
{
|
|
100
100
|
provide: NG_VALUE_ACCESSOR,
|
|
101
101
|
useExisting: forwardRef(() => IntervalPickerComponent),
|
|
@@ -103,7 +103,7 @@ class IntervalPickerComponent {
|
|
|
103
103
|
}
|
|
104
104
|
], ngImport: i0, template: "<li\n *ngFor=\"let interval of translatedIntervals\"\n [ngClass]=\"{\n active: interval.id === value\n }\"\n>\n <button\n type=\"button\"\n (click)=\"onChange(interval.id)\"\n >\n <span\n [ngClass]=\"{\n 'text-primary': interval.id === value\n }\"\n >\n <span\n c8yIcon=\"check\"\n [ngStyle]=\"{ visibility: interval.id === value ? 'visible' : 'hidden' }\"\n ></span>\n {{ interval.title }}\n </span>\n </button>\n</li>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: BsDropdownModule }] }); }
|
|
105
105
|
}
|
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IntervalPickerComponent, decorators: [{
|
|
107
107
|
type: Component,
|
|
108
108
|
args: [{ selector: 'c8y-interval-picker', standalone: true, imports: [CommonModule, FormsModule, A11yModule, ReactiveFormsModule, BsDropdownModule], providers: [
|
|
109
109
|
{
|
|
@@ -46,10 +46,10 @@ class AddLocationComponent {
|
|
|
46
46
|
this.router.navigateByUrl(route + '/location');
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationComponent, deps: [{ token: i1.InventoryService }, { token: i1$1.ContextRouteService }, { token: MAP_DEFAULT_CONFIG, optional: true }, { token: i3.Router }, { token: i1$1.AlertService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AddLocationComponent, isStandalone: true, selector: "c8y-add-location", viewQueries: [{ propertyName: "templateCopy", first: true, predicate: ["templateCopy"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #templateCopy>\n <button\n class=\"btn btn-link\"\n [title]=\"'Add location' | translate\"\n (click)=\"onClick()\"\n >\n <i c8yIcon=\"location-arrow\"></i>\n <span translate>Add location</span>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
51
51
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
54
|
args: [{ selector: 'c8y-add-location', imports: [IconDirective, C8yTranslateDirective, C8yTranslatePipe], template: "<ng-template #templateCopy>\n <button\n class=\"btn btn-link\"\n [title]=\"'Add location' | translate\"\n (click)=\"onClick()\"\n >\n <i c8yIcon=\"location-arrow\"></i>\n <span translate>Add location</span>\n </button>\n</ng-template>\n" }]
|
|
55
55
|
}], ctorParameters: () => [{ type: i1.InventoryService }, { type: i1$1.ContextRouteService }, { type: i4.Observable, decorators: [{
|
|
@@ -80,10 +80,10 @@ class AddLocationFactory {
|
|
|
80
80
|
return this.action;
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
84
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationFactory, deps: [{ token: i1$1.ContextRouteService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
84
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationFactory, providedIn: 'root' }); }
|
|
85
85
|
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationFactory, decorators: [{
|
|
87
87
|
type: Injectable,
|
|
88
88
|
args: [{ providedIn: 'root' }]
|
|
89
89
|
}], ctorParameters: () => [{ type: i1$1.ContextRouteService }] });
|
|
@@ -107,10 +107,10 @@ class LocationTabFactory {
|
|
|
107
107
|
}
|
|
108
108
|
return [];
|
|
109
109
|
}
|
|
110
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
111
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
110
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationTabFactory, deps: [{ token: i1$1.ContextRouteService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
111
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationTabFactory, providedIn: 'root' }); }
|
|
112
112
|
}
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationTabFactory, decorators: [{
|
|
114
114
|
type: Injectable,
|
|
115
115
|
args: [{
|
|
116
116
|
providedIn: 'root'
|
|
@@ -233,10 +233,10 @@ class LocationComponent {
|
|
|
233
233
|
});
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
237
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: LocationComponent, isStandalone: true, selector: "c8y-location", viewQueries: [{ propertyName: "map", first: true, predicate: MapComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item placement=\"right\">\n <button\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ 'Toggle realtime' | translate }}\"\n type=\"button\"\n (click)=\"toggleRealtime()\"\n >\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{ active: config.realtime, inactive: !config.realtime }\"\n ></span>\n <span translate>Realtime</span>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item placement=\"right\">\n <button\n class=\"btn btn-clean\"\n title=\"{{ 'Center`verb`' | translate }}\"\n (click)=\"centerMap()\"\n >\n <i [c8yIcon]=\"'target1'\"></i>\n <span translate>Center`verb`</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n <div\n class=\"bg-white p-relative\"\n style=\"min-height: 30vh\"\n >\n <c8y-map\n [assets]=\"[position]\"\n [config]=\"config\"\n (onRealtimeUpdate)=\"positionChanged($event)\"\n ></c8y-map>\n </div>\n\n <form\n class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\"\n #positionForm=\"ngForm\"\n (ngSubmit)=\"save()\"\n >\n <div class=\"card-header large-padding separator sticky-top\">\n <span\n class=\"card-title\"\n translate\n >\n Device location\n </span>\n </div>\n <div class=\"inner-scroll\">\n <div\n class=\"m-16\"\n *ngIf=\"!isEdit\"\n >\n <div class=\"p-b-40\">\n <div\n class=\"text-bold\"\n translate\n >\n Latitude (\u00B0)\n </div>\n {{ position.c8y_Position.lat }}\n </div>\n <div class=\"p-b-40\">\n <div\n class=\"text-bold\"\n translate\n >\n Longitude (\u00B0)\n </div>\n {{ position.c8y_Position.lng }}\n </div>\n <div class=\"p-b-40\">\n <div\n class=\"text-bold\"\n translate\n >\n Altitude (m)\n </div>\n {{ position.c8y_Position.alt }}\n </div>\n </div>\n <div\n class=\"m-16\"\n *ngIf=\"isEdit\"\n >\n <c8y-form-group>\n <label\n for=\"lat\"\n translate\n >\n Latitude (\u00B0)\n </label>\n\n <input\n class=\"form-control\"\n [title]=\"'Latitude (\u00B0)' | translate\"\n id=\"lat\"\n name=\"lat\"\n type=\"number\"\n required\n min=\"-90\"\n max=\"90\"\n (blur)=\"positionForm.valid && updateMarkerPosition()\"\n [(ngModel)]=\"position.c8y_Position.lat\"\n />\n <c8y-messages>\n <c8y-message\n name=\"min\"\n [text]=\"'The minimum latitude value is -90\u00B0.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"max\"\n [text]=\"'The maximum latitude value is 90\u00B0.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"lat\"\n translate\n >\n Longitude (\u00B0)\n </label>\n\n <input\n class=\"form-control\"\n [title]=\"'Longitude (\u00B0)' | translate\"\n id=\"lng\"\n name=\"lng\"\n type=\"number\"\n required\n min=\"-180\"\n max=\"180\"\n (blur)=\"positionForm.valid && updateMarkerPosition()\"\n [(ngModel)]=\"position.c8y_Position.lng\"\n />\n <c8y-messages>\n <c8y-message\n name=\"min\"\n [text]=\"'The minimum longitude value is -180\u00B0.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"max\"\n [text]=\"'The maximum longitude value is 180\u00B0.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"alt\"\n translate\n >\n Altitude (m)\n </label>\n\n <input\n class=\"form-control\"\n [title]=\"'Altitude (m)' | translate\"\n id=\"alt\"\n name=\"alt\"\n type=\"number\"\n [(ngModel)]=\"position.c8y_Position.alt\"\n />\n </c8y-form-group>\n </div>\n\n <form\n class=\"card-block bg-level-1\"\n #addressSearch=\"ngForm\"\n novalidate\n (submit)=\"searchAddress(addressSearchTerm)\"\n *ngIf=\"isEdit && !hideAddressSearchFeature\"\n >\n <div class=\"form-group\">\n <label\n for=\"searchAddress\"\n translate\n >\n Find lat/long by address\n </label>\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n id=\"searchAddress\"\n name=\"addressSearchTerm\"\n type=\"text\"\n [placeholder]=\"'e.g. Speditionstra\u00DFe 13, D\u00FCsseldorf`LOCALIZE`' | translate\"\n [(ngModel)]=\"addressSearchTerm\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"'Search' | translate\"\n type=\"submit\"\n >\n <i\n class=\"dlt-c8y-icon-search\"\n c8y-icon=\"search\"\n ></i>\n </button>\n </span>\n </div>\n </div>\n </form>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Edit location' | translate\"\n type=\"button\"\n *ngIf=\"canEdit && !isEdit\"\n (click)=\"edit()\"\n translate\n >\n Edit location\n </button>\n <button\n class=\"btn btn-default\"\n [title]=\"'Cancel' | translate\"\n type=\"button\"\n (click)=\"cancel()\"\n *ngIf=\"isEdit\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save' | translate\"\n type=\"submit\"\n *ngIf=\"isEdit\"\n translate\n [disabled]=\"!positionForm.valid\"\n >\n Save\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: MapComponent, selector: "c8y-map", inputs: ["config", "assets", "polyline$", "polylineOptions"], outputs: ["onRealtimeUpdate", "onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onMap", "onInit"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.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$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i4$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationComponent, deps: [{ token: i1$1.ContextRouteService }, { token: i3.ActivatedRoute }, { token: i1.InventoryService }, { token: i1$1.Permissions }, { token: i1$1.OptionsService }, { token: i1$1.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
237
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LocationComponent, isStandalone: true, selector: "c8y-location", viewQueries: [{ propertyName: "map", first: true, predicate: MapComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item placement=\"right\">\n <button\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ 'Toggle realtime' | translate }}\"\n type=\"button\"\n (click)=\"toggleRealtime()\"\n >\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{ active: config.realtime, inactive: !config.realtime }\"\n ></span>\n <span translate>Realtime</span>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item placement=\"right\">\n <button\n class=\"btn btn-clean\"\n title=\"{{ 'Center`verb`' | translate }}\"\n (click)=\"centerMap()\"\n >\n <i [c8yIcon]=\"'target1'\"></i>\n <span translate>Center`verb`</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n <div\n class=\"bg-white p-relative\"\n style=\"min-height: 30vh\"\n >\n <c8y-map\n [assets]=\"[position]\"\n [config]=\"config\"\n (onRealtimeUpdate)=\"positionChanged($event)\"\n ></c8y-map>\n </div>\n\n <form\n class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\"\n #positionForm=\"ngForm\"\n (ngSubmit)=\"save()\"\n >\n <div class=\"card-header large-padding separator sticky-top\">\n <span\n class=\"card-title\"\n translate\n >\n Device location\n </span>\n </div>\n <div class=\"inner-scroll\">\n <div\n class=\"m-16\"\n *ngIf=\"!isEdit\"\n >\n <div class=\"p-b-40\">\n <div\n class=\"text-bold\"\n translate\n >\n Latitude (\u00B0)\n </div>\n {{ position.c8y_Position.lat }}\n </div>\n <div class=\"p-b-40\">\n <div\n class=\"text-bold\"\n translate\n >\n Longitude (\u00B0)\n </div>\n {{ position.c8y_Position.lng }}\n </div>\n <div class=\"p-b-40\">\n <div\n class=\"text-bold\"\n translate\n >\n Altitude (m)\n </div>\n {{ position.c8y_Position.alt }}\n </div>\n </div>\n <div\n class=\"m-16\"\n *ngIf=\"isEdit\"\n >\n <c8y-form-group>\n <label\n for=\"lat\"\n translate\n >\n Latitude (\u00B0)\n </label>\n\n <input\n class=\"form-control\"\n [title]=\"'Latitude (\u00B0)' | translate\"\n id=\"lat\"\n name=\"lat\"\n type=\"number\"\n required\n min=\"-90\"\n max=\"90\"\n (blur)=\"positionForm.valid && updateMarkerPosition()\"\n [(ngModel)]=\"position.c8y_Position.lat\"\n />\n <c8y-messages>\n <c8y-message\n name=\"min\"\n [text]=\"'The minimum latitude value is -90\u00B0.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"max\"\n [text]=\"'The maximum latitude value is 90\u00B0.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"lat\"\n translate\n >\n Longitude (\u00B0)\n </label>\n\n <input\n class=\"form-control\"\n [title]=\"'Longitude (\u00B0)' | translate\"\n id=\"lng\"\n name=\"lng\"\n type=\"number\"\n required\n min=\"-180\"\n max=\"180\"\n (blur)=\"positionForm.valid && updateMarkerPosition()\"\n [(ngModel)]=\"position.c8y_Position.lng\"\n />\n <c8y-messages>\n <c8y-message\n name=\"min\"\n [text]=\"'The minimum longitude value is -180\u00B0.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"max\"\n [text]=\"'The maximum longitude value is 180\u00B0.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"alt\"\n translate\n >\n Altitude (m)\n </label>\n\n <input\n class=\"form-control\"\n [title]=\"'Altitude (m)' | translate\"\n id=\"alt\"\n name=\"alt\"\n type=\"number\"\n [(ngModel)]=\"position.c8y_Position.alt\"\n />\n </c8y-form-group>\n </div>\n\n <form\n class=\"card-block bg-level-1\"\n #addressSearch=\"ngForm\"\n novalidate\n (submit)=\"searchAddress(addressSearchTerm)\"\n *ngIf=\"isEdit && !hideAddressSearchFeature\"\n >\n <div class=\"form-group\">\n <label\n for=\"searchAddress\"\n translate\n >\n Find lat/long by address\n </label>\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n id=\"searchAddress\"\n name=\"addressSearchTerm\"\n type=\"text\"\n [placeholder]=\"'e.g. Speditionstra\u00DFe 13, D\u00FCsseldorf`LOCALIZE`' | translate\"\n [(ngModel)]=\"addressSearchTerm\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"'Search' | translate\"\n type=\"submit\"\n >\n <i\n class=\"dlt-c8y-icon-search\"\n c8y-icon=\"search\"\n ></i>\n </button>\n </span>\n </div>\n </div>\n </form>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Edit location' | translate\"\n type=\"button\"\n *ngIf=\"canEdit && !isEdit\"\n (click)=\"edit()\"\n translate\n >\n Edit location\n </button>\n <button\n class=\"btn btn-default\"\n [title]=\"'Cancel' | translate\"\n type=\"button\"\n (click)=\"cancel()\"\n *ngIf=\"isEdit\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save' | translate\"\n type=\"submit\"\n *ngIf=\"isEdit\"\n translate\n [disabled]=\"!positionForm.valid\"\n >\n Save\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: MapComponent, selector: "c8y-map", inputs: ["config", "assets", "polyline$", "polylineOptions"], outputs: ["onRealtimeUpdate", "onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onMap", "onInit"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.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$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i4$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
238
238
|
}
|
|
239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationComponent, decorators: [{
|
|
240
240
|
type: Component,
|
|
241
241
|
args: [{ selector: 'c8y-location', imports: [
|
|
242
242
|
ActionBarItemComponent,
|
|
@@ -260,9 +260,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
260
260
|
}] } });
|
|
261
261
|
|
|
262
262
|
class LocationRouteModule {
|
|
263
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
264
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
265
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
263
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationRouteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
264
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: LocationRouteModule, imports: [MapModule, CoreModule, RouterModule, LocationComponent], exports: [LocationComponent] }); }
|
|
265
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationRouteModule, providers: [
|
|
266
266
|
hookRoute({
|
|
267
267
|
path: 'location',
|
|
268
268
|
component: LocationComponent,
|
|
@@ -277,7 +277,7 @@ class LocationRouteModule {
|
|
|
277
277
|
})
|
|
278
278
|
], imports: [MapModule, CoreModule, RouterModule, LocationComponent] }); }
|
|
279
279
|
}
|
|
280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationRouteModule, decorators: [{
|
|
281
281
|
type: NgModule,
|
|
282
282
|
args: [{
|
|
283
283
|
imports: [MapModule, CoreModule, RouterModule, LocationComponent],
|
|
@@ -299,11 +299,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
299
299
|
}]
|
|
300
300
|
}] });
|
|
301
301
|
class LocationTabModule {
|
|
302
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
303
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
304
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
302
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
303
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: LocationTabModule, imports: [LocationRouteModule] }); }
|
|
304
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationTabModule, providers: [hookTab(LocationTabFactory)], imports: [LocationRouteModule] }); }
|
|
305
305
|
}
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationTabModule, decorators: [{
|
|
307
307
|
type: NgModule,
|
|
308
308
|
args: [{
|
|
309
309
|
imports: [LocationRouteModule],
|
|
@@ -324,22 +324,22 @@ class LocationModule {
|
|
|
324
324
|
providers: config.addLocation ? [hookActionBar(AddLocationFactory)] : []
|
|
325
325
|
};
|
|
326
326
|
}
|
|
327
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
328
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
329
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
327
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
328
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: LocationModule, imports: [LocationTabModule] }); }
|
|
329
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationModule, imports: [LocationTabModule] }); }
|
|
330
330
|
}
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
331
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocationModule, decorators: [{
|
|
332
332
|
type: NgModule,
|
|
333
333
|
args: [{
|
|
334
334
|
imports: [LocationTabModule]
|
|
335
335
|
}]
|
|
336
336
|
}] });
|
|
337
337
|
class AddLocationModule {
|
|
338
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
339
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
340
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
338
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
339
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AddLocationModule, imports: [CoreModule, LocationRouteModule, AddLocationComponent], exports: [AddLocationComponent] }); }
|
|
340
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationModule, providers: [hookActionBar(AddLocationFactory)], imports: [CoreModule, LocationRouteModule] }); }
|
|
341
341
|
}
|
|
342
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
342
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AddLocationModule, decorators: [{
|
|
343
343
|
type: NgModule,
|
|
344
344
|
args: [{
|
|
345
345
|
imports: [CoreModule, LocationRouteModule, AddLocationComponent],
|