@ind-ds/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/dist/cjs/ind-alarm.cjs.entry.js +35 -0
- package/dist/cjs/ind-alarm.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-app-header.cjs.entry.js +42 -0
- package/dist/cjs/ind-app-header.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-button.cjs.entry.js +79 -0
- package/dist/cjs/ind-button.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-checkbox.cjs.entry.js +49 -0
- package/dist/cjs/ind-checkbox.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-dialog.cjs.entry.js +101 -0
- package/dist/cjs/ind-dialog.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-divider.cjs.entry.js +21 -0
- package/dist/cjs/ind-divider.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-ds.cjs.js +27 -0
- package/dist/cjs/ind-ds.cjs.js.map +1 -0
- package/dist/cjs/ind-fill-row.cjs.entry.js +34 -0
- package/dist/cjs/ind-fill-row.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-health-card.cjs.entry.js +38 -0
- package/dist/cjs/ind-health-card.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-input.cjs.entry.js +57 -0
- package/dist/cjs/ind-input.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-led.cjs.entry.js +29 -0
- package/dist/cjs/ind-led.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-mqtt-monitor.cjs.entry.js +75 -0
- package/dist/cjs/ind-mqtt-monitor.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-nav-item.cjs.entry.js +48 -0
- package/dist/cjs/ind-nav-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-progress.cjs.entry.js +48 -0
- package/dist/cjs/ind-progress.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-scara-canvas.cjs.entry.js +57 -0
- package/dist/cjs/ind-scara-canvas.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-select.cjs.entry.js +55 -0
- package/dist/cjs/ind-select.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-shelf-canvas.cjs.entry.js +88 -0
- package/dist/cjs/ind-shelf-canvas.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-sidebar-nav.cjs.entry.js +20 -0
- package/dist/cjs/ind-sidebar-nav.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-status-bar.cjs.entry.js +22 -0
- package/dist/cjs/ind-status-bar.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-status-dot.cjs.entry.js +31 -0
- package/dist/cjs/ind-status-dot.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-textarea.cjs.entry.js +66 -0
- package/dist/cjs/ind-textarea.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-toolbar-action.cjs.entry.js +23 -0
- package/dist/cjs/ind-toolbar-action.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-value.cjs.entry.js +47 -0
- package/dist/cjs/ind-value.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-valve.cjs.entry.js +31 -0
- package/dist/cjs/ind-valve.cjs.entry.js.map +1 -0
- package/dist/cjs/index-ph7ZTjuY.js +1638 -0
- package/dist/cjs/index-ph7ZTjuY.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +15 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/collection/collection-manifest.json +35 -0
- package/dist/collection/components/atoms/alarm/alarm.css +87 -0
- package/dist/collection/components/atoms/alarm/alarm.js +122 -0
- package/dist/collection/components/atoms/alarm/alarm.js.map +1 -0
- package/dist/collection/components/atoms/button/button.css +110 -0
- package/dist/collection/components/atoms/button/button.js +215 -0
- package/dist/collection/components/atoms/button/button.js.map +1 -0
- package/dist/collection/components/atoms/checkbox/checkbox.css +92 -0
- package/dist/collection/components/atoms/checkbox/checkbox.js +214 -0
- package/dist/collection/components/atoms/checkbox/checkbox.js.map +1 -0
- package/dist/collection/components/atoms/dialog/dialog.css +85 -0
- package/dist/collection/components/atoms/dialog/dialog.js +265 -0
- package/dist/collection/components/atoms/dialog/dialog.js.map +1 -0
- package/dist/collection/components/atoms/divider/divider.css +16 -0
- package/dist/collection/components/atoms/divider/divider.js +50 -0
- package/dist/collection/components/atoms/divider/divider.js.map +1 -0
- package/dist/collection/components/atoms/input/input.css +92 -0
- package/dist/collection/components/atoms/input/input.js +427 -0
- package/dist/collection/components/atoms/input/input.js.map +1 -0
- package/dist/collection/components/atoms/led/led.css +91 -0
- package/dist/collection/components/atoms/led/led.js +123 -0
- package/dist/collection/components/atoms/led/led.js.map +1 -0
- package/dist/collection/components/atoms/progress/progress.css +69 -0
- package/dist/collection/components/atoms/progress/progress.js +221 -0
- package/dist/collection/components/atoms/progress/progress.js.map +1 -0
- package/dist/collection/components/atoms/scara-canvas/scara-canvas.css +100 -0
- package/dist/collection/components/atoms/scara-canvas/scara-canvas.js +138 -0
- package/dist/collection/components/atoms/scara-canvas/scara-canvas.js.map +1 -0
- package/dist/collection/components/atoms/select/select.css +88 -0
- package/dist/collection/components/atoms/select/select.js +244 -0
- package/dist/collection/components/atoms/select/select.js.map +1 -0
- package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.css +67 -0
- package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.js +184 -0
- package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.js.map +1 -0
- package/dist/collection/components/atoms/status-dot/status-dot.css +69 -0
- package/dist/collection/components/atoms/status-dot/status-dot.js +125 -0
- package/dist/collection/components/atoms/status-dot/status-dot.js.map +1 -0
- package/dist/collection/components/atoms/textarea/textarea.css +74 -0
- package/dist/collection/components/atoms/textarea/textarea.js +331 -0
- package/dist/collection/components/atoms/textarea/textarea.js.map +1 -0
- package/dist/collection/components/atoms/value/value.css +115 -0
- package/dist/collection/components/atoms/value/value.js +223 -0
- package/dist/collection/components/atoms/value/value.js.map +1 -0
- package/dist/collection/components/atoms/valve/valve.css +101 -0
- package/dist/collection/components/atoms/valve/valve.js +150 -0
- package/dist/collection/components/atoms/valve/valve.js.map +1 -0
- package/dist/collection/components/molecules/fill-row/fill-row.css +70 -0
- package/dist/collection/components/molecules/fill-row/fill-row.js +181 -0
- package/dist/collection/components/molecules/fill-row/fill-row.js.map +1 -0
- package/dist/collection/components/molecules/health-card/health-card.css +53 -0
- package/dist/collection/components/molecules/health-card/health-card.js +124 -0
- package/dist/collection/components/molecules/health-card/health-card.js.map +1 -0
- package/dist/collection/components/molecules/nav-item/nav-item.css +82 -0
- package/dist/collection/components/molecules/nav-item/nav-item.js +165 -0
- package/dist/collection/components/molecules/nav-item/nav-item.js.map +1 -0
- package/dist/collection/components/molecules/toolbar-action/toolbar-action.css +36 -0
- package/dist/collection/components/molecules/toolbar-action/toolbar-action.js +45 -0
- package/dist/collection/components/molecules/toolbar-action/toolbar-action.js.map +1 -0
- package/dist/collection/components/organisms/app-header/app-header.css +127 -0
- package/dist/collection/components/organisms/app-header/app-header.js +256 -0
- package/dist/collection/components/organisms/app-header/app-header.js.map +1 -0
- package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.css +96 -0
- package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.js +205 -0
- package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.js.map +1 -0
- package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.css +39 -0
- package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.js +26 -0
- package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.js.map +1 -0
- package/dist/collection/components/organisms/status-bar/status-bar.css +34 -0
- package/dist/collection/components/organisms/status-bar/status-bar.js +76 -0
- package/dist/collection/components/organisms/status-bar/status-bar.js.map +1 -0
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/components/ind-alarm.d.ts +11 -0
- package/dist/components/ind-alarm.js +2 -0
- package/dist/components/ind-alarm.js.map +1 -0
- package/dist/components/ind-app-header.d.ts +11 -0
- package/dist/components/ind-app-header.js +2 -0
- package/dist/components/ind-app-header.js.map +1 -0
- package/dist/components/ind-button.d.ts +11 -0
- package/dist/components/ind-button.js +2 -0
- package/dist/components/ind-button.js.map +1 -0
- package/dist/components/ind-checkbox.d.ts +11 -0
- package/dist/components/ind-checkbox.js +2 -0
- package/dist/components/ind-checkbox.js.map +1 -0
- package/dist/components/ind-dialog.d.ts +11 -0
- package/dist/components/ind-dialog.js +2 -0
- package/dist/components/ind-dialog.js.map +1 -0
- package/dist/components/ind-divider.d.ts +11 -0
- package/dist/components/ind-divider.js +2 -0
- package/dist/components/ind-divider.js.map +1 -0
- package/dist/components/ind-fill-row.d.ts +11 -0
- package/dist/components/ind-fill-row.js +2 -0
- package/dist/components/ind-fill-row.js.map +1 -0
- package/dist/components/ind-health-card.d.ts +11 -0
- package/dist/components/ind-health-card.js +2 -0
- package/dist/components/ind-health-card.js.map +1 -0
- package/dist/components/ind-input.d.ts +11 -0
- package/dist/components/ind-input.js +2 -0
- package/dist/components/ind-input.js.map +1 -0
- package/dist/components/ind-led.d.ts +11 -0
- package/dist/components/ind-led.js +2 -0
- package/dist/components/ind-led.js.map +1 -0
- package/dist/components/ind-mqtt-monitor.d.ts +11 -0
- package/dist/components/ind-mqtt-monitor.js +2 -0
- package/dist/components/ind-mqtt-monitor.js.map +1 -0
- package/dist/components/ind-nav-item.d.ts +11 -0
- package/dist/components/ind-nav-item.js +2 -0
- package/dist/components/ind-nav-item.js.map +1 -0
- package/dist/components/ind-progress.d.ts +11 -0
- package/dist/components/ind-progress.js +2 -0
- package/dist/components/ind-progress.js.map +1 -0
- package/dist/components/ind-scara-canvas.d.ts +11 -0
- package/dist/components/ind-scara-canvas.js +2 -0
- package/dist/components/ind-scara-canvas.js.map +1 -0
- package/dist/components/ind-select.d.ts +11 -0
- package/dist/components/ind-select.js +2 -0
- package/dist/components/ind-select.js.map +1 -0
- package/dist/components/ind-shelf-canvas.d.ts +11 -0
- package/dist/components/ind-shelf-canvas.js +2 -0
- package/dist/components/ind-shelf-canvas.js.map +1 -0
- package/dist/components/ind-sidebar-nav.d.ts +11 -0
- package/dist/components/ind-sidebar-nav.js +2 -0
- package/dist/components/ind-sidebar-nav.js.map +1 -0
- package/dist/components/ind-status-bar.d.ts +11 -0
- package/dist/components/ind-status-bar.js +2 -0
- package/dist/components/ind-status-bar.js.map +1 -0
- package/dist/components/ind-status-dot.d.ts +11 -0
- package/dist/components/ind-status-dot.js +2 -0
- package/dist/components/ind-status-dot.js.map +1 -0
- package/dist/components/ind-textarea.d.ts +11 -0
- package/dist/components/ind-textarea.js +2 -0
- package/dist/components/ind-textarea.js.map +1 -0
- package/dist/components/ind-toolbar-action.d.ts +11 -0
- package/dist/components/ind-toolbar-action.js +2 -0
- package/dist/components/ind-toolbar-action.js.map +1 -0
- package/dist/components/ind-value.d.ts +11 -0
- package/dist/components/ind-value.js +2 -0
- package/dist/components/ind-value.js.map +1 -0
- package/dist/components/ind-valve.d.ts +11 -0
- package/dist/components/ind-valve.js +2 -0
- package/dist/components/ind-valve.js.map +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/p-D-FsSjAC.js +2 -0
- package/dist/components/p-D-FsSjAC.js.map +1 -0
- package/dist/components/p-acsAzrRn.js +2 -0
- package/dist/components/p-acsAzrRn.js.map +1 -0
- package/dist/docs.d.ts +480 -0
- package/dist/docs.json +5360 -0
- package/dist/esm/ind-alarm.entry.js +33 -0
- package/dist/esm/ind-alarm.entry.js.map +1 -0
- package/dist/esm/ind-app-header.entry.js +40 -0
- package/dist/esm/ind-app-header.entry.js.map +1 -0
- package/dist/esm/ind-button.entry.js +77 -0
- package/dist/esm/ind-button.entry.js.map +1 -0
- package/dist/esm/ind-checkbox.entry.js +47 -0
- package/dist/esm/ind-checkbox.entry.js.map +1 -0
- package/dist/esm/ind-dialog.entry.js +99 -0
- package/dist/esm/ind-dialog.entry.js.map +1 -0
- package/dist/esm/ind-divider.entry.js +19 -0
- package/dist/esm/ind-divider.entry.js.map +1 -0
- package/dist/esm/ind-ds.js +23 -0
- package/dist/esm/ind-ds.js.map +1 -0
- package/dist/esm/ind-fill-row.entry.js +32 -0
- package/dist/esm/ind-fill-row.entry.js.map +1 -0
- package/dist/esm/ind-health-card.entry.js +36 -0
- package/dist/esm/ind-health-card.entry.js.map +1 -0
- package/dist/esm/ind-input.entry.js +55 -0
- package/dist/esm/ind-input.entry.js.map +1 -0
- package/dist/esm/ind-led.entry.js +27 -0
- package/dist/esm/ind-led.entry.js.map +1 -0
- package/dist/esm/ind-mqtt-monitor.entry.js +73 -0
- package/dist/esm/ind-mqtt-monitor.entry.js.map +1 -0
- package/dist/esm/ind-nav-item.entry.js +46 -0
- package/dist/esm/ind-nav-item.entry.js.map +1 -0
- package/dist/esm/ind-progress.entry.js +46 -0
- package/dist/esm/ind-progress.entry.js.map +1 -0
- package/dist/esm/ind-scara-canvas.entry.js +55 -0
- package/dist/esm/ind-scara-canvas.entry.js.map +1 -0
- package/dist/esm/ind-select.entry.js +53 -0
- package/dist/esm/ind-select.entry.js.map +1 -0
- package/dist/esm/ind-shelf-canvas.entry.js +86 -0
- package/dist/esm/ind-shelf-canvas.entry.js.map +1 -0
- package/dist/esm/ind-sidebar-nav.entry.js +18 -0
- package/dist/esm/ind-sidebar-nav.entry.js.map +1 -0
- package/dist/esm/ind-status-bar.entry.js +20 -0
- package/dist/esm/ind-status-bar.entry.js.map +1 -0
- package/dist/esm/ind-status-dot.entry.js +29 -0
- package/dist/esm/ind-status-dot.entry.js.map +1 -0
- package/dist/esm/ind-textarea.entry.js +64 -0
- package/dist/esm/ind-textarea.entry.js.map +1 -0
- package/dist/esm/ind-toolbar-action.entry.js +21 -0
- package/dist/esm/ind-toolbar-action.entry.js.map +1 -0
- package/dist/esm/ind-value.entry.js +45 -0
- package/dist/esm/ind-value.entry.js.map +1 -0
- package/dist/esm/ind-valve.entry.js +29 -0
- package/dist/esm/ind-valve.entry.js.map +1 -0
- package/dist/esm/index-D2yNiL0d.js +1628 -0
- package/dist/esm/index-D2yNiL0d.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/ind-ds/ind-ds.css +1 -0
- package/dist/ind-ds/ind-ds.esm.js +2 -0
- package/dist/ind-ds/ind-ds.esm.js.map +1 -0
- package/dist/ind-ds/index.esm.js +2 -0
- package/dist/ind-ds/index.esm.js.map +1 -0
- package/dist/ind-ds/p-0840007d.entry.js +2 -0
- package/dist/ind-ds/p-0840007d.entry.js.map +1 -0
- package/dist/ind-ds/p-1727b403.entry.js +2 -0
- package/dist/ind-ds/p-1727b403.entry.js.map +1 -0
- package/dist/ind-ds/p-1d871f3f.entry.js +2 -0
- package/dist/ind-ds/p-1d871f3f.entry.js.map +1 -0
- package/dist/ind-ds/p-296b0c55.entry.js +2 -0
- package/dist/ind-ds/p-296b0c55.entry.js.map +1 -0
- package/dist/ind-ds/p-459405b6.entry.js +2 -0
- package/dist/ind-ds/p-459405b6.entry.js.map +1 -0
- package/dist/ind-ds/p-4a4811ab.entry.js +2 -0
- package/dist/ind-ds/p-4a4811ab.entry.js.map +1 -0
- package/dist/ind-ds/p-52b18003.entry.js +2 -0
- package/dist/ind-ds/p-52b18003.entry.js.map +1 -0
- package/dist/ind-ds/p-5369d63a.entry.js +2 -0
- package/dist/ind-ds/p-5369d63a.entry.js.map +1 -0
- package/dist/ind-ds/p-595ccdce.entry.js +2 -0
- package/dist/ind-ds/p-595ccdce.entry.js.map +1 -0
- package/dist/ind-ds/p-6c5c8053.entry.js +2 -0
- package/dist/ind-ds/p-6c5c8053.entry.js.map +1 -0
- package/dist/ind-ds/p-6c8f4bbd.entry.js +2 -0
- package/dist/ind-ds/p-6c8f4bbd.entry.js.map +1 -0
- package/dist/ind-ds/p-781e21df.entry.js +2 -0
- package/dist/ind-ds/p-781e21df.entry.js.map +1 -0
- package/dist/ind-ds/p-8817625a.entry.js +2 -0
- package/dist/ind-ds/p-8817625a.entry.js.map +1 -0
- package/dist/ind-ds/p-99f55d2a.entry.js +2 -0
- package/dist/ind-ds/p-99f55d2a.entry.js.map +1 -0
- package/dist/ind-ds/p-9b93fb09.entry.js +2 -0
- package/dist/ind-ds/p-9b93fb09.entry.js.map +1 -0
- package/dist/ind-ds/p-D2yNiL0d.js +3 -0
- package/dist/ind-ds/p-D2yNiL0d.js.map +1 -0
- package/dist/ind-ds/p-c8de42e9.entry.js +2 -0
- package/dist/ind-ds/p-c8de42e9.entry.js.map +1 -0
- package/dist/ind-ds/p-c9f752e6.entry.js +2 -0
- package/dist/ind-ds/p-c9f752e6.entry.js.map +1 -0
- package/dist/ind-ds/p-cee8bf2b.entry.js +2 -0
- package/dist/ind-ds/p-cee8bf2b.entry.js.map +1 -0
- package/dist/ind-ds/p-cf07b580.entry.js +2 -0
- package/dist/ind-ds/p-cf07b580.entry.js.map +1 -0
- package/dist/ind-ds/p-d1edc052.entry.js +2 -0
- package/dist/ind-ds/p-d1edc052.entry.js.map +1 -0
- package/dist/ind-ds/p-ea24a59d.entry.js +2 -0
- package/dist/ind-ds/p-ea24a59d.entry.js.map +1 -0
- package/dist/ind-ds/p-ec0b3785.entry.js +2 -0
- package/dist/ind-ds/p-ec0b3785.entry.js.map +1 -0
- package/dist/ind-ds/p-ee453874.entry.js +2 -0
- package/dist/ind-ds/p-ee453874.entry.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/types/components/atoms/alarm/alarm.d.ts +13 -0
- package/dist/types/components/atoms/button/button.d.ts +31 -0
- package/dist/types/components/atoms/checkbox/checkbox.d.ts +18 -0
- package/dist/types/components/atoms/dialog/dialog.d.ts +29 -0
- package/dist/types/components/atoms/divider/divider.d.ts +6 -0
- package/dist/types/components/atoms/input/input.d.ts +34 -0
- package/dist/types/components/atoms/led/led.d.ts +14 -0
- package/dist/types/components/atoms/progress/progress.d.ts +24 -0
- package/dist/types/components/atoms/scara-canvas/scara-canvas.d.ts +21 -0
- package/dist/types/components/atoms/select/select.d.ts +27 -0
- package/dist/types/components/atoms/shelf-canvas/shelf-canvas.d.ts +29 -0
- package/dist/types/components/atoms/status-dot/status-dot.d.ts +14 -0
- package/dist/types/components/atoms/textarea/textarea.d.ts +28 -0
- package/dist/types/components/atoms/value/value.d.ts +24 -0
- package/dist/types/components/atoms/valve/valve.d.ts +17 -0
- package/dist/types/components/molecules/fill-row/fill-row.d.ts +19 -0
- package/dist/types/components/molecules/health-card/health-card.d.ts +13 -0
- package/dist/types/components/molecules/nav-item/nav-item.d.ts +17 -0
- package/dist/types/components/molecules/toolbar-action/toolbar-action.d.ts +6 -0
- package/dist/types/components/organisms/app-header/app-header.d.ts +26 -0
- package/dist/types/components/organisms/mqtt-monitor/mqtt-monitor.d.ts +23 -0
- package/dist/types/components/organisms/sidebar-nav/sidebar-nav.d.ts +11 -0
- package/dist/types/components/organisms/status-bar/status-bar.d.ts +13 -0
- package/dist/types/components.d.ts +1775 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/stencil-public-runtime.d.ts +1861 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +87 -0
- package/utilities.css +324 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
export class IndAppHeader {
|
|
3
|
+
/** Brand name (uppercase by convention). */
|
|
4
|
+
brand;
|
|
5
|
+
/** Sub-brand line (e.g. "Maintenance Console"). */
|
|
6
|
+
subBrand;
|
|
7
|
+
/** Machine identifier shown next to the brand. */
|
|
8
|
+
machineId;
|
|
9
|
+
/** Broker / realtime connection state — drives the dot. */
|
|
10
|
+
mqttState = 'neutral';
|
|
11
|
+
/** Label rendered next to the dot (e.g. "Connected"). */
|
|
12
|
+
mqttLabel;
|
|
13
|
+
/** App version (e.g. "v1.4.2"). */
|
|
14
|
+
version;
|
|
15
|
+
/** Documentation URL. */
|
|
16
|
+
docsUrl;
|
|
17
|
+
/** Hide the built-in "Change machine" button. */
|
|
18
|
+
hideChangeMachine = false;
|
|
19
|
+
/** Hide the built-in "Disconnect" button. */
|
|
20
|
+
hideDisconnect = false;
|
|
21
|
+
indChangeMachine;
|
|
22
|
+
indDisconnect;
|
|
23
|
+
render() {
|
|
24
|
+
return (h(Host, { key: 'c65d79c697786cf1e17f3d13a1f5475da46e66ac', role: "banner" }, h("div", { key: '4c17ab40581251748f4bfbdceb8553d736b9288b', class: "brand", part: "brand" }, h("slot", { key: '2e4a11be914770ce6cf3b2e2a4cf7e92fbd95702', name: "logo" }, h("span", { key: 'ff2a98d37c5153a9169b188a2e77d24f49a505e5', class: "brand-logo", "aria-hidden": "true" }, "\u2B22")), h("div", { key: 'a679a938ab050aa8e2c326a88e905563134fbbc5', class: "brand-text" }, h("span", { key: '19b941fba9c4d7dbbda39242f3c6afb543c5ef6a', class: "brand-name" }, this.brand), this.subBrand && h("span", { key: 'd77217db67b0384df179638cbf98ae38697a7071', class: "brand-sub" }, this.subBrand))), this.machineId && (h("div", { key: '1e40da6c490185efe7423b1b82d5a5e56cd4cb9a', class: "machine", part: "machine" }, h("span", { key: '5ca76acc4d270e8f6adc12d0077f1371e136aded', class: "machine-label" }, "Machine"), h("span", { key: 'a10840b72441bb7adabd0f152332bfa9e081eff5', class: "machine-id" }, this.machineId))), h("div", { key: '5cfbdeb0e191cdbfa679fd0a1e205c4544065b10', class: "mqtt", part: "mqtt" }, h("ind-status-dot", { key: 'b80758c2a80a27b362651cd1251c92d3b510212e', state: this.mqttState, size: "md" }), this.mqttLabel && h("span", { key: 'a443524b51f9950e068bc815bc4e89f52bc9c296', class: "mqtt-label" }, this.mqttLabel)), h("span", { key: '84028540ba07e5f4b400e9694a2c102c0ffcb618', class: "spacer" }), h("div", { key: '42e07d1726547c318367423708e9fd7078a771ed', class: "meta", part: "meta" }, this.version && h("span", { key: '9fc02e0f44f50126554fa70e127bf5e1819b09ee', class: "version" }, this.version), this.docsUrl && (h("a", { key: '3839f6149b334591551124f4bb5eb296d0f4a296', class: "docs", href: this.docsUrl, target: "_blank", rel: "noopener noreferrer" }, "Documentation"))), h("div", { key: '4265851f62d3f66518a9e07b32933974a301376b', class: "actions", part: "actions" }, h("slot", { key: 'dffb5909cf929b3c04e47d598e746a6caf8d55f5', name: "actions" }, !this.hideChangeMachine && (h("button", { key: '824c0c0b5419753e50d8ba002dee057ba2ec2b46', type: "button", class: "action", onClick: () => this.indChangeMachine.emit() }, "Change machine")), !this.hideDisconnect && (h("button", { key: '5269a1bed2754ca7f7bfd83f0f431cae2d4c1bf5', type: "button", class: "action action--danger", onClick: () => this.indDisconnect.emit() }, "Disconnect"))))));
|
|
25
|
+
}
|
|
26
|
+
static get is() { return "ind-app-header"; }
|
|
27
|
+
static get encapsulation() { return "shadow"; }
|
|
28
|
+
static get originalStyleUrls() {
|
|
29
|
+
return {
|
|
30
|
+
"$": ["app-header.css"]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
static get styleUrls() {
|
|
34
|
+
return {
|
|
35
|
+
"$": ["app-header.css"]
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
static get properties() {
|
|
39
|
+
return {
|
|
40
|
+
"brand": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"mutable": false,
|
|
43
|
+
"complexType": {
|
|
44
|
+
"original": "string",
|
|
45
|
+
"resolved": "string",
|
|
46
|
+
"references": {}
|
|
47
|
+
},
|
|
48
|
+
"required": true,
|
|
49
|
+
"optional": false,
|
|
50
|
+
"docs": {
|
|
51
|
+
"tags": [],
|
|
52
|
+
"text": "Brand name (uppercase by convention)."
|
|
53
|
+
},
|
|
54
|
+
"getter": false,
|
|
55
|
+
"setter": false,
|
|
56
|
+
"reflect": false,
|
|
57
|
+
"attribute": "brand"
|
|
58
|
+
},
|
|
59
|
+
"subBrand": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"mutable": false,
|
|
62
|
+
"complexType": {
|
|
63
|
+
"original": "string",
|
|
64
|
+
"resolved": "string | undefined",
|
|
65
|
+
"references": {}
|
|
66
|
+
},
|
|
67
|
+
"required": false,
|
|
68
|
+
"optional": true,
|
|
69
|
+
"docs": {
|
|
70
|
+
"tags": [],
|
|
71
|
+
"text": "Sub-brand line (e.g. \"Maintenance Console\")."
|
|
72
|
+
},
|
|
73
|
+
"getter": false,
|
|
74
|
+
"setter": false,
|
|
75
|
+
"reflect": false,
|
|
76
|
+
"attribute": "sub-brand"
|
|
77
|
+
},
|
|
78
|
+
"machineId": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"mutable": false,
|
|
81
|
+
"complexType": {
|
|
82
|
+
"original": "string",
|
|
83
|
+
"resolved": "string | undefined",
|
|
84
|
+
"references": {}
|
|
85
|
+
},
|
|
86
|
+
"required": false,
|
|
87
|
+
"optional": true,
|
|
88
|
+
"docs": {
|
|
89
|
+
"tags": [],
|
|
90
|
+
"text": "Machine identifier shown next to the brand."
|
|
91
|
+
},
|
|
92
|
+
"getter": false,
|
|
93
|
+
"setter": false,
|
|
94
|
+
"reflect": false,
|
|
95
|
+
"attribute": "machine-id"
|
|
96
|
+
},
|
|
97
|
+
"mqttState": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"mutable": false,
|
|
100
|
+
"complexType": {
|
|
101
|
+
"original": "AppHeaderConnectionState",
|
|
102
|
+
"resolved": "\"fault\" | \"maintenance\" | \"neutral\" | \"running\" | \"stopped\" | \"warning\"",
|
|
103
|
+
"references": {
|
|
104
|
+
"AppHeaderConnectionState": {
|
|
105
|
+
"location": "local",
|
|
106
|
+
"path": "C:/www/ind-ds/packages/core/src/components/organisms/app-header/app-header.tsx",
|
|
107
|
+
"id": "src/components/organisms/app-header/app-header.tsx::AppHeaderConnectionState"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"required": false,
|
|
112
|
+
"optional": false,
|
|
113
|
+
"docs": {
|
|
114
|
+
"tags": [],
|
|
115
|
+
"text": "Broker / realtime connection state \u2014 drives the dot."
|
|
116
|
+
},
|
|
117
|
+
"getter": false,
|
|
118
|
+
"setter": false,
|
|
119
|
+
"reflect": false,
|
|
120
|
+
"attribute": "mqtt-state",
|
|
121
|
+
"defaultValue": "'neutral'"
|
|
122
|
+
},
|
|
123
|
+
"mqttLabel": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"mutable": false,
|
|
126
|
+
"complexType": {
|
|
127
|
+
"original": "string",
|
|
128
|
+
"resolved": "string | undefined",
|
|
129
|
+
"references": {}
|
|
130
|
+
},
|
|
131
|
+
"required": false,
|
|
132
|
+
"optional": true,
|
|
133
|
+
"docs": {
|
|
134
|
+
"tags": [],
|
|
135
|
+
"text": "Label rendered next to the dot (e.g. \"Connected\")."
|
|
136
|
+
},
|
|
137
|
+
"getter": false,
|
|
138
|
+
"setter": false,
|
|
139
|
+
"reflect": false,
|
|
140
|
+
"attribute": "mqtt-label"
|
|
141
|
+
},
|
|
142
|
+
"version": {
|
|
143
|
+
"type": "string",
|
|
144
|
+
"mutable": false,
|
|
145
|
+
"complexType": {
|
|
146
|
+
"original": "string",
|
|
147
|
+
"resolved": "string | undefined",
|
|
148
|
+
"references": {}
|
|
149
|
+
},
|
|
150
|
+
"required": false,
|
|
151
|
+
"optional": true,
|
|
152
|
+
"docs": {
|
|
153
|
+
"tags": [],
|
|
154
|
+
"text": "App version (e.g. \"v1.4.2\")."
|
|
155
|
+
},
|
|
156
|
+
"getter": false,
|
|
157
|
+
"setter": false,
|
|
158
|
+
"reflect": false,
|
|
159
|
+
"attribute": "version"
|
|
160
|
+
},
|
|
161
|
+
"docsUrl": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"mutable": false,
|
|
164
|
+
"complexType": {
|
|
165
|
+
"original": "string",
|
|
166
|
+
"resolved": "string | undefined",
|
|
167
|
+
"references": {}
|
|
168
|
+
},
|
|
169
|
+
"required": false,
|
|
170
|
+
"optional": true,
|
|
171
|
+
"docs": {
|
|
172
|
+
"tags": [],
|
|
173
|
+
"text": "Documentation URL."
|
|
174
|
+
},
|
|
175
|
+
"getter": false,
|
|
176
|
+
"setter": false,
|
|
177
|
+
"reflect": false,
|
|
178
|
+
"attribute": "docs-url"
|
|
179
|
+
},
|
|
180
|
+
"hideChangeMachine": {
|
|
181
|
+
"type": "boolean",
|
|
182
|
+
"mutable": false,
|
|
183
|
+
"complexType": {
|
|
184
|
+
"original": "boolean",
|
|
185
|
+
"resolved": "boolean",
|
|
186
|
+
"references": {}
|
|
187
|
+
},
|
|
188
|
+
"required": false,
|
|
189
|
+
"optional": false,
|
|
190
|
+
"docs": {
|
|
191
|
+
"tags": [],
|
|
192
|
+
"text": "Hide the built-in \"Change machine\" button."
|
|
193
|
+
},
|
|
194
|
+
"getter": false,
|
|
195
|
+
"setter": false,
|
|
196
|
+
"reflect": false,
|
|
197
|
+
"attribute": "hide-change-machine",
|
|
198
|
+
"defaultValue": "false"
|
|
199
|
+
},
|
|
200
|
+
"hideDisconnect": {
|
|
201
|
+
"type": "boolean",
|
|
202
|
+
"mutable": false,
|
|
203
|
+
"complexType": {
|
|
204
|
+
"original": "boolean",
|
|
205
|
+
"resolved": "boolean",
|
|
206
|
+
"references": {}
|
|
207
|
+
},
|
|
208
|
+
"required": false,
|
|
209
|
+
"optional": false,
|
|
210
|
+
"docs": {
|
|
211
|
+
"tags": [],
|
|
212
|
+
"text": "Hide the built-in \"Disconnect\" button."
|
|
213
|
+
},
|
|
214
|
+
"getter": false,
|
|
215
|
+
"setter": false,
|
|
216
|
+
"reflect": false,
|
|
217
|
+
"attribute": "hide-disconnect",
|
|
218
|
+
"defaultValue": "false"
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
static get events() {
|
|
223
|
+
return [{
|
|
224
|
+
"method": "indChangeMachine",
|
|
225
|
+
"name": "indChangeMachine",
|
|
226
|
+
"bubbles": true,
|
|
227
|
+
"cancelable": true,
|
|
228
|
+
"composed": true,
|
|
229
|
+
"docs": {
|
|
230
|
+
"tags": [],
|
|
231
|
+
"text": ""
|
|
232
|
+
},
|
|
233
|
+
"complexType": {
|
|
234
|
+
"original": "void",
|
|
235
|
+
"resolved": "void",
|
|
236
|
+
"references": {}
|
|
237
|
+
}
|
|
238
|
+
}, {
|
|
239
|
+
"method": "indDisconnect",
|
|
240
|
+
"name": "indDisconnect",
|
|
241
|
+
"bubbles": true,
|
|
242
|
+
"cancelable": true,
|
|
243
|
+
"composed": true,
|
|
244
|
+
"docs": {
|
|
245
|
+
"tags": [],
|
|
246
|
+
"text": ""
|
|
247
|
+
},
|
|
248
|
+
"complexType": {
|
|
249
|
+
"original": "void",
|
|
250
|
+
"resolved": "void",
|
|
251
|
+
"references": {}
|
|
252
|
+
}
|
|
253
|
+
}];
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=app-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-header.js","sourceRoot":"","sources":["../../../../src/components/organisms/app-header/app-header.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, Event, EventEmitter, h, Host } from '@stencil/core';\n\nexport type AppHeaderConnectionState =\n | 'running' | 'fault' | 'warning' | 'maintenance' | 'stopped' | 'neutral';\n\n@Component({\n tag: 'ind-app-header',\n styleUrl: 'app-header.css',\n shadow: true,\n})\nexport class IndAppHeader {\n /** Brand name (uppercase by convention). */\n @Prop() brand!: string;\n /** Sub-brand line (e.g. \"Maintenance Console\"). */\n @Prop() subBrand?: string;\n /** Machine identifier shown next to the brand. */\n @Prop() machineId?: string;\n /** Broker / realtime connection state — drives the dot. */\n @Prop() mqttState: AppHeaderConnectionState = 'neutral';\n /** Label rendered next to the dot (e.g. \"Connected\"). */\n @Prop() mqttLabel?: string;\n /** App version (e.g. \"v1.4.2\"). */\n @Prop() version?: string;\n /** Documentation URL. */\n @Prop() docsUrl?: string;\n /** Hide the built-in \"Change machine\" button. */\n @Prop() hideChangeMachine: boolean = false;\n /** Hide the built-in \"Disconnect\" button. */\n @Prop() hideDisconnect: boolean = false;\n\n @Event() indChangeMachine!: EventEmitter<void>;\n @Event() indDisconnect!: EventEmitter<void>;\n\n render() {\n return (\n <Host role=\"banner\">\n <div class=\"brand\" part=\"brand\">\n <slot name=\"logo\">\n <span class=\"brand-logo\" aria-hidden=\"true\">⬢</span>\n </slot>\n <div class=\"brand-text\">\n <span class=\"brand-name\">{this.brand}</span>\n {this.subBrand && <span class=\"brand-sub\">{this.subBrand}</span>}\n </div>\n </div>\n\n {this.machineId && (\n <div class=\"machine\" part=\"machine\">\n <span class=\"machine-label\">Machine</span>\n <span class=\"machine-id\">{this.machineId}</span>\n </div>\n )}\n\n <div class=\"mqtt\" part=\"mqtt\">\n <ind-status-dot state={this.mqttState} size=\"md\" />\n {this.mqttLabel && <span class=\"mqtt-label\">{this.mqttLabel}</span>}\n </div>\n\n <span class=\"spacer\" />\n\n <div class=\"meta\" part=\"meta\">\n {this.version && <span class=\"version\">{this.version}</span>}\n {this.docsUrl && (\n <a class=\"docs\" href={this.docsUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n Documentation\n </a>\n )}\n </div>\n\n <div class=\"actions\" part=\"actions\">\n <slot name=\"actions\">\n {!this.hideChangeMachine && (\n <button\n type=\"button\"\n class=\"action\"\n onClick={() => this.indChangeMachine.emit()}\n >Change machine</button>\n )}\n {!this.hideDisconnect && (\n <button\n type=\"button\"\n class=\"action action--danger\"\n onClick={() => this.indDisconnect.emit()}\n >Disconnect</button>\n )}\n </slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
font-family: var(--ind-font-family-sans);
|
|
5
|
+
background: var(--ind-surface-panel);
|
|
6
|
+
border: 1px solid var(--ind-surface-border-default);
|
|
7
|
+
border-radius: var(--ind-radius-md, 3px);
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.toolbar {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: var(--ind-spacing-4, 8px);
|
|
16
|
+
padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);
|
|
17
|
+
border-bottom: 1px solid var(--ind-surface-border-default);
|
|
18
|
+
flex-wrap: wrap;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.filter {
|
|
22
|
+
flex: 1;
|
|
23
|
+
min-width: 200px;
|
|
24
|
+
height: var(--ind-size-input-sm, 24px);
|
|
25
|
+
padding: 0 var(--ind-spacing-4, 8px);
|
|
26
|
+
background: var(--ind-surface-sunken);
|
|
27
|
+
border: 1px solid var(--ind-surface-border-default);
|
|
28
|
+
border-radius: var(--ind-radius-md, 3px);
|
|
29
|
+
font: inherit;
|
|
30
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
31
|
+
color: inherit;
|
|
32
|
+
outline: none;
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
}
|
|
35
|
+
.filter::placeholder {
|
|
36
|
+
color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
|
|
37
|
+
}
|
|
38
|
+
.filter:focus {
|
|
39
|
+
border-color: var(--ind-surface-focus-ring);
|
|
40
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring) 35%, transparent);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.check {
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
gap: var(--ind-spacing-2, 4px);
|
|
47
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
48
|
+
cursor: pointer;
|
|
49
|
+
user-select: none;
|
|
50
|
+
white-space: nowrap;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.spacer { flex: 1; }
|
|
54
|
+
|
|
55
|
+
.counter {
|
|
56
|
+
font-family: var(--ind-font-family-mono);
|
|
57
|
+
font-feature-settings: var(--ind-font-feature-tabular, "tnum" 1);
|
|
58
|
+
color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));
|
|
59
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
60
|
+
white-space: nowrap;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.clear {
|
|
64
|
+
height: var(--ind-size-button-sm, 26px);
|
|
65
|
+
padding: 0 var(--ind-spacing-5, 12px);
|
|
66
|
+
background: var(--ind-button-default-bg);
|
|
67
|
+
color: var(--ind-button-default-fg);
|
|
68
|
+
border: 1px solid var(--ind-button-default-border);
|
|
69
|
+
border-radius: var(--ind-radius-md, 3px);
|
|
70
|
+
font: inherit;
|
|
71
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
72
|
+
font-weight: var(--ind-font-weight-semibold, 600);
|
|
73
|
+
cursor: pointer;
|
|
74
|
+
}
|
|
75
|
+
.clear:hover { background: var(--ind-button-default-bg-hover); }
|
|
76
|
+
.clear:focus-visible {
|
|
77
|
+
outline: 2px solid var(--ind-surface-focus-ring);
|
|
78
|
+
outline-offset: 2px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.log {
|
|
82
|
+
flex: 1;
|
|
83
|
+
width: 100%;
|
|
84
|
+
box-sizing: border-box;
|
|
85
|
+
padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);
|
|
86
|
+
background: var(--ind-color-palette-neutral-0, #000);
|
|
87
|
+
color: var(--ind-color-palette-neutral-800, #d0d7e0);
|
|
88
|
+
border: none;
|
|
89
|
+
outline: none;
|
|
90
|
+
font-family: var(--ind-font-family-mono);
|
|
91
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
92
|
+
line-height: var(--ind-font-line-height-normal, 1.4);
|
|
93
|
+
font-feature-settings: var(--ind-font-feature-tabular, "tnum" 1);
|
|
94
|
+
resize: vertical;
|
|
95
|
+
cursor: default;
|
|
96
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { h, Host, } from "@stencil/core";
|
|
2
|
+
export class IndMqttMonitor {
|
|
3
|
+
host;
|
|
4
|
+
/** Full log content. Newline-separated lines. */
|
|
5
|
+
log = '';
|
|
6
|
+
/** Active filter — substring match on each line, case-insensitive. */
|
|
7
|
+
filterValue = '';
|
|
8
|
+
/** When true, the log doesn't auto-scroll on new content. */
|
|
9
|
+
paused = false;
|
|
10
|
+
/** Visible rows of the log textarea. */
|
|
11
|
+
rows = 18;
|
|
12
|
+
indFilterChange;
|
|
13
|
+
indPauseChange;
|
|
14
|
+
indClear;
|
|
15
|
+
componentDidLoad() {
|
|
16
|
+
this.scrollToBottom();
|
|
17
|
+
}
|
|
18
|
+
onLogChange() {
|
|
19
|
+
if (!this.paused)
|
|
20
|
+
this.scrollToBottom();
|
|
21
|
+
}
|
|
22
|
+
scrollToBottom() {
|
|
23
|
+
requestAnimationFrame(() => {
|
|
24
|
+
const ta = this.host.shadowRoot?.querySelector('.log');
|
|
25
|
+
if (ta)
|
|
26
|
+
ta.scrollTop = ta.scrollHeight;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
filteredLines() {
|
|
30
|
+
const lines = this.log.split('\n');
|
|
31
|
+
if (!this.filterValue)
|
|
32
|
+
return lines;
|
|
33
|
+
const f = this.filterValue.toLowerCase();
|
|
34
|
+
return lines.filter((l) => l.toLowerCase().includes(f));
|
|
35
|
+
}
|
|
36
|
+
onFilter = (e) => {
|
|
37
|
+
const v = e.target.value;
|
|
38
|
+
this.filterValue = v;
|
|
39
|
+
this.indFilterChange.emit(v);
|
|
40
|
+
};
|
|
41
|
+
onPause = (e) => {
|
|
42
|
+
const v = e.target.checked;
|
|
43
|
+
this.paused = v;
|
|
44
|
+
this.indPauseChange.emit(v);
|
|
45
|
+
};
|
|
46
|
+
render() {
|
|
47
|
+
const filtered = this.filteredLines();
|
|
48
|
+
const total = this.log ? this.log.split('\n').filter((l) => l.length > 0).length : 0;
|
|
49
|
+
const visible = filtered.filter((l) => l.length > 0).length;
|
|
50
|
+
const countLabel = this.filterValue ? `${visible} / ${total} msg` : `${total} msg`;
|
|
51
|
+
return (h(Host, { key: '611c593c0c13009b372c0f3d8077c363c9801b97' }, h("div", { key: '6552180414c9c06bf728b6d94eaa4ec282f9ecc9', class: "toolbar", part: "toolbar" }, h("input", { key: '715c06c1dcd91764b619093804bd52dd9ebb512c', class: "filter", part: "filter", type: "search", placeholder: "Filter topic / payload...", value: this.filterValue, onInput: this.onFilter }), h("label", { key: 'c7fc734cd7d0e08d28191804852ef7bf11ed01c7', class: "check" }, h("input", { key: '6b250678c32e5e83b2925275cdd44579cf682933', type: "checkbox", checked: this.paused, onChange: this.onPause }), h("span", { key: '77f2a59bd50c2a8c48c27a719730ba2efc5e5b9e' }, "Pause")), h("span", { key: 'eb60e89a998c60548f62d982691ffbdc1ce08eb7', class: "spacer" }), h("span", { key: '298521f0328cb32523d63dd3a45248575313b6f6', class: "counter", part: "counter" }, countLabel), h("button", { key: '32a5aa35b0e622e8fac010a79bbd30cb434ba09e', type: "button", class: "clear", part: "clear", onClick: () => this.indClear.emit() }, "Clear")), h("textarea", { key: '7ca66e1a42cdd672faae4d14004af23c2cae7bae', class: "log", part: "log", readonly: true, rows: this.rows }, filtered.join('\n'))));
|
|
52
|
+
}
|
|
53
|
+
static get is() { return "ind-mqtt-monitor"; }
|
|
54
|
+
static get encapsulation() { return "shadow"; }
|
|
55
|
+
static get originalStyleUrls() {
|
|
56
|
+
return {
|
|
57
|
+
"$": ["mqtt-monitor.css"]
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
static get styleUrls() {
|
|
61
|
+
return {
|
|
62
|
+
"$": ["mqtt-monitor.css"]
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
static get properties() {
|
|
66
|
+
return {
|
|
67
|
+
"log": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"mutable": false,
|
|
70
|
+
"complexType": {
|
|
71
|
+
"original": "string",
|
|
72
|
+
"resolved": "string",
|
|
73
|
+
"references": {}
|
|
74
|
+
},
|
|
75
|
+
"required": false,
|
|
76
|
+
"optional": false,
|
|
77
|
+
"docs": {
|
|
78
|
+
"tags": [],
|
|
79
|
+
"text": "Full log content. Newline-separated lines."
|
|
80
|
+
},
|
|
81
|
+
"getter": false,
|
|
82
|
+
"setter": false,
|
|
83
|
+
"reflect": false,
|
|
84
|
+
"attribute": "log",
|
|
85
|
+
"defaultValue": "''"
|
|
86
|
+
},
|
|
87
|
+
"filterValue": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"mutable": true,
|
|
90
|
+
"complexType": {
|
|
91
|
+
"original": "string",
|
|
92
|
+
"resolved": "string",
|
|
93
|
+
"references": {}
|
|
94
|
+
},
|
|
95
|
+
"required": false,
|
|
96
|
+
"optional": false,
|
|
97
|
+
"docs": {
|
|
98
|
+
"tags": [],
|
|
99
|
+
"text": "Active filter \u2014 substring match on each line, case-insensitive."
|
|
100
|
+
},
|
|
101
|
+
"getter": false,
|
|
102
|
+
"setter": false,
|
|
103
|
+
"reflect": false,
|
|
104
|
+
"attribute": "filter-value",
|
|
105
|
+
"defaultValue": "''"
|
|
106
|
+
},
|
|
107
|
+
"paused": {
|
|
108
|
+
"type": "boolean",
|
|
109
|
+
"mutable": true,
|
|
110
|
+
"complexType": {
|
|
111
|
+
"original": "boolean",
|
|
112
|
+
"resolved": "boolean",
|
|
113
|
+
"references": {}
|
|
114
|
+
},
|
|
115
|
+
"required": false,
|
|
116
|
+
"optional": false,
|
|
117
|
+
"docs": {
|
|
118
|
+
"tags": [],
|
|
119
|
+
"text": "When true, the log doesn't auto-scroll on new content."
|
|
120
|
+
},
|
|
121
|
+
"getter": false,
|
|
122
|
+
"setter": false,
|
|
123
|
+
"reflect": false,
|
|
124
|
+
"attribute": "paused",
|
|
125
|
+
"defaultValue": "false"
|
|
126
|
+
},
|
|
127
|
+
"rows": {
|
|
128
|
+
"type": "number",
|
|
129
|
+
"mutable": false,
|
|
130
|
+
"complexType": {
|
|
131
|
+
"original": "number",
|
|
132
|
+
"resolved": "number",
|
|
133
|
+
"references": {}
|
|
134
|
+
},
|
|
135
|
+
"required": false,
|
|
136
|
+
"optional": false,
|
|
137
|
+
"docs": {
|
|
138
|
+
"tags": [],
|
|
139
|
+
"text": "Visible rows of the log textarea."
|
|
140
|
+
},
|
|
141
|
+
"getter": false,
|
|
142
|
+
"setter": false,
|
|
143
|
+
"reflect": false,
|
|
144
|
+
"attribute": "rows",
|
|
145
|
+
"defaultValue": "18"
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
static get events() {
|
|
150
|
+
return [{
|
|
151
|
+
"method": "indFilterChange",
|
|
152
|
+
"name": "indFilterChange",
|
|
153
|
+
"bubbles": true,
|
|
154
|
+
"cancelable": true,
|
|
155
|
+
"composed": true,
|
|
156
|
+
"docs": {
|
|
157
|
+
"tags": [],
|
|
158
|
+
"text": ""
|
|
159
|
+
},
|
|
160
|
+
"complexType": {
|
|
161
|
+
"original": "string",
|
|
162
|
+
"resolved": "string",
|
|
163
|
+
"references": {}
|
|
164
|
+
}
|
|
165
|
+
}, {
|
|
166
|
+
"method": "indPauseChange",
|
|
167
|
+
"name": "indPauseChange",
|
|
168
|
+
"bubbles": true,
|
|
169
|
+
"cancelable": true,
|
|
170
|
+
"composed": true,
|
|
171
|
+
"docs": {
|
|
172
|
+
"tags": [],
|
|
173
|
+
"text": ""
|
|
174
|
+
},
|
|
175
|
+
"complexType": {
|
|
176
|
+
"original": "boolean",
|
|
177
|
+
"resolved": "boolean",
|
|
178
|
+
"references": {}
|
|
179
|
+
}
|
|
180
|
+
}, {
|
|
181
|
+
"method": "indClear",
|
|
182
|
+
"name": "indClear",
|
|
183
|
+
"bubbles": true,
|
|
184
|
+
"cancelable": true,
|
|
185
|
+
"composed": true,
|
|
186
|
+
"docs": {
|
|
187
|
+
"tags": [],
|
|
188
|
+
"text": ""
|
|
189
|
+
},
|
|
190
|
+
"complexType": {
|
|
191
|
+
"original": "void",
|
|
192
|
+
"resolved": "void",
|
|
193
|
+
"references": {}
|
|
194
|
+
}
|
|
195
|
+
}];
|
|
196
|
+
}
|
|
197
|
+
static get elementRef() { return "host"; }
|
|
198
|
+
static get watchers() {
|
|
199
|
+
return [{
|
|
200
|
+
"propName": "log",
|
|
201
|
+
"methodName": "onLogChange"
|
|
202
|
+
}];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=mqtt-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mqtt-monitor.js","sourceRoot":"","sources":["../../../../src/components/organisms/mqtt-monitor/mqtt-monitor.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n} from '@stencil/core';\n\n@Component({\n tag: 'ind-mqtt-monitor',\n styleUrl: 'mqtt-monitor.css',\n shadow: true,\n})\nexport class IndMqttMonitor {\n @Element() host!: HTMLElement;\n\n /** Full log content. Newline-separated lines. */\n @Prop() log: string = '';\n /** Active filter — substring match on each line, case-insensitive. */\n @Prop({ mutable: true }) filterValue: string = '';\n /** When true, the log doesn't auto-scroll on new content. */\n @Prop({ mutable: true }) paused: boolean = false;\n /** Visible rows of the log textarea. */\n @Prop() rows: number = 18;\n\n @Event() indFilterChange!: EventEmitter<string>;\n @Event() indPauseChange!: EventEmitter<boolean>;\n @Event() indClear!: EventEmitter<void>;\n\n componentDidLoad() {\n this.scrollToBottom();\n }\n\n @Watch('log')\n onLogChange() {\n if (!this.paused) this.scrollToBottom();\n }\n\n private scrollToBottom() {\n requestAnimationFrame(() => {\n const ta = this.host.shadowRoot?.querySelector<HTMLTextAreaElement>('.log');\n if (ta) ta.scrollTop = ta.scrollHeight;\n });\n }\n\n private filteredLines(): string[] {\n const lines = this.log.split('\\n');\n if (!this.filterValue) return lines;\n const f = this.filterValue.toLowerCase();\n return lines.filter((l) => l.toLowerCase().includes(f));\n }\n\n private onFilter = (e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n this.filterValue = v;\n this.indFilterChange.emit(v);\n };\n\n private onPause = (e: Event) => {\n const v = (e.target as HTMLInputElement).checked;\n this.paused = v;\n this.indPauseChange.emit(v);\n };\n\n render() {\n const filtered = this.filteredLines();\n const total = this.log ? this.log.split('\\n').filter((l) => l.length > 0).length : 0;\n const visible = filtered.filter((l) => l.length > 0).length;\n const countLabel = this.filterValue ? `${visible} / ${total} msg` : `${total} msg`;\n return (\n <Host>\n <div class=\"toolbar\" part=\"toolbar\">\n <input\n class=\"filter\"\n part=\"filter\"\n type=\"search\"\n placeholder=\"Filter topic / payload...\"\n value={this.filterValue}\n onInput={this.onFilter}\n />\n <label class=\"check\">\n <input type=\"checkbox\" checked={this.paused} onChange={this.onPause} />\n <span>Pause</span>\n </label>\n <span class=\"spacer\" />\n <span class=\"counter\" part=\"counter\">{countLabel}</span>\n <button\n type=\"button\"\n class=\"clear\"\n part=\"clear\"\n onClick={() => this.indClear.emit()}\n >Clear</button>\n </div>\n <textarea\n class=\"log\"\n part=\"log\"\n readonly\n rows={this.rows}\n >{filtered.join('\\n')}</textarea>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
width: var(--ind-size-sidebar-width, 178px);
|
|
5
|
+
height: 100%;
|
|
6
|
+
background: var(--ind-surface-panel);
|
|
7
|
+
border-right: 1px solid var(--ind-surface-border-default);
|
|
8
|
+
font-family: var(--ind-font-family-sans);
|
|
9
|
+
color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));
|
|
10
|
+
flex-shrink: 0;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.brand {
|
|
15
|
+
padding: var(--ind-spacing-4, 8px) var(--ind-spacing-5, 12px);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.brand:has(> :nth-child(1):empty),
|
|
19
|
+
.brand:not(:has(*)) { display: none; }
|
|
20
|
+
|
|
21
|
+
.items {
|
|
22
|
+
flex: 1;
|
|
23
|
+
overflow-y: auto;
|
|
24
|
+
padding: var(--ind-spacing-2, 4px) 0;
|
|
25
|
+
scrollbar-width: thin;
|
|
26
|
+
scrollbar-color: var(--ind-surface-border-strong) transparent;
|
|
27
|
+
}
|
|
28
|
+
.items::-webkit-scrollbar { width: 8px; }
|
|
29
|
+
.items::-webkit-scrollbar-thumb { background: var(--ind-surface-border-strong); border-radius: 4px; }
|
|
30
|
+
.items::-webkit-scrollbar-track { background: transparent; }
|
|
31
|
+
|
|
32
|
+
.footer {
|
|
33
|
+
padding: var(--ind-spacing-3, 6px) var(--ind-spacing-5, 12px);
|
|
34
|
+
border-top: 1px solid var(--ind-surface-border-subtle);
|
|
35
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
36
|
+
color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.footer:not(:has(*)) { display: none; }
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* Sidebar shell: a brand area on top, a scrollable nav list, and a footer area.
|
|
4
|
+
*
|
|
5
|
+
* State management is left to the consumer — drive `active` on each <ind-nav-item>
|
|
6
|
+
* from your router. The component is intentionally thin so it works with any
|
|
7
|
+
* routing approach (React Router, Vue Router, hash-based, none).
|
|
8
|
+
*/
|
|
9
|
+
export class IndSidebarNav {
|
|
10
|
+
render() {
|
|
11
|
+
return (h(Host, { key: '3ffd6c6d8afe2ed104b24ad1435d7a1d163c5071', role: "navigation" }, h("div", { key: '2a56d85274fca7043d8e5624a93cb99c8767fc74', class: "brand", part: "brand" }, h("slot", { key: 'd185e1c6570b33648700dd922e671f023b3d34fc', name: "brand" })), h("div", { key: '31aaa48b8e08549a3a4990cbe4ae74507b0a8ccb', class: "items", part: "items" }, h("slot", { key: '4ddb250ed915874ea6114588ab336e662526383f' })), h("div", { key: 'd666ea3f666be22246d6f2e2464a85b741b4bfed', class: "footer", part: "footer" }, h("slot", { key: 'fff6600b601ec97d47f2a79b983d0a7ef261db33', name: "footer" }))));
|
|
12
|
+
}
|
|
13
|
+
static get is() { return "ind-sidebar-nav"; }
|
|
14
|
+
static get encapsulation() { return "shadow"; }
|
|
15
|
+
static get originalStyleUrls() {
|
|
16
|
+
return {
|
|
17
|
+
"$": ["sidebar-nav.css"]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
static get styleUrls() {
|
|
21
|
+
return {
|
|
22
|
+
"$": ["sidebar-nav.css"]
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sidebar-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-nav.js","sourceRoot":"","sources":["../../../../src/components/organisms/sidebar-nav/sidebar-nav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;GAMG;AAMH,MAAM,OAAO,aAAa;IACxB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,IAAI,EAAC,YAAY;YACrB,4DAAK,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO;gBAC7B,6DAAM,IAAI,EAAC,OAAO,GAAG,CACjB;YACN,4DAAK,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO;gBAC7B,8DAAQ,CACJ;YACN,4DAAK,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ;gBAC/B,6DAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host } from '@stencil/core';\n\n/**\n * Sidebar shell: a brand area on top, a scrollable nav list, and a footer area.\n *\n * State management is left to the consumer — drive `active` on each <ind-nav-item>\n * from your router. The component is intentionally thin so it works with any\n * routing approach (React Router, Vue Router, hash-based, none).\n */\n@Component({\n tag: 'ind-sidebar-nav',\n styleUrl: 'sidebar-nav.css',\n shadow: true,\n})\nexport class IndSidebarNav {\n render() {\n return (\n <Host role=\"navigation\">\n <div class=\"brand\" part=\"brand\">\n <slot name=\"brand\" />\n </div>\n <div class=\"items\" part=\"items\">\n <slot />\n </div>\n <div class=\"footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </Host>\n );\n }\n}\n"]}
|