@nuraly/lumenui 0.2.1 → 0.2.2
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/dist/nuralyui.bundle.js +2010 -1271
- package/dist/nuralyui.bundle.js.gz +0 -0
- package/dist/src/components/button/controllers/base.controller.d.ts +15 -0
- package/dist/src/components/button/controllers/base.controller.js +13 -0
- package/dist/src/components/button/controllers/index.d.ts +10 -0
- package/dist/src/components/button/controllers/index.js +10 -0
- package/dist/src/components/button/controllers/keyboard.controller.d.ts +32 -0
- package/dist/src/components/button/controllers/keyboard.controller.js +78 -0
- package/dist/src/components/button/controllers/link.controller.d.ts +30 -0
- package/dist/src/components/button/controllers/link.controller.js +75 -0
- package/dist/src/components/button/controllers/ripple.controller.d.ts +23 -0
- package/dist/src/components/button/controllers/ripple.controller.js +69 -0
- package/dist/src/components/button/interfaces/base-controller.interface.d.ts +61 -0
- package/dist/src/components/button/interfaces/base-controller.interface.js +7 -0
- package/dist/src/components/button/interfaces/index.d.ts +2 -0
- package/dist/src/components/button/interfaces/index.js +2 -0
- package/dist/src/components/button/test/nr-button_test.d.ts +2 -0
- package/dist/src/components/button/test/nr-button_test.js +91 -0
- package/dist/src/components/canvas/base-canvas.component.d.ts +2 -1
- package/dist/src/components/canvas/base-canvas.component.js +6 -0
- package/dist/src/components/canvas/bundle.js +702 -475
- package/dist/src/components/canvas/bundle.js.gz +0 -0
- package/dist/src/components/canvas/chatbot-panel.style.js +50 -59
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.component.d.ts +115 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.component.js +480 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.style.d.ts +7 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.style.js +323 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger.types.d.ts +162 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger.types.js +88 -0
- package/dist/src/components/canvas/chatbot-trigger/index.d.ts +9 -0
- package/dist/src/components/canvas/chatbot-trigger/index.js +12 -0
- package/dist/src/components/canvas/controllers/base.controller.d.ts +53 -0
- package/dist/src/components/canvas/controllers/base.controller.js +80 -0
- package/dist/src/components/canvas/controllers/clipboard.controller.d.ts +80 -0
- package/dist/src/components/canvas/controllers/clipboard.controller.js +300 -0
- package/dist/src/components/canvas/controllers/collaboration.controller.d.ts +54 -0
- package/dist/src/components/canvas/controllers/collaboration.controller.js +425 -0
- package/dist/src/components/canvas/controllers/config.controller.d.ts +61 -0
- package/dist/src/components/canvas/controllers/config.controller.js +118 -0
- package/dist/src/components/canvas/controllers/connection.controller.d.ts +69 -0
- package/dist/src/components/canvas/controllers/connection.controller.js +183 -0
- package/dist/src/components/canvas/controllers/drag.controller.d.ts +56 -0
- package/dist/src/components/canvas/controllers/drag.controller.js +195 -0
- package/dist/src/components/canvas/controllers/frame.controller.d.ts +94 -0
- package/dist/src/components/canvas/controllers/frame.controller.js +456 -0
- package/dist/src/components/canvas/controllers/index.d.ts +19 -0
- package/dist/src/components/canvas/controllers/index.js +32 -0
- package/dist/src/components/canvas/controllers/keyboard.controller.d.ts +44 -0
- package/dist/src/components/canvas/controllers/keyboard.controller.js +275 -0
- package/dist/src/components/canvas/controllers/marquee.controller.d.ts +71 -0
- package/dist/src/components/canvas/controllers/marquee.controller.js +128 -0
- package/dist/src/components/canvas/controllers/selection.controller.d.ts +85 -0
- package/dist/src/components/canvas/controllers/selection.controller.js +202 -0
- package/dist/src/components/canvas/controllers/touch.controller.d.ts +55 -0
- package/dist/src/components/canvas/controllers/touch.controller.js +299 -0
- package/dist/src/components/canvas/controllers/undo.controller.d.ts +100 -0
- package/dist/src/components/canvas/controllers/undo.controller.js +218 -0
- package/dist/src/components/canvas/controllers/viewport.controller.d.ts +91 -0
- package/dist/src/components/canvas/controllers/viewport.controller.js +287 -0
- package/dist/src/components/canvas/data-node/data-node-config.component.d.ts +67 -0
- package/dist/src/components/canvas/data-node/data-node-config.component.js +496 -0
- package/dist/src/components/canvas/data-node/data-node-fields.component.d.ts +198 -0
- package/dist/src/components/canvas/data-node/data-node-fields.component.js +931 -0
- package/dist/src/components/canvas/data-node/data-node-fields.style.d.ts +7 -0
- package/dist/src/components/canvas/data-node/data-node-fields.style.js +448 -0
- package/dist/src/components/canvas/data-node/data-node.types.d.ts +245 -0
- package/dist/src/components/canvas/data-node/data-node.types.js +158 -0
- package/dist/src/components/canvas/data-node/index.d.ts +9 -0
- package/dist/src/components/canvas/data-node/index.js +12 -0
- package/dist/src/components/canvas/data-node/schema-select.component.d.ts +36 -0
- package/dist/src/components/canvas/data-node/schema-select.component.js +196 -0
- package/dist/src/components/canvas/data-node/table-select.component.d.ts +38 -0
- package/dist/src/components/canvas/data-node/table-select.component.js +199 -0
- package/dist/src/components/canvas/interfaces/canvas-host.interface.d.ts +91 -0
- package/dist/src/components/canvas/interfaces/canvas-host.interface.js +7 -0
- package/dist/src/components/canvas/interfaces/collaboration.interface.d.ts +58 -0
- package/dist/src/components/canvas/interfaces/collaboration.interface.js +10 -0
- package/dist/src/components/canvas/interfaces/index.d.ts +8 -0
- package/dist/src/components/canvas/interfaces/index.js +7 -0
- package/dist/src/components/canvas/templates/chatbot-panel.template.d.ts +28 -0
- package/dist/src/components/canvas/templates/chatbot-panel.template.js +49 -0
- package/dist/src/components/canvas/templates/config-panel.template.d.ts +22 -0
- package/dist/src/components/canvas/templates/config-panel.template.js +22 -0
- package/dist/src/components/canvas/templates/context-menu.template.d.ts +30 -0
- package/dist/src/components/canvas/templates/context-menu.template.js +80 -0
- package/dist/src/components/canvas/templates/edges.template.d.ts +41 -0
- package/dist/src/components/canvas/templates/edges.template.js +243 -0
- package/dist/src/components/canvas/templates/empty-state.template.d.ts +17 -0
- package/dist/src/components/canvas/templates/empty-state.template.js +25 -0
- package/dist/src/components/canvas/templates/frame.template.d.ts +24 -0
- package/dist/src/components/canvas/templates/frame.template.js +74 -0
- package/dist/src/components/canvas/templates/index.d.ts +18 -0
- package/dist/src/components/canvas/templates/index.js +30 -0
- package/dist/src/components/canvas/templates/palette.template.d.ts +27 -0
- package/dist/src/components/canvas/templates/palette.template.js +110 -0
- package/dist/src/components/canvas/templates/presence-bar.template.d.ts +18 -0
- package/dist/src/components/canvas/templates/presence-bar.template.js +60 -0
- package/dist/src/components/canvas/templates/remote-cursors.template.d.ts +19 -0
- package/dist/src/components/canvas/templates/remote-cursors.template.js +43 -0
- package/dist/src/components/canvas/templates/toolbar.template.d.ts +52 -0
- package/dist/src/components/canvas/templates/toolbar.template.js +118 -0
- package/dist/src/components/canvas/templates/wb-floating-toolbar.template.d.ts +30 -0
- package/dist/src/components/canvas/templates/wb-floating-toolbar.template.js +219 -0
- package/dist/src/components/canvas/templates/wb-sidebar.template.d.ts +23 -0
- package/dist/src/components/canvas/templates/wb-sidebar.template.js +152 -0
- package/dist/src/components/canvas/utils/variable-resolver.d.ts +71 -0
- package/dist/src/components/canvas/utils/variable-resolver.js +280 -0
- package/dist/src/components/canvas/workflow-canvas.component.js +6 -0
- package/dist/src/components/canvas/workflow-canvas.style.js +46 -55
- package/dist/src/components/carousel/demo/carousel-demo.d.ts +6 -0
- package/dist/src/components/carousel/demo/carousel-demo.js +68 -0
- package/dist/src/components/chatbot/audio-compress.d.ts +26 -0
- package/dist/src/components/chatbot/audio-compress.js +84 -0
- package/dist/src/components/chatbot/bundle.js +388 -144
- package/dist/src/components/chatbot/bundle.js.gz +0 -0
- package/dist/src/components/chatbot/chatbot-audio.controller.d.ts +35 -0
- package/dist/src/components/chatbot/chatbot-audio.controller.js +160 -0
- package/dist/src/components/chatbot/chatbot.component.d.ts +12 -0
- package/dist/src/components/chatbot/chatbot.component.js +41 -2
- package/dist/src/components/chatbot/chatbot.style.js +141 -0
- package/dist/src/components/chatbot/chatbot.types.d.ts +8 -0
- package/dist/src/components/chatbot/controllers/index.d.ts +8 -0
- package/dist/src/components/chatbot/controllers/index.js +8 -0
- package/dist/src/components/chatbot/controllers/scroll.controller.d.ts +34 -0
- package/dist/src/components/chatbot/controllers/scroll.controller.js +43 -0
- package/dist/src/components/chatbot/core/chatbot-core.controller.d.ts +283 -0
- package/dist/src/components/chatbot/core/chatbot-core.controller.js +824 -0
- package/dist/src/components/chatbot/core/event-bus.d.ts +54 -0
- package/dist/src/components/chatbot/core/event-bus.js +102 -0
- package/dist/src/components/chatbot/core/index.d.ts +12 -0
- package/dist/src/components/chatbot/core/index.js +15 -0
- package/dist/src/components/chatbot/core/types.d.ts +403 -0
- package/dist/src/components/chatbot/core/types.js +16 -0
- package/dist/src/components/chatbot/locales/locale-codes.d.ts +14 -0
- package/dist/src/components/chatbot/locales/locale-codes.js +23 -0
- package/dist/src/components/chatbot/plugins/analytics-plugin.d.ts +23 -0
- package/dist/src/components/chatbot/plugins/analytics-plugin.js +52 -0
- package/dist/src/components/chatbot/plugins/artifact-plugin.d.ts +71 -0
- package/dist/src/components/chatbot/plugins/artifact-plugin.js +313 -0
- package/dist/src/components/chatbot/plugins/chat-plugin.d.ts +44 -0
- package/dist/src/components/chatbot/plugins/chat-plugin.js +58 -0
- package/dist/src/components/chatbot/plugins/flight-card-plugin.d.ts +116 -0
- package/dist/src/components/chatbot/plugins/flight-card-plugin.js +594 -0
- package/dist/src/components/chatbot/plugins/flow-diagram-plugin.d.ts +23 -0
- package/dist/src/components/chatbot/plugins/flow-diagram-plugin.js +495 -0
- package/dist/src/components/chatbot/plugins/index.d.ts +16 -0
- package/dist/src/components/chatbot/plugins/index.js +17 -0
- package/dist/src/components/chatbot/plugins/json-graph-renderer-plugin.d.ts +43 -0
- package/dist/src/components/chatbot/plugins/json-graph-renderer-plugin.js +166 -0
- package/dist/src/components/chatbot/plugins/markdown-plugin.d.ts +26 -0
- package/dist/src/components/chatbot/plugins/markdown-plugin.js +68 -0
- package/dist/src/components/chatbot/plugins/persistence-plugin.d.ts +30 -0
- package/dist/src/components/chatbot/plugins/persistence-plugin.js +91 -0
- package/dist/src/components/chatbot/plugins/print-job-card-plugin.d.ts +110 -0
- package/dist/src/components/chatbot/plugins/print-job-card-plugin.js +505 -0
- package/dist/src/components/chatbot/plugins/selection-card-plugin.d.ts +111 -0
- package/dist/src/components/chatbot/plugins/selection-card-plugin.js +318 -0
- package/dist/src/components/chatbot/providers/custom-api-provider.d.ts +63 -0
- package/dist/src/components/chatbot/providers/custom-api-provider.js +240 -0
- package/dist/src/components/chatbot/providers/index.d.ts +16 -0
- package/dist/src/components/chatbot/providers/index.js +13 -0
- package/dist/src/components/chatbot/providers/mock-provider.d.ts +154 -0
- package/dist/src/components/chatbot/providers/mock-provider.js +411 -0
- package/dist/src/components/chatbot/providers/native-ws-provider.d.ts +184 -0
- package/dist/src/components/chatbot/providers/native-ws-provider.js +544 -0
- package/dist/src/components/chatbot/providers/openai-provider.d.ts +32 -0
- package/dist/src/components/chatbot/providers/openai-provider.js +246 -0
- package/dist/src/components/chatbot/providers/socket-provider.d.ts +159 -0
- package/dist/src/components/chatbot/providers/socket-provider.js +390 -0
- package/dist/src/components/chatbot/providers/workflow-socket-provider.d.ts +116 -0
- package/dist/src/components/chatbot/providers/workflow-socket-provider.js +484 -0
- package/dist/src/components/chatbot/storage/index.d.ts +7 -0
- package/dist/src/components/chatbot/storage/index.js +8 -0
- package/dist/src/components/chatbot/storage/storage-implementations.d.ts +43 -0
- package/dist/src/components/chatbot/storage/storage-implementations.js +179 -0
- package/dist/src/components/chatbot/templates/artifact-panel.template.d.ts +22 -0
- package/dist/src/components/chatbot/templates/artifact-panel.template.js +81 -0
- package/dist/src/components/chatbot/templates/chatbot-main.template.d.ts +49 -0
- package/dist/src/components/chatbot/templates/chatbot-main.template.js +115 -0
- package/dist/src/components/chatbot/templates/file-preview-modal.template.d.ts +19 -0
- package/dist/src/components/chatbot/templates/file-preview-modal.template.js +74 -0
- package/dist/src/components/chatbot/templates/file-upload-area.template.d.ts +19 -0
- package/dist/src/components/chatbot/templates/file-upload-area.template.js +29 -0
- package/dist/src/components/chatbot/templates/index.d.ts +15 -0
- package/dist/src/components/chatbot/templates/index.js +15 -0
- package/dist/src/components/chatbot/templates/input-box.template.d.ts +49 -0
- package/dist/src/components/chatbot/templates/input-box.template.js +317 -0
- package/dist/src/components/chatbot/templates/message.template.d.ts +31 -0
- package/dist/src/components/chatbot/templates/message.template.js +214 -0
- package/dist/src/components/chatbot/templates/suggestion.template.d.ts +20 -0
- package/dist/src/components/chatbot/templates/suggestion.template.js +40 -0
- package/dist/src/components/chatbot/templates/thread-sidebar.template.d.ts +24 -0
- package/dist/src/components/chatbot/templates/thread-sidebar.template.js +160 -0
- package/dist/src/components/chatbot/templates/url-modal.template.d.ts +25 -0
- package/dist/src/components/chatbot/templates/url-modal.template.js +100 -0
- package/dist/src/components/chatbot/utils/format.d.ts +23 -0
- package/dist/src/components/chatbot/utils/format.js +84 -0
- package/dist/src/components/chatbot/utils/index.d.ts +7 -0
- package/dist/src/components/chatbot/utils/index.js +7 -0
- package/dist/src/components/checkbox/mixins/checkbox-event-mixin.d.ts +87 -0
- package/dist/src/components/checkbox/mixins/checkbox-event-mixin.js +94 -0
- package/dist/src/components/checkbox/mixins/checkbox-focus-mixin.d.ts +55 -0
- package/dist/src/components/checkbox/mixins/checkbox-focus-mixin.js +57 -0
- package/dist/src/components/checkbox/mixins/index.d.ts +10 -0
- package/dist/src/components/checkbox/mixins/index.js +8 -0
- package/dist/src/components/checkbox/test/checkbox_test.d.ts +2 -0
- package/dist/src/components/checkbox/test/checkbox_test.js +88 -0
- package/dist/src/components/collapse/controllers/accordion.controller.d.ts +60 -0
- package/dist/src/components/collapse/controllers/accordion.controller.js +132 -0
- package/dist/src/components/collapse/controllers/animation.controller.d.ts +40 -0
- package/dist/src/components/collapse/controllers/animation.controller.js +125 -0
- package/dist/src/components/collapse/controllers/base.controller.d.ts +48 -0
- package/dist/src/components/collapse/controllers/base.controller.js +69 -0
- package/dist/src/components/collapse/controllers/index.d.ts +12 -0
- package/dist/src/components/collapse/controllers/index.js +11 -0
- package/dist/src/components/collapse/controllers/keyboard.controller.d.ts +73 -0
- package/dist/src/components/collapse/controllers/keyboard.controller.js +186 -0
- package/dist/src/components/colorpicker/controllers/base.controller.d.ts +14 -0
- package/dist/src/components/colorpicker/controllers/base.controller.js +15 -0
- package/dist/src/components/colorpicker/controllers/dropdown.controller.d.ts +60 -0
- package/dist/src/components/colorpicker/controllers/dropdown.controller.js +243 -0
- package/dist/src/components/colorpicker/controllers/event.controller.d.ts +46 -0
- package/dist/src/components/colorpicker/controllers/event.controller.js +130 -0
- package/dist/src/components/colorpicker/controllers/index.d.ts +4 -0
- package/dist/src/components/colorpicker/controllers/index.js +4 -0
- package/dist/src/components/colorpicker/interfaces/index.d.ts +60 -0
- package/dist/src/components/colorpicker/interfaces/index.js +2 -0
- package/dist/src/components/datepicker/controllers/calendar.controller.d.ts +78 -0
- package/dist/src/components/datepicker/controllers/calendar.controller.js +225 -0
- package/dist/src/components/datepicker/controllers/index.d.ts +11 -0
- package/dist/src/components/datepicker/controllers/index.js +11 -0
- package/dist/src/components/datepicker/controllers/keyboard.controller.d.ts +96 -0
- package/dist/src/components/datepicker/controllers/keyboard.controller.js +246 -0
- package/dist/src/components/datepicker/controllers/month-year-dropdown.controller.d.ts +48 -0
- package/dist/src/components/datepicker/controllers/month-year-dropdown.controller.js +92 -0
- package/dist/src/components/datepicker/controllers/positioning.controller.d.ts +82 -0
- package/dist/src/components/datepicker/controllers/positioning.controller.js +247 -0
- package/dist/src/components/datepicker/controllers/selection.controller.d.ts +92 -0
- package/dist/src/components/datepicker/controllers/selection.controller.js +267 -0
- package/dist/src/components/datepicker/interfaces/base-controller.interface.d.ts +40 -0
- package/dist/src/components/datepicker/interfaces/base-controller.interface.js +7 -0
- package/dist/src/components/datepicker/interfaces/datepicker-controllers.interface.d.ts +112 -0
- package/dist/src/components/datepicker/interfaces/datepicker-controllers.interface.js +7 -0
- package/dist/src/components/datepicker/interfaces/index.d.ts +8 -0
- package/dist/src/components/datepicker/interfaces/index.js +7 -0
- package/dist/src/components/datepicker/templates/days.template.d.ts +4 -0
- package/dist/src/components/datepicker/templates/days.template.js +40 -0
- package/dist/src/components/datepicker/templates/dropdown.template.d.ts +10 -0
- package/dist/src/components/datepicker/templates/dropdown.template.js +50 -0
- package/dist/src/components/datepicker/templates/headers.template.d.ts +2 -0
- package/dist/src/components/datepicker/templates/headers.template.js +5 -0
- package/dist/src/components/datepicker/templates/months.template.d.ts +6 -0
- package/dist/src/components/datepicker/templates/months.template.js +10 -0
- package/dist/src/components/datepicker/templates/years.template.d.ts +6 -0
- package/dist/src/components/datepicker/templates/years.template.js +11 -0
- package/dist/src/components/datepicker/test/datepicker_test.d.ts +2 -0
- package/dist/src/components/datepicker/test/datepicker_test.js +134 -0
- package/dist/src/components/datepicker/utils/day.helper.d.ts +5 -0
- package/dist/src/components/datepicker/utils/day.helper.js +53 -0
- package/dist/src/components/datepicker/utils/formatter.d.ts +2 -0
- package/dist/src/components/datepicker/utils/formatter.js +9 -0
- package/dist/src/components/datepicker/utils/index.d.ts +11 -0
- package/dist/src/components/datepicker/utils/index.js +11 -0
- package/dist/src/components/datepicker/utils/locale.helper.d.ts +144 -0
- package/dist/src/components/datepicker/utils/locale.helper.js +151 -0
- package/dist/src/components/datepicker/utils/month.helper.d.ts +3 -0
- package/dist/src/components/datepicker/utils/month.helper.js +24 -0
- package/dist/src/components/datepicker/utils/string.helper.d.ts +2 -0
- package/dist/src/components/datepicker/utils/string.helper.js +4 -0
- package/dist/src/components/document/demo/document-demo.d.ts +12 -0
- package/dist/src/components/document/demo/document-demo.js +40 -0
- package/dist/src/components/dropdown/controllers/base.controller.d.ts +18 -0
- package/dist/src/components/dropdown/controllers/base.controller.js +22 -0
- package/dist/src/components/dropdown/controllers/dropdown.controller.d.ts +50 -0
- package/dist/src/components/dropdown/controllers/dropdown.controller.js +408 -0
- package/dist/src/components/dropdown/controllers/index.d.ts +3 -0
- package/dist/src/components/dropdown/controllers/index.js +3 -0
- package/dist/src/components/dropdown/interfaces/controller-interfaces.d.ts +79 -0
- package/dist/src/components/dropdown/interfaces/controller-interfaces.js +2 -0
- package/dist/src/components/dropdown/interfaces/index.d.ts +2 -0
- package/dist/src/components/dropdown/interfaces/index.js +2 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.d.ts +12 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.js +55 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.style.d.ts +2 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.style.js +34 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.d.ts +18 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.js +70 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.style.d.ts +2 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.style.js +49 -0
- package/dist/src/components/file-upload/demo/file-upload-demo.d.ts +18 -0
- package/dist/src/components/file-upload/demo/file-upload-demo.js +156 -0
- package/dist/src/components/form/controllers/submission.controller.d.ts +60 -0
- package/dist/src/components/form/controllers/submission.controller.js +220 -0
- package/dist/src/components/form/controllers/validation.controller.d.ts +87 -0
- package/dist/src/components/form/controllers/validation.controller.js +236 -0
- package/dist/src/components/form/interfaces/validation.interface.d.ts +118 -0
- package/dist/src/components/form/interfaces/validation.interface.js +7 -0
- package/dist/src/components/icon/mixins/clickable-mixin.d.ts +57 -0
- package/dist/src/components/icon/mixins/clickable-mixin.js +111 -0
- package/dist/src/components/icon/mixins/index.d.ts +7 -0
- package/dist/src/components/icon/mixins/index.js +7 -0
- package/dist/src/components/iconpicker/controllers/event.controller.d.ts +38 -0
- package/dist/src/components/iconpicker/controllers/event.controller.js +68 -0
- package/dist/src/components/iconpicker/controllers/index.d.ts +9 -0
- package/dist/src/components/iconpicker/controllers/index.js +9 -0
- package/dist/src/components/iconpicker/controllers/search.controller.d.ts +34 -0
- package/dist/src/components/iconpicker/controllers/search.controller.js +55 -0
- package/dist/src/components/iconpicker/controllers/selection.controller.d.ts +27 -0
- package/dist/src/components/iconpicker/controllers/selection.controller.js +39 -0
- package/dist/src/components/iconpicker/interfaces/icon-picker.interface.d.ts +13 -0
- package/dist/src/components/iconpicker/interfaces/icon-picker.interface.js +7 -0
- package/dist/src/components/iconpicker/interfaces/index.d.ts +7 -0
- package/dist/src/components/iconpicker/interfaces/index.js +7 -0
- package/dist/src/components/iconpicker/utils/icon-filter.utils.d.ts +29 -0
- package/dist/src/components/iconpicker/utils/icon-filter.utils.js +96 -0
- package/dist/src/components/iconpicker/utils/icon-loader.utils.d.ts +39 -0
- package/dist/src/components/iconpicker/utils/icon-loader.utils.js +115 -0
- package/dist/src/components/iconpicker/utils/index.d.ts +8 -0
- package/dist/src/components/iconpicker/utils/index.js +8 -0
- package/dist/src/components/iconpicker/utils/lucide-icons.d.ts +10 -0
- package/dist/src/components/iconpicker/utils/lucide-icons.js +1624 -0
- package/dist/src/components/input/controllers/base.controller.d.ts +35 -0
- package/dist/src/components/input/controllers/base.controller.js +13 -0
- package/dist/src/components/input/controllers/event.controller.d.ts +111 -0
- package/dist/src/components/input/controllers/event.controller.js +355 -0
- package/dist/src/components/input/controllers/index.d.ts +14 -0
- package/dist/src/components/input/controllers/index.js +10 -0
- package/dist/src/components/input/controllers/state.controller.d.ts +153 -0
- package/dist/src/components/input/controllers/state.controller.js +245 -0
- package/dist/src/components/input/controllers/validation.controller.d.ts +205 -0
- package/dist/src/components/input/controllers/validation.controller.js +698 -0
- package/dist/src/components/input/mixins/focus-mixin.d.ts +60 -0
- package/dist/src/components/input/mixins/focus-mixin.js +65 -0
- package/dist/src/components/input/mixins/index.d.ts +12 -0
- package/dist/src/components/input/mixins/index.js +9 -0
- package/dist/src/components/input/mixins/number-mixin.d.ts +51 -0
- package/dist/src/components/input/mixins/number-mixin.js +128 -0
- package/dist/src/components/input/mixins/selection-mixin.d.ts +57 -0
- package/dist/src/components/input/mixins/selection-mixin.js +80 -0
- package/dist/src/components/input/test/nr-input_test.d.ts +2 -0
- package/dist/src/components/input/test/nr-input_test.js +159 -0
- package/dist/src/components/input/utils/index.d.ts +8 -0
- package/dist/src/components/input/utils/index.js +8 -0
- package/dist/src/components/input/utils/input-renderers.d.ts +54 -0
- package/dist/src/components/input/utils/input-renderers.js +178 -0
- package/dist/src/components/input/utils/input-validation.utils.d.ts +26 -0
- package/dist/src/components/input/utils/input-validation.utils.js +103 -0
- package/dist/src/components/menu/controllers/accessibility.controller.d.ts +86 -0
- package/dist/src/components/menu/controllers/accessibility.controller.js +235 -0
- package/dist/src/components/menu/controllers/base.controller.d.ts +41 -0
- package/dist/src/components/menu/controllers/base.controller.js +61 -0
- package/dist/src/components/menu/controllers/index.d.ts +10 -0
- package/dist/src/components/menu/controllers/index.js +10 -0
- package/dist/src/components/menu/controllers/keyboard.controller.d.ts +84 -0
- package/dist/src/components/menu/controllers/keyboard.controller.js +328 -0
- package/dist/src/components/menu/controllers/state.controller.d.ts +106 -0
- package/dist/src/components/menu/controllers/state.controller.js +249 -0
- package/dist/src/components/menu/interfaces/controller.interface.d.ts +51 -0
- package/dist/src/components/menu/interfaces/controller.interface.js +7 -0
- package/dist/src/components/menu/interfaces/index.d.ts +7 -0
- package/dist/src/components/menu/interfaces/index.js +7 -0
- package/dist/src/components/modal/controllers/index.d.ts +8 -0
- package/dist/src/components/modal/controllers/index.js +8 -0
- package/dist/src/components/modal/controllers/modal-drag-controller.d.ts +39 -0
- package/dist/src/components/modal/controllers/modal-drag-controller.js +108 -0
- package/dist/src/components/modal/controllers/modal-keyboard-controller.d.ts +36 -0
- package/dist/src/components/modal/controllers/modal-keyboard-controller.js +128 -0
- package/dist/src/components/panel/controllers/index.d.ts +8 -0
- package/dist/src/components/panel/controllers/index.js +8 -0
- package/dist/src/components/panel/controllers/panel-drag-controller.d.ts +40 -0
- package/dist/src/components/panel/controllers/panel-drag-controller.js +118 -0
- package/dist/src/components/panel/controllers/panel-resize-controller.d.ts +37 -0
- package/dist/src/components/panel/controllers/panel-resize-controller.js +124 -0
- package/dist/src/components/presence/bundle.js +528 -0
- package/dist/src/components/presence/bundle.js.gz +0 -0
- package/dist/src/components/presence/index.d.ts +10 -0
- package/dist/src/components/presence/index.js +10 -0
- package/dist/src/components/presence/presence-avatars.component.d.ts +40 -0
- package/dist/src/components/presence/presence-avatars.component.js +83 -0
- package/dist/src/components/presence/presence-avatars.style.d.ts +7 -0
- package/dist/src/components/presence/presence-avatars.style.js +105 -0
- package/dist/src/components/presence/presence-chat.component.d.ts +53 -0
- package/dist/src/components/presence/presence-chat.component.js +228 -0
- package/dist/src/components/presence/presence-chat.style.d.ts +7 -0
- package/dist/src/components/presence/presence-chat.style.js +248 -0
- package/dist/src/components/presence/presence.component.d.ts +71 -0
- package/dist/src/components/presence/presence.component.js +263 -0
- package/dist/src/components/presence/presence.style.d.ts +7 -0
- package/dist/src/components/presence/presence.style.js +12 -0
- package/dist/src/components/presence/presence.types.d.ts +31 -0
- package/dist/src/components/presence/presence.types.js +7 -0
- package/dist/src/components/presence/react.d.ts +24 -0
- package/dist/src/components/presence/react.js +41 -0
- package/dist/src/components/radio-group/controllers/focus.controller.d.ts +98 -0
- package/dist/src/components/radio-group/controllers/focus.controller.js +216 -0
- package/dist/src/components/radio-group/controllers/group.controller.d.ts +140 -0
- package/dist/src/components/radio-group/controllers/group.controller.js +179 -0
- package/dist/src/components/radio-group/controllers/index.d.ts +11 -0
- package/dist/src/components/radio-group/controllers/index.js +11 -0
- package/dist/src/components/radio-group/controllers/keyboard.controller.d.ts +24 -0
- package/dist/src/components/radio-group/controllers/keyboard.controller.js +93 -0
- package/dist/src/components/radio-group/controllers/ripple.controller.d.ts +59 -0
- package/dist/src/components/radio-group/controllers/ripple.controller.js +208 -0
- package/dist/src/components/radio-group/controllers/validation.controller.d.ts +73 -0
- package/dist/src/components/radio-group/controllers/validation.controller.js +108 -0
- package/dist/src/components/radio-group/interfaces/base-controller.interface.d.ts +75 -0
- package/dist/src/components/radio-group/interfaces/base-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/focus-controller.interface.d.ts +40 -0
- package/dist/src/components/radio-group/interfaces/focus-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/index.d.ts +11 -0
- package/dist/src/components/radio-group/interfaces/index.js +7 -0
- package/dist/src/components/radio-group/interfaces/ripple-controller.interface.d.ts +31 -0
- package/dist/src/components/radio-group/interfaces/ripple-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/selection-controller.interface.d.ts +45 -0
- package/dist/src/components/radio-group/interfaces/selection-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/validation-controller.interface.d.ts +48 -0
- package/dist/src/components/radio-group/interfaces/validation-controller.interface.js +7 -0
- package/dist/src/components/radio-group/test/radio_test.d.ts +2 -0
- package/dist/src/components/radio-group/test/radio_test.js +79 -0
- package/dist/src/components/select/controllers/base.controller.d.ts +10 -0
- package/dist/src/components/select/controllers/base.controller.js +8 -0
- package/dist/src/components/select/controllers/dropdown.controller.d.ts +76 -0
- package/dist/src/components/select/controllers/dropdown.controller.js +281 -0
- package/dist/src/components/select/controllers/event.controller.d.ts +54 -0
- package/dist/src/components/select/controllers/event.controller.js +113 -0
- package/dist/src/components/select/controllers/focus.controller.d.ts +79 -0
- package/dist/src/components/select/controllers/focus.controller.js +230 -0
- package/dist/src/components/select/controllers/index.d.ts +9 -0
- package/dist/src/components/select/controllers/index.js +9 -0
- package/dist/src/components/select/controllers/keyboard.controller.d.ts +75 -0
- package/dist/src/components/select/controllers/keyboard.controller.js +369 -0
- package/dist/src/components/select/controllers/search.controller.d.ts +71 -0
- package/dist/src/components/select/controllers/search.controller.js +167 -0
- package/dist/src/components/select/controllers/selection.controller.d.ts +67 -0
- package/dist/src/components/select/controllers/selection.controller.js +217 -0
- package/dist/src/components/select/controllers/validation.controller.d.ts +66 -0
- package/dist/src/components/select/controllers/validation.controller.js +189 -0
- package/dist/src/components/select/interfaces/base-controller.interface.d.ts +147 -0
- package/dist/src/components/select/interfaces/base-controller.interface.js +2 -0
- package/dist/src/components/select/interfaces/controller-interfaces.d.ts +94 -0
- package/dist/src/components/select/interfaces/controller-interfaces.js +11 -0
- package/dist/src/components/select/interfaces/index.d.ts +3 -0
- package/dist/src/components/select/interfaces/index.js +3 -0
- package/dist/src/components/slider-input/utils/debounce.d.ts +2 -0
- package/dist/src/components/slider-input/utils/debounce.js +8 -0
- package/dist/src/components/slider-input/utils/index.d.ts +2 -0
- package/dist/src/components/slider-input/utils/index.js +2 -0
- package/dist/src/components/table/controllers/base.controller.d.ts +15 -0
- package/dist/src/components/table/controllers/base.controller.js +13 -0
- package/dist/src/components/table/controllers/filter.controller.d.ts +48 -0
- package/dist/src/components/table/controllers/filter.controller.js +152 -0
- package/dist/src/components/table/controllers/index.d.ts +11 -0
- package/dist/src/components/table/controllers/index.js +11 -0
- package/dist/src/components/table/controllers/pagination.controller.d.ts +36 -0
- package/dist/src/components/table/controllers/pagination.controller.js +110 -0
- package/dist/src/components/table/controllers/selection.controller.d.ts +40 -0
- package/dist/src/components/table/controllers/selection.controller.js +120 -0
- package/dist/src/components/table/controllers/sort.controller.d.ts +32 -0
- package/dist/src/components/table/controllers/sort.controller.js +102 -0
- package/dist/src/components/table/interfaces/index.d.ts +7 -0
- package/dist/src/components/table/interfaces/index.js +7 -0
- package/dist/src/components/table/interfaces/table-host.interface.d.ts +48 -0
- package/dist/src/components/table/interfaces/table-host.interface.js +7 -0
- package/dist/src/components/table/templates/actions.template.d.ts +14 -0
- package/dist/src/components/table/templates/actions.template.js +15 -0
- package/dist/src/components/table/templates/column-filter.template.d.ts +24 -0
- package/dist/src/components/table/templates/column-filter.template.js +76 -0
- package/dist/src/components/table/templates/content.template.d.ts +37 -0
- package/dist/src/components/table/templates/content.template.js +208 -0
- package/dist/src/components/table/templates/empty.template.d.ts +8 -0
- package/dist/src/components/table/templates/empty.template.js +47 -0
- package/dist/src/components/table/templates/filter.template.d.ts +14 -0
- package/dist/src/components/table/templates/filter.template.js +28 -0
- package/dist/src/components/table/templates/index.d.ts +8 -0
- package/dist/src/components/table/templates/index.js +8 -0
- package/dist/src/components/table/templates/loading.template.d.ts +21 -0
- package/dist/src/components/table/templates/loading.template.js +51 -0
- package/dist/src/components/table/templates/pagination.template.d.ts +24 -0
- package/dist/src/components/table/templates/pagination.template.js +52 -0
- package/dist/src/components/tabs/controllers/base.controller.d.ts +49 -0
- package/dist/src/components/tabs/controllers/base.controller.js +26 -0
- package/dist/src/components/tabs/controllers/dragdrop.controller.d.ts +84 -0
- package/dist/src/components/tabs/controllers/dragdrop.controller.js +202 -0
- package/dist/src/components/tabs/controllers/editable.controller.d.ts +100 -0
- package/dist/src/components/tabs/controllers/editable.controller.js +242 -0
- package/dist/src/components/tabs/controllers/event.controller.d.ts +104 -0
- package/dist/src/components/tabs/controllers/event.controller.js +239 -0
- package/dist/src/components/tabs/controllers/index.d.ts +12 -0
- package/dist/src/components/tabs/controllers/index.js +18 -0
- package/dist/src/components/tabs/controllers/keyboard.controller.d.ts +85 -0
- package/dist/src/components/tabs/controllers/keyboard.controller.js +233 -0
- package/dist/src/components/tabs/controllers/popout.controller.d.ts +96 -0
- package/dist/src/components/tabs/controllers/popout.controller.js +441 -0
- package/dist/src/components/textarea/controllers/base.controller.d.ts +43 -0
- package/dist/src/components/textarea/controllers/base.controller.js +19 -0
- package/dist/src/components/textarea/controllers/event.controller.d.ts +169 -0
- package/dist/src/components/textarea/controllers/event.controller.js +408 -0
- package/dist/src/components/textarea/controllers/index.d.ts +9 -0
- package/dist/src/components/textarea/controllers/index.js +9 -0
- package/dist/src/components/textarea/controllers/validation.controller.d.ts +133 -0
- package/dist/src/components/textarea/controllers/validation.controller.js +315 -0
- package/dist/src/components/timepicker/controllers/formatting.controller.d.ts +93 -0
- package/dist/src/components/timepicker/controllers/formatting.controller.js +195 -0
- package/dist/src/components/timepicker/controllers/index.d.ts +9 -0
- package/dist/src/components/timepicker/controllers/index.js +9 -0
- package/dist/src/components/timepicker/controllers/selection.controller.d.ts +72 -0
- package/dist/src/components/timepicker/controllers/selection.controller.js +175 -0
- package/dist/src/components/timepicker/controllers/validation.controller.d.ts +88 -0
- package/dist/src/components/timepicker/controllers/validation.controller.js +200 -0
- package/dist/src/components/timepicker/interfaces/timepicker.interface.d.ts +103 -0
- package/dist/src/components/timepicker/interfaces/timepicker.interface.js +7 -0
- package/dist/src/components/timepicker/test/timepicker_test.d.ts +7 -0
- package/dist/src/components/timepicker/test/timepicker_test.js +218 -0
- package/dist/src/components/timepicker/utils/time.utils.d.ts +87 -0
- package/dist/src/components/timepicker/utils/time.utils.js +235 -0
- package/dist/src/components/toast/controllers/base.controller.d.ts +20 -0
- package/dist/src/components/toast/controllers/base.controller.js +12 -0
- package/dist/src/components/toast/controllers/index.d.ts +8 -0
- package/dist/src/components/toast/controllers/index.js +7 -0
- package/dist/src/components/tooltips/demo/tooltips-demo.d.ts +18 -0
- package/dist/src/components/tooltips/demo/tooltips-demo.js +132 -0
- package/dist/src/components/tooltips/test/tooltips_test.d.ts +2 -0
- package/dist/src/components/tooltips/test/tooltips_test.js +145 -0
- package/package.json +27 -1
- package/packages/common/dist/VERSIONS.md +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Google Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { TemplateResult, nothing } from 'lit';
|
|
7
|
+
/**
|
|
8
|
+
* Rendering utilities for input component icons and elements
|
|
9
|
+
*/
|
|
10
|
+
export declare class InputRenderUtils {
|
|
11
|
+
/**
|
|
12
|
+
* Renders prefix content (Light DOM — children passed in directly)
|
|
13
|
+
*/
|
|
14
|
+
static renderPrefix(children?: Element[]): TemplateResult | typeof nothing;
|
|
15
|
+
/**
|
|
16
|
+
* Renders suffix content (Light DOM — children passed in directly)
|
|
17
|
+
*/
|
|
18
|
+
static renderSuffix(children?: Element[]): TemplateResult | typeof nothing;
|
|
19
|
+
/**
|
|
20
|
+
* Renders addon before content (outside input borders)
|
|
21
|
+
* Only renders if hasAddonBefore is true
|
|
22
|
+
*/
|
|
23
|
+
static renderAddonBefore(hasAddonBefore: boolean, children?: Element[]): TemplateResult | typeof nothing;
|
|
24
|
+
/**
|
|
25
|
+
* Renders addon after content (outside input borders)
|
|
26
|
+
* Only renders if hasAddonAfter is true
|
|
27
|
+
*/
|
|
28
|
+
static renderAddonAfter(hasAddonAfter: boolean, children?: Element[]): TemplateResult | typeof nothing;
|
|
29
|
+
/**
|
|
30
|
+
* Renders the copy icon when withCopy is enabled
|
|
31
|
+
*/
|
|
32
|
+
static renderCopyIcon(withCopy: boolean, disabled: boolean, readonly: boolean, onCopy: () => void, onKeydown: (e: KeyboardEvent) => void): TemplateResult | typeof nothing;
|
|
33
|
+
/**
|
|
34
|
+
* Renders the clear icon when allowClear is enabled and there's content
|
|
35
|
+
*/
|
|
36
|
+
static renderClearIcon(allowClear: boolean, value: string, disabled: boolean, readonly: boolean, onClear: () => void, onKeydown: (e: KeyboardEvent) => void): TemplateResult | typeof nothing;
|
|
37
|
+
/**
|
|
38
|
+
* Renders state-based icons (warning, error)
|
|
39
|
+
*/
|
|
40
|
+
static renderStateIcon(state: string): TemplateResult | typeof nothing;
|
|
41
|
+
/**
|
|
42
|
+
* Renders the calendar icon for calendar input type
|
|
43
|
+
*/
|
|
44
|
+
static renderCalendarIcon(state: string, type: string): TemplateResult | typeof nothing;
|
|
45
|
+
/**
|
|
46
|
+
* Renders password toggle icon
|
|
47
|
+
*/
|
|
48
|
+
static renderPasswordIcon(type: string, inputType: string, disabled: boolean, readonly: boolean, onToggle: () => void, onKeydown: (e: KeyboardEvent) => void): TemplateResult | typeof nothing;
|
|
49
|
+
/**
|
|
50
|
+
* Renders number input increment/decrement icons
|
|
51
|
+
*/
|
|
52
|
+
static renderNumberIcons(type: string, state: string, disabled: boolean, readonly: boolean, onIncrement: () => void, onDecrement: () => void, onKeydown: (e: KeyboardEvent) => void): TemplateResult | typeof nothing;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=input-renderers.d.ts.map
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Google Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { html, nothing } from 'lit';
|
|
7
|
+
/**
|
|
8
|
+
* Rendering utilities for input component icons and elements
|
|
9
|
+
*/
|
|
10
|
+
export class InputRenderUtils {
|
|
11
|
+
/**
|
|
12
|
+
* Renders prefix content (Light DOM — children passed in directly)
|
|
13
|
+
*/
|
|
14
|
+
static renderPrefix(children = []) {
|
|
15
|
+
if (children.length === 0)
|
|
16
|
+
return nothing;
|
|
17
|
+
return html `
|
|
18
|
+
<div class="input-prefix">
|
|
19
|
+
${children}
|
|
20
|
+
</div>
|
|
21
|
+
`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Renders suffix content (Light DOM — children passed in directly)
|
|
25
|
+
*/
|
|
26
|
+
static renderSuffix(children = []) {
|
|
27
|
+
if (children.length === 0)
|
|
28
|
+
return nothing;
|
|
29
|
+
return html `
|
|
30
|
+
<div class="input-suffix">
|
|
31
|
+
${children}
|
|
32
|
+
</div>
|
|
33
|
+
`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Renders addon before content (outside input borders)
|
|
37
|
+
* Only renders if hasAddonBefore is true
|
|
38
|
+
*/
|
|
39
|
+
static renderAddonBefore(hasAddonBefore, children = []) {
|
|
40
|
+
if (!hasAddonBefore)
|
|
41
|
+
return nothing;
|
|
42
|
+
return html `
|
|
43
|
+
<div class="input-addon-before">
|
|
44
|
+
${children}
|
|
45
|
+
</div>
|
|
46
|
+
`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Renders addon after content (outside input borders)
|
|
50
|
+
* Only renders if hasAddonAfter is true
|
|
51
|
+
*/
|
|
52
|
+
static renderAddonAfter(hasAddonAfter, children = []) {
|
|
53
|
+
if (!hasAddonAfter)
|
|
54
|
+
return nothing;
|
|
55
|
+
return html `
|
|
56
|
+
<div class="input-addon-after">
|
|
57
|
+
${children}
|
|
58
|
+
</div>
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Renders the copy icon when withCopy is enabled
|
|
63
|
+
*/
|
|
64
|
+
static renderCopyIcon(withCopy, disabled, readonly, onCopy, onKeydown) {
|
|
65
|
+
if (!withCopy)
|
|
66
|
+
return nothing;
|
|
67
|
+
return html `<nr-icon
|
|
68
|
+
name="copy"
|
|
69
|
+
type="regular"
|
|
70
|
+
id="copy-icon"
|
|
71
|
+
role="button"
|
|
72
|
+
aria-label="Copy input value"
|
|
73
|
+
tabindex="0"
|
|
74
|
+
@click=${!disabled && !readonly ? onCopy : nothing}
|
|
75
|
+
@keydown=${onKeydown}
|
|
76
|
+
></nr-icon>`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Renders the clear icon when allowClear is enabled and there's content
|
|
80
|
+
*/
|
|
81
|
+
static renderClearIcon(allowClear, value, disabled, readonly, onClear, onKeydown) {
|
|
82
|
+
if (!allowClear || !value || disabled || readonly)
|
|
83
|
+
return nothing;
|
|
84
|
+
return html `<nr-icon
|
|
85
|
+
name="times-circle"
|
|
86
|
+
type="regular"
|
|
87
|
+
id="clear-icon"
|
|
88
|
+
role="button"
|
|
89
|
+
aria-label="Clear input value"
|
|
90
|
+
tabindex="0"
|
|
91
|
+
@click=${onClear}
|
|
92
|
+
@keydown=${onKeydown}
|
|
93
|
+
></nr-icon>`;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Renders state-based icons (warning, error)
|
|
97
|
+
*/
|
|
98
|
+
static renderStateIcon(state) {
|
|
99
|
+
switch (state) {
|
|
100
|
+
case "warning" /* INPUT_STATE.Warning */:
|
|
101
|
+
return html `<nr-icon name="warning" id="warning-icon"></nr-icon>`;
|
|
102
|
+
case "error" /* INPUT_STATE.Error */:
|
|
103
|
+
return html `<nr-icon name="exclamation-circle" id="error-icon"></nr-icon>`;
|
|
104
|
+
default:
|
|
105
|
+
return nothing;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Renders the calendar icon for calendar input type
|
|
110
|
+
*/
|
|
111
|
+
static renderCalendarIcon(state, type) {
|
|
112
|
+
if (state !== "default" /* INPUT_STATE.Default */ || type !== "calendar" /* INPUT_TYPE.CALENDAR */) {
|
|
113
|
+
return nothing;
|
|
114
|
+
}
|
|
115
|
+
return html `<nr-icon name="calendar" type="regular" id="calendar-icon"></nr-icon>`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Renders password toggle icon
|
|
119
|
+
*/
|
|
120
|
+
static renderPasswordIcon(type, inputType, disabled, readonly, onToggle, onKeydown) {
|
|
121
|
+
if (type !== "password" /* INPUT_TYPE.PASSWORD */)
|
|
122
|
+
return nothing;
|
|
123
|
+
if (inputType === "text" /* INPUT_TYPE.TEXT */) {
|
|
124
|
+
return html `<nr-icon
|
|
125
|
+
name="eye-slash"
|
|
126
|
+
type="regular"
|
|
127
|
+
id="password-icon"
|
|
128
|
+
role="button"
|
|
129
|
+
aria-label="Hide password"
|
|
130
|
+
tabindex="0"
|
|
131
|
+
@click=${!disabled && !readonly ? onToggle : nothing}
|
|
132
|
+
@keydown=${onKeydown}
|
|
133
|
+
></nr-icon>`;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
return html `<nr-icon
|
|
137
|
+
name="eye"
|
|
138
|
+
type="regular"
|
|
139
|
+
id="password-icon"
|
|
140
|
+
role="button"
|
|
141
|
+
aria-label="Show password"
|
|
142
|
+
tabindex="0"
|
|
143
|
+
@click=${!disabled && !readonly ? onToggle : nothing}
|
|
144
|
+
@keydown=${onKeydown}
|
|
145
|
+
></nr-icon>`;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Renders number input increment/decrement icons
|
|
150
|
+
*/
|
|
151
|
+
static renderNumberIcons(type, state, disabled, readonly, onIncrement, onDecrement, onKeydown) {
|
|
152
|
+
if (type !== "number" /* INPUT_TYPE.NUMBER */)
|
|
153
|
+
return nothing;
|
|
154
|
+
return html `
|
|
155
|
+
<div id="number-icons">
|
|
156
|
+
${state !== "default" /* INPUT_STATE.Default */ ? html `<span id="icons-separator">|</span>` : nothing}
|
|
157
|
+
<nr-icon
|
|
158
|
+
name="minus"
|
|
159
|
+
aria-label="Decrease value"
|
|
160
|
+
role="button"
|
|
161
|
+
tabindex="0"
|
|
162
|
+
@click=${!disabled && !readonly ? onDecrement : nothing}
|
|
163
|
+
@keydown=${onKeydown}
|
|
164
|
+
></nr-icon>
|
|
165
|
+
<span id="icons-separator">|</span>
|
|
166
|
+
<nr-icon
|
|
167
|
+
name="plus"
|
|
168
|
+
aria-label="Increase value"
|
|
169
|
+
role="button"
|
|
170
|
+
tabindex="0"
|
|
171
|
+
@click=${!disabled && !readonly ? onIncrement : nothing}
|
|
172
|
+
@keydown=${onKeydown}
|
|
173
|
+
></nr-icon>
|
|
174
|
+
</div>
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=input-renderers.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Google Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Validation utilities for input components
|
|
8
|
+
*/
|
|
9
|
+
export declare class InputValidationUtils {
|
|
10
|
+
/**
|
|
11
|
+
* Validates numeric properties (min, max, step) to ensure they are valid numbers
|
|
12
|
+
*/
|
|
13
|
+
static validateNumericProperties(type: string, min?: string, max?: string, step?: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Prevents non-numeric characters from being typed in number inputs
|
|
16
|
+
*/
|
|
17
|
+
static preventNonNumericInput(keyDownEvent: KeyboardEvent, min?: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Validates a numeric value against min/max constraints
|
|
20
|
+
*/
|
|
21
|
+
static validateNumericValue(value: string, min?: string, max?: string): {
|
|
22
|
+
isValid: boolean;
|
|
23
|
+
warnings: string[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=input-validation.utils.d.ts.map
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Google Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Validation utilities for input components
|
|
8
|
+
*/
|
|
9
|
+
export class InputValidationUtils {
|
|
10
|
+
/**
|
|
11
|
+
* Validates numeric properties (min, max, step) to ensure they are valid numbers
|
|
12
|
+
*/
|
|
13
|
+
static validateNumericProperties(type, min, max, step) {
|
|
14
|
+
if (type === "number" /* INPUT_TYPE.NUMBER */) {
|
|
15
|
+
if (min && Number.isNaN(Number(min))) {
|
|
16
|
+
console.warn(`Invalid min value: "${min}" is not a valid number`);
|
|
17
|
+
}
|
|
18
|
+
if (max && Number.isNaN(Number(max))) {
|
|
19
|
+
console.warn(`Invalid max value: "${max}" is not a valid number`);
|
|
20
|
+
}
|
|
21
|
+
if (step && Number.isNaN(Number(step))) {
|
|
22
|
+
console.warn(`Invalid step value: "${step}" is not a valid number`);
|
|
23
|
+
}
|
|
24
|
+
if (min && max && Number(min) >= Number(max)) {
|
|
25
|
+
console.warn(`Invalid range: min value (${min}) should be less than max value (${max})`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Prevents non-numeric characters from being typed in number inputs
|
|
31
|
+
*/
|
|
32
|
+
static preventNonNumericInput(keyDownEvent, min) {
|
|
33
|
+
const key = keyDownEvent.key;
|
|
34
|
+
const target = keyDownEvent.target;
|
|
35
|
+
const currentValue = target.value;
|
|
36
|
+
const cursorPosition = target.selectionStart || 0;
|
|
37
|
+
// Allow control keys (backspace, delete, tab, escape, enter, arrow keys, etc.)
|
|
38
|
+
const allowedControlKeys = [
|
|
39
|
+
'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',
|
|
40
|
+
'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',
|
|
41
|
+
'Home', 'End', 'PageUp', 'PageDown'
|
|
42
|
+
];
|
|
43
|
+
// Allow Ctrl/Cmd combinations (copy, paste, select all, etc.)
|
|
44
|
+
if (keyDownEvent.ctrlKey || keyDownEvent.metaKey) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Allow control keys
|
|
48
|
+
if (allowedControlKeys.includes(key)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Allow digits
|
|
52
|
+
if (/^\d$/.test(key)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Allow decimal point (.) only once and allow it at the beginning for values like ".5"
|
|
56
|
+
if (key === '.' || key === ',') {
|
|
57
|
+
const hasDecimal = currentValue.includes('.') || currentValue.includes(',');
|
|
58
|
+
if (!hasDecimal) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Allow minus sign (-) only at the beginning and if min allows negative numbers
|
|
63
|
+
if (key === '-') {
|
|
64
|
+
const hasMinusSign = currentValue.includes('-');
|
|
65
|
+
const minAllowsNegative = !min || Number(min) < 0;
|
|
66
|
+
if (!hasMinusSign && cursorPosition === 0 && minAllowsNegative) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Allow plus sign (+) only at the beginning
|
|
71
|
+
if (key === '+') {
|
|
72
|
+
const hasPlusSign = currentValue.includes('+');
|
|
73
|
+
if (!hasPlusSign && cursorPosition === 0) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
keyDownEvent.preventDefault();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validates a numeric value against min/max constraints
|
|
81
|
+
*/
|
|
82
|
+
static validateNumericValue(value, min, max) {
|
|
83
|
+
const warnings = [];
|
|
84
|
+
if (!value) {
|
|
85
|
+
return { isValid: true, warnings };
|
|
86
|
+
}
|
|
87
|
+
const numericValue = Number(value);
|
|
88
|
+
if (Number.isNaN(numericValue)) {
|
|
89
|
+
return {
|
|
90
|
+
isValid: false,
|
|
91
|
+
warnings: [`Invalid numeric value: "${value}"`]
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (min && numericValue < Number(min)) {
|
|
95
|
+
warnings.push(`Value ${numericValue} is below minimum ${min}`);
|
|
96
|
+
}
|
|
97
|
+
if (max && numericValue > Number(max)) {
|
|
98
|
+
warnings.push(`Value ${numericValue} is above maximum ${max}`);
|
|
99
|
+
}
|
|
100
|
+
return { isValid: true, warnings };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=input-validation.utils.js.map
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { BaseMenuController } from './base.controller.js';
|
|
7
|
+
import type { MenuAccessibilityController } from '../interfaces/index.js';
|
|
8
|
+
import type { StateController } from './state.controller.js';
|
|
9
|
+
/**
|
|
10
|
+
* Accessibility controller manages ARIA attributes and screen reader support
|
|
11
|
+
* Ensures the menu component is fully accessible
|
|
12
|
+
*/
|
|
13
|
+
export declare class AccessibilityController extends BaseMenuController implements MenuAccessibilityController {
|
|
14
|
+
private stateController;
|
|
15
|
+
private announcementElement;
|
|
16
|
+
constructor(host: any, stateController: StateController);
|
|
17
|
+
hostConnected(): void;
|
|
18
|
+
hostDisconnected(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Create a screen reader announcement element
|
|
21
|
+
*/
|
|
22
|
+
private createAnnouncementElement;
|
|
23
|
+
/**
|
|
24
|
+
* Remove the screen reader announcement element
|
|
25
|
+
*/
|
|
26
|
+
private removeAnnouncementElement;
|
|
27
|
+
/**
|
|
28
|
+
* Update all ARIA attributes throughout the menu
|
|
29
|
+
*/
|
|
30
|
+
updateAriaAttributes(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Update ARIA attributes on the menu root
|
|
33
|
+
*/
|
|
34
|
+
private updateMenuRoot;
|
|
35
|
+
/**
|
|
36
|
+
* Update ARIA attributes on all menu items
|
|
37
|
+
*/
|
|
38
|
+
private updateAllMenuItems;
|
|
39
|
+
/**
|
|
40
|
+
* Update ARIA attributes on all submenus
|
|
41
|
+
*/
|
|
42
|
+
private updateAllSubMenus;
|
|
43
|
+
/**
|
|
44
|
+
* Set aria-expanded attribute on an element
|
|
45
|
+
* @param element - The element to update
|
|
46
|
+
* @param expanded - Whether the element is expanded
|
|
47
|
+
*/
|
|
48
|
+
setAriaExpanded(element: HTMLElement, expanded: boolean): void;
|
|
49
|
+
/**
|
|
50
|
+
* Set aria-selected attribute on an element
|
|
51
|
+
* @param element - The element to update
|
|
52
|
+
* @param selected - Whether the element is selected
|
|
53
|
+
*/
|
|
54
|
+
setAriaSelected(element: HTMLElement, selected: boolean): void;
|
|
55
|
+
/**
|
|
56
|
+
* Manage focus on an element
|
|
57
|
+
* @param element - The element to focus
|
|
58
|
+
*/
|
|
59
|
+
manageFocus(element: HTMLElement): void;
|
|
60
|
+
/**
|
|
61
|
+
* Announce a message to screen readers
|
|
62
|
+
* @param message - The message to announce
|
|
63
|
+
*/
|
|
64
|
+
announceToScreenReader(message: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Announce menu item selection
|
|
67
|
+
* @param itemText - The text of the selected item
|
|
68
|
+
* @param path - The path to the item
|
|
69
|
+
*/
|
|
70
|
+
announceSelection(itemText: string, path: number[]): void;
|
|
71
|
+
/**
|
|
72
|
+
* Announce submenu state change
|
|
73
|
+
* @param itemText - The text of the submenu
|
|
74
|
+
* @param isOpen - Whether the submenu is now open
|
|
75
|
+
*/
|
|
76
|
+
announceSubMenuToggle(itemText: string, isOpen: boolean): void;
|
|
77
|
+
/**
|
|
78
|
+
* Set focus to the first interactive menu item
|
|
79
|
+
*/
|
|
80
|
+
focusFirstItem(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Set focus to the last interactive menu item
|
|
83
|
+
*/
|
|
84
|
+
focusLastItem(): void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=accessibility.controller.d.ts.map
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { BaseMenuController } from './base.controller.js';
|
|
7
|
+
/**
|
|
8
|
+
* Accessibility controller manages ARIA attributes and screen reader support
|
|
9
|
+
* Ensures the menu component is fully accessible
|
|
10
|
+
*/
|
|
11
|
+
export class AccessibilityController extends BaseMenuController {
|
|
12
|
+
constructor(host, stateController) {
|
|
13
|
+
super(host);
|
|
14
|
+
this.announcementElement = null;
|
|
15
|
+
this.stateController = stateController;
|
|
16
|
+
}
|
|
17
|
+
hostConnected() {
|
|
18
|
+
this.createAnnouncementElement();
|
|
19
|
+
this.updateAriaAttributes();
|
|
20
|
+
}
|
|
21
|
+
hostDisconnected() {
|
|
22
|
+
this.removeAnnouncementElement();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a screen reader announcement element
|
|
26
|
+
*/
|
|
27
|
+
createAnnouncementElement() {
|
|
28
|
+
if (!this.announcementElement) {
|
|
29
|
+
this.announcementElement = document.createElement('div');
|
|
30
|
+
this.announcementElement.setAttribute('role', 'status');
|
|
31
|
+
this.announcementElement.setAttribute('aria-live', 'polite');
|
|
32
|
+
this.announcementElement.setAttribute('aria-atomic', 'true');
|
|
33
|
+
this.announcementElement.style.position = 'absolute';
|
|
34
|
+
this.announcementElement.style.left = '-10000px';
|
|
35
|
+
this.announcementElement.style.width = '1px';
|
|
36
|
+
this.announcementElement.style.height = '1px';
|
|
37
|
+
this.announcementElement.style.overflow = 'hidden';
|
|
38
|
+
document.body.appendChild(this.announcementElement);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Remove the screen reader announcement element
|
|
43
|
+
*/
|
|
44
|
+
removeAnnouncementElement() {
|
|
45
|
+
if (this.announcementElement && this.announcementElement.parentNode) {
|
|
46
|
+
this.announcementElement.parentNode.removeChild(this.announcementElement);
|
|
47
|
+
this.announcementElement = null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Update all ARIA attributes throughout the menu
|
|
52
|
+
*/
|
|
53
|
+
updateAriaAttributes() {
|
|
54
|
+
try {
|
|
55
|
+
this.updateMenuRoot();
|
|
56
|
+
this.updateAllMenuItems();
|
|
57
|
+
this.updateAllSubMenus();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.handleError(error, 'updateAriaAttributes');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Update ARIA attributes on the menu root
|
|
65
|
+
*/
|
|
66
|
+
updateMenuRoot() {
|
|
67
|
+
var _a;
|
|
68
|
+
const menuRoot = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.menu-root');
|
|
69
|
+
if (menuRoot) {
|
|
70
|
+
menuRoot.setAttribute('role', 'menu');
|
|
71
|
+
menuRoot.setAttribute('aria-label', 'Main menu');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Update ARIA attributes on all menu items
|
|
76
|
+
*/
|
|
77
|
+
updateAllMenuItems() {
|
|
78
|
+
var _a;
|
|
79
|
+
const menuLinks = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.menu-link');
|
|
80
|
+
menuLinks === null || menuLinks === void 0 ? void 0 : menuLinks.forEach((link) => {
|
|
81
|
+
link.setAttribute('role', 'menuitem');
|
|
82
|
+
link.setAttribute('tabindex', '0');
|
|
83
|
+
const pathKey = link.getAttribute('data-path');
|
|
84
|
+
if (pathKey) {
|
|
85
|
+
const path = pathKey.split('-').map(Number);
|
|
86
|
+
const isSelected = this.stateController.isPathSelected(path);
|
|
87
|
+
this.setAriaSelected(link, isSelected);
|
|
88
|
+
}
|
|
89
|
+
const isDisabled = link.classList.contains('disabled');
|
|
90
|
+
if (isDisabled) {
|
|
91
|
+
link.setAttribute('aria-disabled', 'true');
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Update ARIA attributes on all submenus
|
|
97
|
+
*/
|
|
98
|
+
updateAllSubMenus() {
|
|
99
|
+
var _a;
|
|
100
|
+
const subMenus = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.sub-menu');
|
|
101
|
+
subMenus === null || subMenus === void 0 ? void 0 : subMenus.forEach((subMenu) => {
|
|
102
|
+
subMenu.setAttribute('role', 'menuitem');
|
|
103
|
+
subMenu.setAttribute('tabindex', '0');
|
|
104
|
+
const pathKey = subMenu.getAttribute('data-path');
|
|
105
|
+
if (pathKey) {
|
|
106
|
+
const path = pathKey.split('-').map(Number);
|
|
107
|
+
const isOpen = this.stateController.isSubMenuOpen(path);
|
|
108
|
+
const header = subMenu.querySelector('.sub-menu-header');
|
|
109
|
+
if (header) {
|
|
110
|
+
header.setAttribute('aria-haspopup', 'true');
|
|
111
|
+
this.setAriaExpanded(header, isOpen);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const isDisabled = subMenu.classList.contains('disabled');
|
|
115
|
+
if (isDisabled) {
|
|
116
|
+
subMenu.setAttribute('aria-disabled', 'true');
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Set aria-expanded attribute on an element
|
|
122
|
+
* @param element - The element to update
|
|
123
|
+
* @param expanded - Whether the element is expanded
|
|
124
|
+
*/
|
|
125
|
+
setAriaExpanded(element, expanded) {
|
|
126
|
+
try {
|
|
127
|
+
element.setAttribute('aria-expanded', expanded.toString());
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
this.handleError(error, 'setAriaExpanded');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Set aria-selected attribute on an element
|
|
135
|
+
* @param element - The element to update
|
|
136
|
+
* @param selected - Whether the element is selected
|
|
137
|
+
*/
|
|
138
|
+
setAriaSelected(element, selected) {
|
|
139
|
+
try {
|
|
140
|
+
if (selected) {
|
|
141
|
+
element.setAttribute('aria-selected', 'true');
|
|
142
|
+
element.setAttribute('aria-current', 'page');
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
element.removeAttribute('aria-selected');
|
|
146
|
+
element.removeAttribute('aria-current');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
this.handleError(error, 'setAriaSelected');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Manage focus on an element
|
|
155
|
+
* @param element - The element to focus
|
|
156
|
+
*/
|
|
157
|
+
manageFocus(element) {
|
|
158
|
+
try {
|
|
159
|
+
if (this.isElementInteractive(element)) {
|
|
160
|
+
element.focus();
|
|
161
|
+
// Ensure element is visible in viewport
|
|
162
|
+
element.scrollIntoView({
|
|
163
|
+
behavior: 'smooth',
|
|
164
|
+
block: 'nearest',
|
|
165
|
+
inline: 'nearest',
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
this.handleError(error, 'manageFocus');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Announce a message to screen readers
|
|
175
|
+
* @param message - The message to announce
|
|
176
|
+
*/
|
|
177
|
+
announceToScreenReader(message) {
|
|
178
|
+
try {
|
|
179
|
+
if (this.announcementElement) {
|
|
180
|
+
// Clear and set message to ensure it's announced
|
|
181
|
+
this.announcementElement.textContent = '';
|
|
182
|
+
setTimeout(() => {
|
|
183
|
+
if (this.announcementElement) {
|
|
184
|
+
this.announcementElement.textContent = message;
|
|
185
|
+
}
|
|
186
|
+
}, 100);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
this.handleError(error, 'announceToScreenReader');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Announce menu item selection
|
|
195
|
+
* @param itemText - The text of the selected item
|
|
196
|
+
* @param path - The path to the item
|
|
197
|
+
*/
|
|
198
|
+
announceSelection(itemText, path) {
|
|
199
|
+
const depth = path.length;
|
|
200
|
+
const message = `Selected ${itemText}, level ${depth}`;
|
|
201
|
+
this.announceToScreenReader(message);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Announce submenu state change
|
|
205
|
+
* @param itemText - The text of the submenu
|
|
206
|
+
* @param isOpen - Whether the submenu is now open
|
|
207
|
+
*/
|
|
208
|
+
announceSubMenuToggle(itemText, isOpen) {
|
|
209
|
+
const state = isOpen ? 'expanded' : 'collapsed';
|
|
210
|
+
const message = `${itemText} submenu ${state}`;
|
|
211
|
+
this.announceToScreenReader(message);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Set focus to the first interactive menu item
|
|
215
|
+
*/
|
|
216
|
+
focusFirstItem() {
|
|
217
|
+
const menuItems = this.getAllMenuLinks();
|
|
218
|
+
const firstInteractiveItem = menuItems.find(item => this.isElementInteractive(item));
|
|
219
|
+
if (firstInteractiveItem) {
|
|
220
|
+
this.manageFocus(firstInteractiveItem);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Set focus to the last interactive menu item
|
|
225
|
+
*/
|
|
226
|
+
focusLastItem() {
|
|
227
|
+
const menuItems = this.getAllMenuLinks();
|
|
228
|
+
const interactiveItems = menuItems.filter(item => this.isElementInteractive(item));
|
|
229
|
+
const lastItem = interactiveItems[interactiveItems.length - 1];
|
|
230
|
+
if (lastItem) {
|
|
231
|
+
this.manageFocus(lastItem);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=accessibility.controller.js.map
|