@supersoniks/concorde 4.9.98-visual-stack.1 → 4.9.98-visual-stack.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/.gitlab-ci.yml +0 -13
- package/build-infos.json +1 -1
- package/concorde-3d.bundle.js +1 -1
- package/concorde-3d.es.js +2 -2
- package/concorde-core.bundle.js +557 -622
- package/concorde-core.es.js +6025 -5575
- package/concorde-hugging-face-infer.bundle.js +1 -1
- package/concorde-hugging-face-infer.es.js +1 -1
- package/concorde-interactive.bundle.js +1162 -0
- package/concorde-interactive.es.js +10723 -0
- package/concorde-shader.bundle.js +1 -1
- package/concorde-shader.es.js +2 -2
- package/concorde-webgpu.bundle.js +1 -1
- package/concorde-webgpu.es.js +2 -2
- package/dist/concorde-3d.bundle.js +1 -1
- package/dist/concorde-3d.es.js +2 -2
- package/dist/concorde-core.bundle.js +557 -622
- package/dist/concorde-core.es.js +6025 -5575
- package/dist/concorde-hugging-face-infer.bundle.js +1 -1
- package/dist/concorde-hugging-face-infer.es.js +1 -1
- package/dist/concorde-interactive.bundle.js +1162 -0
- package/dist/concorde-interactive.es.js +10723 -0
- package/dist/concorde-shader.bundle.js +1 -1
- package/dist/concorde-shader.es.js +2 -2
- package/dist/concorde-webgpu.bundle.js +1 -1
- package/dist/concorde-webgpu.es.js +2 -2
- package/dist/docs-mock-api-sw.js +5 -1
- package/dist/docs-mock-api-sw.js.map +2 -2
- package/dist/js/addons/interactive.js +6 -0
- package/dist/js/addons/interactive.js.map +1 -0
- package/dist/js/core/components/functional/if/if.js +65 -7
- package/dist/js/core/components/functional/if/if.js.map +1 -1
- package/dist/js/core/components/functional/interactive/action.js +96 -0
- package/dist/js/core/components/functional/interactive/action.js.map +1 -0
- package/dist/js/core/components/functional/interactive/gamepad.js +206 -0
- package/dist/js/core/components/functional/interactive/gamepad.js.map +1 -0
- package/dist/js/core/components/functional/interactive/gesture.js +148 -0
- package/dist/js/core/components/functional/interactive/gesture.js.map +1 -0
- package/dist/js/core/components/functional/interactive/helpers.js +82 -0
- package/dist/js/core/components/functional/interactive/helpers.js.map +1 -0
- package/dist/js/core/components/functional/interactive/index.js +20 -0
- package/dist/js/core/components/functional/interactive/index.js.map +1 -0
- package/dist/js/core/components/functional/interactive/keyboard.js +183 -0
- package/dist/js/core/components/functional/interactive/keyboard.js.map +1 -0
- package/dist/js/core/components/functional/interactive/matrix.js +201 -0
- package/dist/js/core/components/functional/interactive/matrix.js.map +1 -0
- package/dist/js/core/components/functional/interactive/registry.js +28 -0
- package/dist/js/core/components/functional/interactive/registry.js.map +1 -0
- package/dist/js/core/components/functional/interactive/store.js +264 -0
- package/dist/js/core/components/functional/interactive/store.js.map +1 -0
- package/dist/js/core/components/functional/interactive/ticker.js +182 -0
- package/dist/js/core/components/functional/interactive/ticker.js.map +1 -0
- package/dist/js/core/components/functional/value/value.js +49 -4
- package/dist/js/core/components/functional/value/value.js.map +1 -1
- package/dist/js/core/components/ui/_css/rounded.js +34 -0
- package/dist/js/core/components/ui/_css/rounded.js.map +1 -0
- package/dist/js/core/components/ui/_css/type.js +44 -0
- package/dist/js/core/components/ui/_css/type.js.map +1 -1
- package/dist/js/core/components/ui/_i18n/ui-aria-labels.js +95 -0
- package/dist/js/core/components/ui/_i18n/ui-aria-labels.js.map +1 -0
- package/dist/js/core/components/ui/alert/alert.js +72 -87
- package/dist/js/core/components/ui/alert/alert.js.map +1 -1
- package/dist/js/core/components/ui/alert-messages/alert-messages.js +1 -0
- package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -1
- package/dist/js/core/components/ui/badge/badge.js +29 -80
- package/dist/js/core/components/ui/badge/badge.js.map +1 -1
- package/dist/js/core/components/ui/button/button.js +8 -7
- package/dist/js/core/components/ui/button/button.js.map +1 -1
- package/dist/js/core/components/ui/card/card-header.js +7 -2
- package/dist/js/core/components/ui/card/card-header.js.map +1 -1
- package/dist/js/core/components/ui/divider/divider.js +1 -1
- package/dist/js/core/components/ui/divider/divider.js.map +1 -1
- package/dist/js/core/components/ui/form/checkbox/checkbox.js +4 -20
- package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -1
- package/dist/js/core/components/ui/form/fieldset/legend-description.js +1 -1
- package/dist/js/core/components/ui/form/fieldset/legend.js +1 -1
- package/dist/js/core/components/ui/form/input/input.js +12 -15
- package/dist/js/core/components/ui/form/input/input.js.map +1 -1
- package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +363 -158
- package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -1
- package/dist/js/core/components/ui/form/radio/radio.js +1 -1
- package/dist/js/core/components/ui/form/select/select.js +3 -6
- package/dist/js/core/components/ui/form/select/select.js.map +1 -1
- package/dist/js/core/components/ui/form/textarea/textarea.js +1 -2
- package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -1
- package/dist/js/core/components/ui/image/image.js +9 -37
- package/dist/js/core/components/ui/image/image.js.map +1 -1
- package/dist/js/core/components/ui/link/link.js +25 -26
- package/dist/js/core/components/ui/link/link.js.map +1 -1
- package/dist/js/core/components/ui/modal/modal-close.js +3 -12
- package/dist/js/core/components/ui/modal/modal-close.js.map +1 -1
- package/dist/js/core/components/ui/modal/modal.js +18 -18
- package/dist/js/core/components/ui/modal/modal.js.map +1 -1
- package/dist/js/core/components/ui/pop/pop.js +131 -112
- package/dist/js/core/components/ui/pop/pop.js.map +1 -1
- package/dist/js/core/components/ui/table/table.js.map +1 -1
- package/dist/js/core/components/ui/theme/theme.js +1 -1
- package/dist/js/core/components/ui/toast/dismissed.js +9 -0
- package/dist/js/core/components/ui/toast/dismissed.js.map +1 -0
- package/dist/js/core/components/ui/toast/render-content.js +14 -0
- package/dist/js/core/components/ui/toast/render-content.js.map +1 -0
- package/dist/js/core/components/ui/toast/toast-item.js +150 -96
- package/dist/js/core/components/ui/toast/toast-item.js.map +1 -1
- package/dist/js/core/components/ui/toast/toast.js +41 -13
- package/dist/js/core/components/ui/toast/toast.js.map +1 -1
- package/dist/js/core/components/ui/tooltip/tooltip.js +144 -143
- package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -1
- package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -1
- package/dist/js/core/decorators/subscriber/derive.js +3 -1
- package/dist/js/core/decorators/subscriber/derive.js.map +1 -1
- package/dist/js/core/mixins/Fetcher.js.map +1 -1
- package/dist/js/core/mixins/FormCheckable.js +1 -8
- package/dist/js/core/mixins/FormCheckable.js.map +1 -1
- package/dist/js/core/mixins/FormElement.js +26 -53
- package/dist/js/core/mixins/FormElement.js.map +1 -1
- package/dist/js/core/utils/AncestorAttributeObserver.js +130 -55
- package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -1
- package/dist/js/core/utils/LocationHandler.js +1 -1
- package/dist/js/core/utils/LocationHandler.js.map +1 -1
- package/dist/js/core/utils/dismissed.js +23 -0
- package/dist/js/core/utils/dismissed.js.map +1 -0
- package/dist/js/core/utils/positioning.js +110 -0
- package/dist/js/core/utils/positioning.js.map +1 -0
- package/dist/js/directives.js +1 -2
- package/dist/js/directives.js.map +1 -1
- package/dist/types/addons/interactive.d.ts +6 -0
- package/dist/types/addons/interactive.d.ts.map +1 -0
- package/dist/types/core/components/functional/if/if.d.ts +14 -5
- package/dist/types/core/components/functional/if/if.d.ts.map +1 -1
- package/dist/types/core/components/functional/interactive/action.d.ts +22 -0
- package/dist/types/core/components/functional/interactive/action.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/gamepad.d.ts +37 -0
- package/dist/types/core/components/functional/interactive/gamepad.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/gesture.d.ts +26 -0
- package/dist/types/core/components/functional/interactive/gesture.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/helpers.d.ts +23 -0
- package/dist/types/core/components/functional/interactive/helpers.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/index.d.ts +20 -0
- package/dist/types/core/components/functional/interactive/index.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/keyboard.d.ts +37 -0
- package/dist/types/core/components/functional/interactive/keyboard.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/matrix.d.ts +31 -0
- package/dist/types/core/components/functional/interactive/matrix.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/registry.d.ts +23 -0
- package/dist/types/core/components/functional/interactive/registry.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/store.d.ts +46 -0
- package/dist/types/core/components/functional/interactive/store.d.ts.map +1 -0
- package/dist/types/core/components/functional/interactive/ticker.d.ts +33 -0
- package/dist/types/core/components/functional/interactive/ticker.d.ts.map +1 -0
- package/dist/types/core/components/functional/value/value.d.ts +6 -0
- package/dist/types/core/components/functional/value/value.d.ts.map +1 -1
- package/dist/types/core/components/ui/_css/rounded.d.ts +3 -0
- package/dist/types/core/components/ui/_css/rounded.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/type.d.ts +13 -0
- package/dist/types/core/components/ui/_css/type.d.ts.map +1 -1
- package/dist/types/core/components/ui/_i18n/ui-aria-labels.d.ts +83 -0
- package/dist/types/core/components/ui/_i18n/ui-aria-labels.d.ts.map +1 -0
- package/dist/types/core/components/ui/alert/alert.d.ts +14 -12
- package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -1
- package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -1
- package/dist/types/core/components/ui/badge/badge.d.ts +1 -1
- package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -1
- package/dist/types/core/components/ui/button/button.d.ts +13 -29
- package/dist/types/core/components/ui/button/button.d.ts.map +1 -1
- package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -1
- package/dist/types/core/components/ui/divider/divider.d.ts +2 -1
- package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -1
- package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +25 -73
- package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -1
- package/dist/types/core/components/ui/form/input/input.d.ts +14 -29
- package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -1
- package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +63 -65
- package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -1
- package/dist/types/core/components/ui/form/radio/radio.d.ts +1 -1
- package/dist/types/core/components/ui/form/select/select.d.ts +3 -5
- package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -1
- package/dist/types/core/components/ui/form/textarea/textarea.d.ts +12 -28
- package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -1
- package/dist/types/core/components/ui/image/image.d.ts +2 -1
- package/dist/types/core/components/ui/image/image.d.ts.map +1 -1
- package/dist/types/core/components/ui/link/link.d.ts +10 -9
- package/dist/types/core/components/ui/link/link.d.ts.map +1 -1
- package/dist/types/core/components/ui/modal/modal-close.d.ts +2 -2
- package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -1
- package/dist/types/core/components/ui/pop/pop.d.ts +12 -4
- package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -1
- package/dist/types/core/components/ui/table/table.d.ts +2 -1
- package/dist/types/core/components/ui/table/table.d.ts.map +1 -1
- package/dist/types/core/components/ui/toast/dismissed.d.ts +3 -0
- package/dist/types/core/components/ui/toast/dismissed.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/render-content.d.ts +7 -0
- package/dist/types/core/components/ui/toast/render-content.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/toast-item.d.ts +26 -9
- package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -1
- package/dist/types/core/components/ui/toast/toast.d.ts +6 -3
- package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -1
- package/dist/types/core/components/ui/toast/types.d.ts +12 -2
- package/dist/types/core/components/ui/toast/types.d.ts.map +1 -1
- package/dist/types/core/components/ui/tooltip/tooltip.d.ts +19 -11
- package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -1
- package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +3 -4
- package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -1
- package/dist/types/core/decorators/subscriber/derive.d.ts.map +1 -1
- package/dist/types/core/mixins/FormCheckable.d.ts +10 -27
- package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -1
- package/dist/types/core/mixins/FormElement.d.ts +21 -10
- package/dist/types/core/mixins/FormElement.d.ts.map +1 -1
- package/dist/types/core/mixins/FormInput.d.ts +11 -27
- package/dist/types/core/mixins/FormInput.d.ts.map +1 -1
- package/dist/types/core/utils/AncestorAttributeObserver.d.ts +17 -9
- package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -1
- package/dist/types/core/utils/LocationHandler.d.ts +3 -2
- package/dist/types/core/utils/LocationHandler.d.ts.map +1 -1
- package/dist/types/core/utils/dismissed.d.ts +3 -0
- package/dist/types/core/utils/dismissed.d.ts.map +1 -0
- package/dist/types/core/utils/positioning.d.ts +44 -0
- package/dist/types/core/utils/positioning.d.ts.map +1 -0
- package/dist/types/directives.d.ts +1 -3
- package/dist/types/directives.d.ts.map +1 -1
- package/dist/types/mixins.d.ts +22 -55
- package/dist/types/mixins.d.ts.map +1 -1
- package/docs/assets/{index-FmK4JaIM.js → index-D8MVWqY6.js} +946 -687
- package/docs/assets/index-DiD0qYvE.css +1 -0
- package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +17 -85
- package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +1 -1
- package/docs/crawl/hubs/form-components.html +13 -11
- package/docs/docs-mock-api-sw.js +5 -1
- package/docs/docs-mock-api-sw.js.map +2 -2
- package/docs/index.html +2 -2
- package/docs/llms-full.txt +12 -38
- package/docs/llms.txt +1 -1
- package/docs/src/core/components/functional/sdui/sdui.md +0 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +0 -0
- package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +14 -118
- package/docs/src/docs/_getting-started/create-a-component.md +0 -0
- package/docs/src/docs/_misc/formelement-subscriber-removal.md +1 -1
- package/docs/src/docs/search/docs-search.json +195 -200
- package/docs/src/tsconfig.json +324 -0
- package/gitlab/job_tests.sh +25 -12
- package/index.html +3 -3
- package/package.json +181 -9
- package/public/docs-mock-api-sw.js +5 -1
- package/public/docs-mock-api-sw.js.map +2 -2
- package/scripts/build-addons.mjs +2 -2
- package/scripts/post-build.mjs +9 -0
- package/src/addons/interactive.ts +5 -0
- package/src/core/components/functional/if/if.ts +54 -7
- package/src/core/components/functional/interactive/action.ts +84 -0
- package/src/core/components/functional/interactive/gamepad.ts +197 -0
- package/src/core/components/functional/interactive/gesture.ts +136 -0
- package/src/core/components/functional/interactive/helpers.spec.ts +50 -0
- package/src/core/components/functional/interactive/helpers.ts +97 -0
- package/src/core/components/functional/interactive/index.ts +25 -0
- package/src/core/components/functional/interactive/interactive.md +33 -0
- package/src/core/components/functional/interactive/keyboard.ts +171 -0
- package/src/core/components/functional/interactive/matrix.ts +185 -0
- package/src/core/components/functional/interactive/registry.ts +46 -0
- package/src/core/components/functional/interactive/store.ts +264 -0
- package/src/core/components/functional/interactive/ticker.ts +171 -0
- package/src/core/components/functional/list/list.ts +0 -0
- package/src/core/components/functional/subscriber/subscriber.ts +0 -0
- package/src/core/components/functional/value/value.ts +44 -4
- package/src/core/components/ui/_css/rounded.ts +36 -0
- package/src/core/components/ui/_css/type.ts +49 -0
- package/src/core/components/ui/_i18n/ui-aria-labels.ts +104 -0
- package/src/core/components/ui/alert/alert.md +128 -72
- package/src/core/components/ui/alert/alert.spec.ts +145 -0
- package/src/core/components/ui/alert/alert.ts +86 -91
- package/src/core/components/ui/alert-messages/alert-messages.ts +1 -1
- package/src/core/components/ui/badge/badge.md +126 -78
- package/src/core/components/ui/badge/badge.ts +29 -81
- package/src/core/components/ui/button/button.md +1 -0
- package/src/core/components/ui/button/button.ts +12 -10
- package/src/core/components/ui/card/card-header.ts +7 -2
- package/src/core/components/ui/card/card.md +120 -65
- package/src/core/components/ui/divider/divider.ts +4 -9
- package/src/core/components/ui/form/checkbox/checkbox.md +1 -1
- package/src/core/components/ui/form/checkbox/checkbox.ts +4 -20
- package/src/core/components/ui/form/fieldset/legend-description.ts +1 -1
- package/src/core/components/ui/form/fieldset/legend.ts +1 -1
- package/src/core/components/ui/form/input/input.md +1 -1
- package/src/core/components/ui/form/input/input.ts +25 -27
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +14 -118
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.ts +419 -187
- package/src/core/components/ui/form/radio/radio.ts +1 -1
- package/src/core/components/ui/form/select/select.ts +3 -6
- package/src/core/components/ui/form/textarea/textarea.md +1 -1
- package/src/core/components/ui/form/textarea/textarea.ts +1 -2
- package/src/core/components/ui/image/image.md +147 -53
- package/src/core/components/ui/image/image.ts +10 -44
- package/src/core/components/ui/link/link.md +2 -2
- package/src/core/components/ui/link/link.ts +42 -37
- package/src/core/components/ui/modal/modal-close.ts +8 -12
- package/src/core/components/ui/modal/modal.ts +18 -18
- package/src/core/components/ui/pop/pop.md +105 -1
- package/src/core/components/ui/pop/pop.ts +145 -141
- package/src/core/components/ui/table/table.ts +2 -8
- package/src/core/components/ui/theme/theme.ts +1 -1
- package/src/core/components/ui/toast/dismissed.ts +14 -0
- package/src/core/components/ui/toast/render-content.ts +13 -0
- package/src/core/components/ui/toast/toast-item.ts +179 -103
- package/src/core/components/ui/toast/toast.ts +58 -21
- package/src/core/components/ui/toast/types.ts +14 -2
- package/src/core/components/ui/tooltip/tooltip.ts +176 -154
- package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +26 -0
- package/src/core/decorators/subscriber/ancestorAttribute.ts +3 -4
- package/src/core/decorators/subscriber/derive.ts +3 -3
- package/src/core/mixins/Fetcher.ts +1 -1
- package/src/core/mixins/FormCheckable.ts +1 -8
- package/src/core/mixins/FormElement.ts +74 -76
- package/src/core/mixins/Subscriber.ts +0 -0
- package/src/core/utils/AncestorAttributeObserver.ts +183 -70
- package/src/core/utils/DataBindObserver.ts +0 -0
- package/src/core/utils/LocationHandler.ts +12 -5
- package/src/core/utils/Objects.ts +0 -0
- package/src/core/utils/dismissed.ts +22 -0
- package/src/core/utils/positioning.spec.ts +208 -0
- package/src/core/utils/positioning.ts +183 -0
- package/src/directives.ts +1 -3
- package/src/docs/_core-concept/dataFlow.md +1 -1
- package/src/docs/_decorators/ancestor-attribute.md +3 -2
- package/src/docs/_getting-started/concorde-outside.md +3 -3
- package/src/docs/_misc/formelement-subscriber-removal.md +115 -0
- package/src/docs/_misc/html-integration.md +2 -0
- package/src/docs/code.ts +3 -1
- package/src/docs/components/docs-demo-sources.ts +60 -0
- package/src/docs/docs.ts +1 -0
- package/src/docs/example/docs-input-autocomplete-demos.ts +110 -0
- package/src/docs/mock-api/router.ts +17 -1
- package/src/docs/navigation/navigation.ts +4 -0
- package/src/docs/search/docs-search.json +943 -2033
- package/src/docs/tailwind/css/tailwind.css +13 -6
- package/src/tsconfig.json +135 -6
- package/src/tsconfig.tsbuildinfo +1 -1
- package/tailwind.config.js +50 -3
- package/vite/config.js +23 -35
- package/vite.config.mts +5 -0
- package/vitest.setup.ts +49 -13
- package/docs/assets/index-BZiZXMU-.css +0 -1
|
@@ -1,97 +1,152 @@
|
|
|
1
1
|
# Card
|
|
2
2
|
|
|
3
|
+
A **surface** for grouped content: padding, radius, shadow, and semantic **`type`** colors via shared theme tokens. Compose **`sonic-card-header`**, **`sonic-card-main`**, and **`sonic-card-footer`** inside the card, or put any markup in the default slot.
|
|
4
|
+
|
|
5
|
+
Default **`type`** is `base` (page background). Use `light` for a subtle gray panel, `invert` / `neutral` for high-contrast blocks, and `primary`, `info`, `success`, `warning`, or `danger` for tinted surfaces (divider tokens apply on colored types).
|
|
6
|
+
|
|
3
7
|
## Type
|
|
8
|
+
|
|
4
9
|
<sonic-code>
|
|
5
10
|
<template>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
<div class="flex flex-wrap gap-3">
|
|
12
|
+
<sonic-card type="base" class="min-w-[8rem]">Base</sonic-card>
|
|
13
|
+
<sonic-card type="light" class="min-w-[8rem]">Light</sonic-card>
|
|
14
|
+
<sonic-card type="primary" class="min-w-[8rem]">Primary</sonic-card>
|
|
15
|
+
<sonic-card type="info" class="min-w-[8rem]">Info</sonic-card>
|
|
16
|
+
<sonic-card type="success" class="min-w-[8rem]">Success</sonic-card>
|
|
17
|
+
<sonic-card type="warning" class="min-w-[8rem]">Warning</sonic-card>
|
|
18
|
+
<sonic-card type="danger" class="min-w-[8rem]">Danger</sonic-card>
|
|
19
|
+
<sonic-card type="neutral" class="min-w-[8rem]">Neutral</sonic-card>
|
|
20
|
+
<sonic-card type="invert" class="min-w-[8rem]">Invert</sonic-card>
|
|
21
|
+
</div>
|
|
17
22
|
</template>
|
|
18
23
|
</sonic-code>
|
|
19
24
|
|
|
20
25
|
## Header
|
|
26
|
+
|
|
27
|
+
Quick titles with **`label`** and **`description`** attributes, or full control through the default slot. **`slot="suffix"`** aligns badges or actions on the right; suffix content does not shrink when the title wraps.
|
|
28
|
+
|
|
21
29
|
<sonic-code>
|
|
22
30
|
<template>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
31
|
+
<div class="grid gap-4 max-w-xl">
|
|
32
|
+
<sonic-card>
|
|
33
|
+
<sonic-card-header
|
|
34
|
+
label="Account settings"
|
|
35
|
+
description="Manage your profile and preferences."
|
|
36
|
+
></sonic-card-header>
|
|
37
|
+
<p class="m-0 text-sm opacity-80">Body content goes in the card slot or in <code>sonic-card-main</code>.</p>
|
|
38
|
+
</sonic-card>
|
|
39
|
+
|
|
40
|
+
<sonic-card type="neutral">
|
|
41
|
+
<sonic-card-header label="Notifications">
|
|
42
|
+
<sonic-card-header-description>
|
|
43
|
+
Choose what we email you about.
|
|
44
|
+
</sonic-card-header-description>
|
|
45
|
+
<sonic-badge slot="suffix" type="warning" size="xs">3 new</sonic-badge>
|
|
46
|
+
</sonic-card-header>
|
|
47
|
+
</sonic-card>
|
|
48
|
+
|
|
49
|
+
<sonic-card>
|
|
50
|
+
<sonic-card-header label="Team workspace" description="Shared with 12 members">
|
|
51
|
+
<sonic-button
|
|
52
|
+
slot="suffix"
|
|
53
|
+
shape="circle"
|
|
54
|
+
variant="outline"
|
|
55
|
+
size="sm"
|
|
56
|
+
type="default"
|
|
57
|
+
icon
|
|
58
|
+
data-aria-label="Workspace settings"
|
|
59
|
+
>
|
|
60
|
+
<sonic-icon library="iconoir" name="settings"></sonic-icon>
|
|
61
|
+
</sonic-button>
|
|
62
|
+
</sonic-card-header>
|
|
63
|
+
</sonic-card>
|
|
64
|
+
|
|
65
|
+
<sonic-card type="primary">
|
|
66
|
+
<sonic-card-header>
|
|
67
|
+
<div>Custom header</div>
|
|
68
|
+
<sonic-card-header-description>
|
|
69
|
+
Use the header slot when attributes are not enough.
|
|
70
|
+
</sonic-card-header-description>
|
|
71
|
+
<sonic-button slot="suffix" shape="circle" variant="ghost" size="sm" type="primary" icon>
|
|
72
|
+
<sonic-icon library="iconoir" name="nav-arrow-right"></sonic-icon>
|
|
73
|
+
</sonic-button>
|
|
74
|
+
</sonic-card-header>
|
|
75
|
+
</sonic-card>
|
|
76
|
+
</div>
|
|
44
77
|
</template>
|
|
45
78
|
</sonic-code>
|
|
46
79
|
|
|
80
|
+
`label` and `description` accept HTML (rendered as markup). Prefer plain text when possible; use the slot for structured content.
|
|
81
|
+
|
|
47
82
|
## Main
|
|
83
|
+
|
|
84
|
+
Optional wrapper for the primary content area (typography, media, forms).
|
|
85
|
+
|
|
48
86
|
<sonic-code>
|
|
49
87
|
<template>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
<sonic-card class="max-w-xl">
|
|
89
|
+
<sonic-card-header label="Release notes" description="Version 2.4"></sonic-card-header>
|
|
90
|
+
<sonic-card-main>
|
|
91
|
+
<p class="mt-0">
|
|
92
|
+
Improved performance on large lists and fixed an issue with keyboard navigation in menus.
|
|
93
|
+
</p>
|
|
94
|
+
<sonic-divider></sonic-divider>
|
|
95
|
+
<p class="mb-0 text-sm opacity-80">See the changelog for details.</p>
|
|
96
|
+
</sonic-card-main>
|
|
97
|
+
</sonic-card>
|
|
57
98
|
</template>
|
|
58
99
|
</sonic-code>
|
|
59
100
|
|
|
60
101
|
## Footer
|
|
102
|
+
|
|
103
|
+
Optional footer for actions, metadata, or secondary text.
|
|
104
|
+
|
|
61
105
|
<sonic-code>
|
|
62
106
|
<template>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
<
|
|
66
|
-
<
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
107
|
+
<sonic-card class="max-w-xl">
|
|
108
|
+
<sonic-card-header label="Confirm deletion"></sonic-card-header>
|
|
109
|
+
<sonic-card-main>
|
|
110
|
+
<p class="m-0">This project and all of its data will be removed permanently.</p>
|
|
111
|
+
</sonic-card-main>
|
|
112
|
+
<sonic-card-footer>
|
|
113
|
+
<sonic-divider></sonic-divider>
|
|
114
|
+
<div class="flex flex-wrap gap-2 justify-end">
|
|
115
|
+
<sonic-button variant="ghost" size="sm">Cancel</sonic-button>
|
|
116
|
+
<sonic-button type="danger" size="sm">Delete</sonic-button>
|
|
70
117
|
</div>
|
|
71
|
-
</
|
|
72
|
-
</sonic-card
|
|
73
|
-
</sonic-card>
|
|
118
|
+
</sonic-card-footer>
|
|
119
|
+
</sonic-card>
|
|
74
120
|
</template>
|
|
75
121
|
</sonic-code>
|
|
76
122
|
|
|
123
|
+
## Full example
|
|
124
|
+
|
|
125
|
+
Header, media, body, and footer together.
|
|
77
126
|
|
|
78
|
-
## Example of use
|
|
79
127
|
<sonic-code>
|
|
80
128
|
<template>
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
129
|
+
<sonic-card class="max-w-md">
|
|
130
|
+
<sonic-card-header label="Featured route" description="San Francisco → New York">
|
|
131
|
+
<sonic-icon slot="suffix" library="iconoir" name="airplane"></sonic-icon>
|
|
132
|
+
</sonic-card-header>
|
|
133
|
+
<sonic-card-main>
|
|
134
|
+
<sonic-image
|
|
135
|
+
rounded
|
|
136
|
+
ratio="16/9"
|
|
137
|
+
src="https://images.unsplash.com/photo-1436491865332-7a61a109cc05?w=800&q=80"
|
|
138
|
+
alt=""
|
|
139
|
+
></sonic-image>
|
|
140
|
+
<p class="mb-0">
|
|
141
|
+
Nonstop flight with flexible dates. Prices shown include taxes and fees.
|
|
142
|
+
</p>
|
|
143
|
+
</sonic-card-main>
|
|
144
|
+
<sonic-card-footer>
|
|
145
|
+
<div class="flex items-center justify-between gap-3 flex-wrap">
|
|
146
|
+
<span class="text-sm font-semibold">From $249</span>
|
|
147
|
+
<sonic-button type="primary" size="sm">Book</sonic-button>
|
|
148
|
+
</div>
|
|
149
|
+
</sonic-card-footer>
|
|
150
|
+
</sonic-card>
|
|
96
151
|
</template>
|
|
97
152
|
</sonic-code>
|
|
@@ -6,12 +6,13 @@ import {
|
|
|
6
6
|
query,
|
|
7
7
|
} from "lit/decorators.js";
|
|
8
8
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
9
|
+
import { Size } from "@supersoniks/concorde/core/components/ui/_css/size";
|
|
9
10
|
const tagName = "sonic-divider";
|
|
10
11
|
@customElement(tagName)
|
|
11
12
|
export class Divider extends LitElement {
|
|
12
13
|
static styles = [
|
|
13
14
|
css`
|
|
14
|
-
:host {
|
|
15
|
+
:host {
|
|
15
16
|
--sc-divider-my: 0.5rem;
|
|
16
17
|
--sc-divider-mx: 0;
|
|
17
18
|
--sc-divider-border-width: max(
|
|
@@ -150,14 +151,8 @@ export class Divider extends LitElement {
|
|
|
150
151
|
divider!: HTMLDivElement;
|
|
151
152
|
|
|
152
153
|
@property({ type: String }) label = "";
|
|
153
|
-
@property({ type: String, reflect: true }) size?:
|
|
154
|
-
|
|
155
|
-
| "xs"
|
|
156
|
-
| "sm"
|
|
157
|
-
| "md"
|
|
158
|
-
| "lg"
|
|
159
|
-
| "xl"
|
|
160
|
-
| "2xl";
|
|
154
|
+
@property({ type: String, reflect: true }) size?: Size;
|
|
155
|
+
|
|
161
156
|
@property({ type: String, reflect: true }) align:
|
|
162
157
|
| "left"
|
|
163
158
|
| "right"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
## Check all checkbox
|
|
53
53
|
<sonic-code>
|
|
54
54
|
<template>
|
|
55
|
-
<div formDataProvider="checkbox-check-all-demo"
|
|
55
|
+
<div formDataProvider="checkbox-check-all-demo">
|
|
56
56
|
<sonic-checkbox name='someSharedName' value="all" checksAll>All</sonic-checkbox>
|
|
57
57
|
<sonic-divider></sonic-divider>
|
|
58
58
|
<div class="grid gap-2">
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { html, LitElement, css, CSSResultGroup, PropertyValues } from "lit";
|
|
2
2
|
import { customElement, property, queryAssignedNodes } from "lit/decorators.js";
|
|
3
3
|
import { ifDefined } from "lit/directives/if-defined.js";
|
|
4
|
-
import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
|
|
5
4
|
import FormElement from "@supersoniks/concorde/core/mixins/FormElement";
|
|
6
5
|
import FormInput from "@supersoniks/concorde/core/mixins/FormInput";
|
|
7
6
|
import FormCheckable from "@supersoniks/concorde/core/mixins/FormCheckable";
|
|
@@ -11,29 +10,14 @@ import { fontSize } from "@supersoniks/concorde/core/components/ui/_css/size";
|
|
|
11
10
|
|
|
12
11
|
const tagName = "sonic-checkbox";
|
|
13
12
|
/**
|
|
14
|
-
* ###
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* * Par défault lorsque modifie l'input, la valeur est également mise à jour via le même dataprovider
|
|
18
|
-
* * On peut cependant décider de mettre à jour la donnée à une autre adresse en renseigne l'attribut *formDataProvider*.
|
|
19
|
-
* * Par conséquent on peut par exemple le lier à un composant *queue* (via sa propriété *dataFilterProvider*) de manière à appeller en auto une api avec des filtres.
|
|
20
|
-
* * **FormInput **
|
|
21
|
-
* Uniquement des propriétés classiques d'un input HTML. La prise en compte est ici partielle, par exemple les propriétés *placeholder*, *readonly*, *pattern*, *min* et *max* n'ont pas de sens pour un checkbox.
|
|
22
|
-
* **FormCheckable :**
|
|
23
|
-
* * La propriété checked mise à true si la valeur de la propriété du même nom dans les données du dataprovider associé contient un propriété checked.
|
|
24
|
-
* **Comportements :**
|
|
25
|
-
* * multiple (par défaut):
|
|
26
|
-
* - on peut cocher plusieurs checkbox ayant le même *name*.
|
|
27
|
-
* - la valeur enregistrée dans la propriété nommé du même nom dans formDataProvider est un tableau avec les *value* des cases cochées ayant le même *name*.
|
|
28
|
-
* * unique (Ajouter l'attribute unique au composant a l'intégration):
|
|
29
|
-
* - on ne peut cocher qu'une seule checkbox ayant le même *name*.
|
|
30
|
-
* * radio (Ajouter l'attribute radio au composant a l'intégration):
|
|
31
|
-
* Comme unique, mais on ne peut pas décocher la case sauf en en cochant une autre, comme un bouton radio.
|
|
13
|
+
* ### sonic-checkbox — FormCheckable + FormInput + FormElement
|
|
14
|
+
* Synchronise l'état coché via `formDataProvider` + `name`.
|
|
15
|
+
* Modes : multiple (défaut), `unique`, `radio`.
|
|
32
16
|
*/
|
|
33
17
|
|
|
34
18
|
@customElement(tagName)
|
|
35
19
|
export class Checkbox extends FormCheckable(
|
|
36
|
-
FormInput(FormElement(
|
|
20
|
+
FormInput(FormElement(LitElement))
|
|
37
21
|
) {
|
|
38
22
|
static styles = [
|
|
39
23
|
fontSize,
|
|
@@ -11,7 +11,7 @@ export class Legend extends LitElement {
|
|
|
11
11
|
static styles = [
|
|
12
12
|
css`
|
|
13
13
|
:host {
|
|
14
|
-
--sc-legend-font-size: 1.
|
|
14
|
+
--sc-legend-font-size: 1.25rem;
|
|
15
15
|
--sc-legend-font-weight: var(--sc-font-weight-base, 400);
|
|
16
16
|
--sc-legend-font-style: var(--sc-headings-font-style, normal);
|
|
17
17
|
--sc-legend-family: var(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<sonic-button type="info" size="sm" target="_blank" href="https://www.w3schools.com/tags/tag_input.asp#midcontentadcontainer">
|
|
4
4
|
<sonic-icon library="iconoir" name="open-new-window" slot="prefix" ></sonic-icon>
|
|
5
|
-
Native
|
|
5
|
+
Native attributes list
|
|
6
6
|
</sonic-button>
|
|
7
7
|
|
|
8
8
|
## Label
|
|
@@ -13,27 +13,28 @@ import {
|
|
|
13
13
|
description,
|
|
14
14
|
passwordToggle,
|
|
15
15
|
} from "@supersoniks/concorde/core/components/ui/form/css/form-control";
|
|
16
|
-
import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
|
|
17
16
|
import FormElement from "@supersoniks/concorde/core/mixins/FormElement";
|
|
18
17
|
import FormInput from "@supersoniks/concorde/core/mixins/FormInput";
|
|
19
18
|
import { classMap } from "lit/directives/class-map.js";
|
|
20
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
fontSize,
|
|
21
|
+
Size,
|
|
22
|
+
} from "@supersoniks/concorde/core/components/ui/_css/size";
|
|
23
|
+
import {
|
|
24
|
+
resolveUiLabel,
|
|
25
|
+
uiAriaLabels,
|
|
26
|
+
} from "@supersoniks/concorde/core/components/ui/_i18n/ui-aria-labels";
|
|
21
27
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
22
28
|
|
|
23
29
|
/**
|
|
24
|
-
* ###
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* * Par défault lorsque l'on édite l'input, la valeur est également mise à jour via le même dataprovider
|
|
28
|
-
* * On peut cependant décider de mettre à jour la donnée à une autre adresse en renseigne l'attribut *formDataProvider*.
|
|
29
|
-
* * Par conséquent on peut par exemple le lier à un composant *queue* (via sa propriété *dataFilterProvider*) de manière à appeller en auto une api avec des filtres.
|
|
30
|
-
* **FormInput :**
|
|
31
|
-
* Uniquement des propriétés classiques d'un input HTML.
|
|
30
|
+
* ### sonic-input — FormInput + FormElement
|
|
31
|
+
* Synchronise `value` via `formDataProvider` + `name`.
|
|
32
|
+
* Peut alimenter un `sonic-queue` via `dataFilterProvider` pointant sur le même store.
|
|
32
33
|
*/
|
|
33
34
|
const tagName = "sonic-input";
|
|
34
35
|
|
|
35
36
|
@customElement(tagName)
|
|
36
|
-
export class Input extends FormInput(FormElement(
|
|
37
|
+
export class Input extends FormInput(FormElement(LitElement)) {
|
|
37
38
|
static styles = [
|
|
38
39
|
fontSize,
|
|
39
40
|
formControl,
|
|
@@ -54,14 +55,7 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
|
|
|
54
55
|
/**
|
|
55
56
|
* Taille du composant, implique notamment des modifications de typo et de marge interne
|
|
56
57
|
*/
|
|
57
|
-
@property({ type: String, reflect: true }) size?:
|
|
58
|
-
| "2xs"
|
|
59
|
-
| "xs"
|
|
60
|
-
| "sm"
|
|
61
|
-
| "md"
|
|
62
|
-
| "lg"
|
|
63
|
-
| "xl"
|
|
64
|
-
| "2xl";
|
|
58
|
+
@property({ type: String, reflect: true }) size?: Size;
|
|
65
59
|
@property({ type: String }) inputmode?: string;
|
|
66
60
|
@property({ type: String }) list?: string;
|
|
67
61
|
@property({ type: String }) placeholder?: string;
|
|
@@ -108,11 +102,11 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
|
|
|
108
102
|
super.connectedCallback();
|
|
109
103
|
this.hasSlotOrProps();
|
|
110
104
|
if (this.hasAttribute("sameValueAs")) {
|
|
111
|
-
this.sameValueAsName = this.getAttribute("sameValueAs");
|
|
105
|
+
this.sameValueAsName = this.getAttribute("sameValueAs") || undefined;
|
|
112
106
|
this.sameValueAsHandle = (v: string) =>
|
|
113
107
|
(this.pattern = this.escapeRegExp(v));
|
|
114
108
|
const formPublisher = this.getFormPublisher();
|
|
115
|
-
if (!formPublisher) return;
|
|
109
|
+
if (!formPublisher || !this.sameValueAsName) return;
|
|
116
110
|
formPublisher[this.sameValueAsName].onAssign(this.sameValueAsHandle);
|
|
117
111
|
}
|
|
118
112
|
if (this.type == "password") {
|
|
@@ -169,7 +163,7 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
|
|
|
169
163
|
if (this.changeTimeoutId) clearTimeout(this.changeTimeoutId);
|
|
170
164
|
this.changeTimeoutId = setTimeout(
|
|
171
165
|
() => super.handleChange(e),
|
|
172
|
-
parseInt(this.getAttribute("inputDelayMs"))
|
|
166
|
+
parseInt(this.getAttribute("inputDelayMs") || "0"),
|
|
173
167
|
);
|
|
174
168
|
}
|
|
175
169
|
|
|
@@ -218,8 +212,8 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
|
|
|
218
212
|
//let labelStarSuffix = this.label && this.required && this.label.indexOf("*") == -1 ? " *" : "";
|
|
219
213
|
return html`
|
|
220
214
|
<label for="${this.id || "form-element"}" class="${
|
|
221
|
-
|
|
222
|
-
|
|
215
|
+
this.hasLabel ? "form-label" : "hidden"
|
|
216
|
+
}"
|
|
223
217
|
>${this.label ? unsafeHTML(this.label /*+ labelStarSuffix*/) : ""}<slot
|
|
224
218
|
name="label"
|
|
225
219
|
@slotchange=${this.hasSlotOrProps}
|
|
@@ -227,8 +221,8 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
|
|
|
227
221
|
></label>
|
|
228
222
|
|
|
229
223
|
<div @click=${this.inlineContentFocus} class="form-control ${classMap(
|
|
230
|
-
|
|
231
|
-
|
|
224
|
+
slotClasses,
|
|
225
|
+
)}">
|
|
232
226
|
<div part="content" class="${
|
|
233
227
|
this.inlineContent ? "form-element form-element-wrapper" : "contents"
|
|
234
228
|
}">
|
|
@@ -269,7 +263,11 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
|
|
|
269
263
|
shape="circle"
|
|
270
264
|
class="password-toggle"
|
|
271
265
|
@click=${this.togglePasswordVisibility}
|
|
272
|
-
|
|
266
|
+
.ariaLabel=${resolveUiLabel(
|
|
267
|
+
this.isPassword
|
|
268
|
+
? uiAriaLabels.showPassword
|
|
269
|
+
: uiAriaLabels.hidePassword,
|
|
270
|
+
)}
|
|
273
271
|
variant="unstyled"
|
|
274
272
|
>
|
|
275
273
|
<sonic-icon
|
|
@@ -1,133 +1,29 @@
|
|
|
1
1
|
# Input-autocomplete
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Champ formulaire + suggestions via [queue](#core/components/functional/queue/queue.md/queue). Valeur via `formDataProvider` + `name` ; la recherche filtre la queue (store interne).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Rendu des lignes : propriété **`.items`** (callback Lit) — voir les démos ci-dessous. Mock : `serviceURL="/docs-mock-api/geo/"`.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Simple
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`name` = paramètre de recherche = valeur formulaire.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
* It can be used with a variety of data providers, such as an API.
|
|
13
|
-
* It is fully customizable, so you can change the look and feel of the component to match your needs.
|
|
11
|
+
<docs-lit-demo for="docs-input-autocomplete-basic-demo"></docs-lit-demo>
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
## Valeur ≠ paramètre de recherche
|
|
16
14
|
|
|
15
|
+
Recherche sur `nom`, valeur formulaire = `code`. Préremplissage via `value`.
|
|
17
16
|
|
|
17
|
+
<docs-lit-demo for="docs-input-autocomplete-code-demo"></docs-lit-demo>
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Mode select
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
À la fermeture du pop, seule une valeur de la liste (ou vide) est conservée.
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
The list items are responsible for making a selection.
|
|
23
|
+
<docs-lit-demo for="docs-input-autocomplete-select-demo"></docs-lit-demo>
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
The result is that when you select an item, the input takes the value of the selected item, completing the classic suggest behavior.
|
|
25
|
+
## Navigation clavier
|
|
28
26
|
|
|
27
|
+
`data-keyboard-nav` sur le champ et les items (flèches haut / bas).
|
|
29
28
|
|
|
30
|
-
<
|
|
31
|
-
<template>
|
|
32
|
-
<sonic-input-autocomplete
|
|
33
|
-
class="w-64"
|
|
34
|
-
label="A french city name"
|
|
35
|
-
formDataProvider="autoComplete-example-base"
|
|
36
|
-
name="nom"
|
|
37
|
-
propertyName="bloop"
|
|
38
|
-
placeholder="Paris, Lyon, Tours, ..."
|
|
39
|
-
serviceurl="/docs-mock-api/geo"
|
|
40
|
-
dataproviderexpression="communes?limit=5&boost=population"
|
|
41
|
-
>
|
|
42
|
-
<template>
|
|
43
|
-
<sonic-menu-item debug radio name="nom" data-bind ::inner-html="$nom" ::value="$nom"></sonic-menu-item>
|
|
44
|
-
</template>
|
|
45
|
-
</sonic-input-autocomplete>
|
|
46
|
-
</template>
|
|
47
|
-
</sonic-code>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
## Value different from search parameter
|
|
51
|
-
|
|
52
|
-
In this example, the search parameter is separated from the name of the input. This means that the input will use the name "nom" as the search parameter, but the form data provider will be filled with the data named "siren" from the selected list item.
|
|
53
|
-
|
|
54
|
-
To do this, we need to use the `searchParam` attribute on the input element. This attribute specifies the name of the search parameter that will be used.
|
|
55
|
-
|
|
56
|
-
We also need to use the `name` and `value` attribute on the list items. This attribute specifies the value of the data provider that will be used for the selected list item.
|
|
57
|
-
|
|
58
|
-
By using these attributes, we can separate the search parameter from the name of the input and still fill the form data provider with the data from the selected list item.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<sonic-code>
|
|
62
|
-
<template>
|
|
63
|
-
<sonic-input-autocomplete
|
|
64
|
-
class="w-64"
|
|
65
|
-
label="A french city name"
|
|
66
|
-
formDataProvider="autoComplete-example"
|
|
67
|
-
name="siren"
|
|
68
|
-
value="212703771"
|
|
69
|
-
placeholder="Paris, Lyon, Tours, ..."
|
|
70
|
-
serviceurl="/docs-mock-api/geo"
|
|
71
|
-
dataproviderexpression="communes?limit=5&boost=population"
|
|
72
|
-
searchParameter="nom"
|
|
73
|
-
>
|
|
74
|
-
<template>
|
|
75
|
-
<sonic-menu-item debug radio name="siren" data-bind ::inner-html="$nom" ::value="$siren"></sonic-menu-item>
|
|
76
|
-
</template>
|
|
77
|
-
</sonic-input-autocomplete>
|
|
78
|
-
</template>
|
|
79
|
-
</sonic-code>
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
## Select autocomplete / value different from search parameter
|
|
83
|
-
|
|
84
|
-
This example is the same as the previous one, except that the `select` attribute is used. This attribute changes the look and feel of the component slightly.
|
|
85
|
-
|
|
86
|
-
Now the text is less free because, you must select either something from the list given by the service, or nothing else.
|
|
87
|
-
|
|
88
|
-
The following code shows how to use the `select` attribute in an autocomplete input:
|
|
89
|
-
|
|
90
|
-
<sonic-code>
|
|
91
|
-
<template>
|
|
92
|
-
<sonic-input-autocomplete
|
|
93
|
-
select
|
|
94
|
-
class="w-64"
|
|
95
|
-
label="A french city name"
|
|
96
|
-
formDataProvider="autoComplete-example2"
|
|
97
|
-
name="siren"
|
|
98
|
-
value="212703771"
|
|
99
|
-
placeholder="Paris, Lyon, Tours, ..."
|
|
100
|
-
serviceurl="/docs-mock-api/geo"
|
|
101
|
-
dataproviderexpression="communes?limit=5&boost=population"
|
|
102
|
-
searchParameter="nom"
|
|
103
|
-
>
|
|
104
|
-
<template>
|
|
105
|
-
<sonic-menu-item debug radio name="siren" data-bind ::inner-html="$nom" ::value="$siren"></sonic-menu-item>
|
|
106
|
-
</template>
|
|
107
|
-
</sonic-input-autocomplete>
|
|
108
|
-
</template>
|
|
109
|
-
</sonic-code>
|
|
110
|
-
|
|
111
|
-
## keyboard navigation
|
|
112
|
-
|
|
113
|
-
At the moment you can enable keyboard up/down by adding an attribut "data-keyboard-nav" on the component and its listItems
|
|
114
|
-
|
|
115
|
-
<sonic-code>
|
|
116
|
-
<template>
|
|
117
|
-
<sonic-input-autocomplete
|
|
118
|
-
class="w-64"
|
|
119
|
-
label="A french city name"
|
|
120
|
-
formDataProvider="autoComplete-example-keyboard"
|
|
121
|
-
name="nom"
|
|
122
|
-
data-keyboard-nav="nav-autocomplete"
|
|
123
|
-
placeholder="Paris, Lyon, Tours, ..."
|
|
124
|
-
serviceurl="/docs-mock-api/geo"
|
|
125
|
-
dataproviderexpression="communes?limit=60&boost=population"
|
|
126
|
-
>
|
|
127
|
-
<template>
|
|
128
|
-
<sonic-menu-item debug radio name="nom" data-keyboard-nav="nav-autocomplete" data-bind ::inner-html="$nom" ::value="$nom"></sonic-menu-item>
|
|
129
|
-
</template>
|
|
130
|
-
</sonic-input-autocomplete>
|
|
131
|
-
</template>
|
|
132
|
-
</sonic-code>
|
|
133
|
-
|
|
29
|
+
<docs-lit-demo for="docs-input-autocomplete-keyboard-demo"></docs-lit-demo>
|