neo.mjs 10.0.0-beta.5 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/RELEASE_NOTES/v10.0.0-beta.1.md +20 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.2.md +73 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.3.md +39 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.5.md +70 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.6.md +48 -0
- package/.github/RELEASE_NOTES/v10.0.0.md +52 -0
- package/.github/epic-functional-components.md +498 -0
- package/.github/ticket-asymmetric-vdom-updates.md +122 -0
- package/README.md +0 -3
- package/ServiceWorker.mjs +2 -2
- package/apps/colors/store/Colors.mjs +1 -0
- package/apps/colors/view/GridContainer.mjs +3 -0
- package/apps/colors/view/HeaderToolbar.mjs +2 -0
- package/apps/colors/view/Viewport.mjs +3 -0
- package/apps/covid/view/FooterContainer.mjs +3 -0
- package/apps/covid/view/GalleryContainer.mjs +2 -0
- package/apps/covid/view/GalleryContainerController.mjs +1 -0
- package/apps/covid/view/HeaderContainer.mjs +2 -0
- package/apps/covid/view/HelixContainer.mjs +2 -0
- package/apps/covid/view/HelixContainerController.mjs +1 -0
- package/apps/covid/view/MainContainer.mjs +3 -0
- package/apps/covid/view/TableContainer.mjs +3 -0
- package/apps/covid/view/TableContainerController.mjs +1 -0
- package/apps/covid/view/WorldMapContainer.mjs +2 -0
- package/apps/covid/view/country/Gallery.mjs +3 -0
- package/apps/covid/view/country/Helix.mjs +8 -0
- package/apps/covid/view/country/HistoricalDataTable.mjs +1 -0
- package/apps/covid/view/country/Table.mjs +2 -0
- package/apps/covid/view/mapboxGl/Component.mjs +1 -0
- package/apps/covid/view/mapboxGl/Container.mjs +2 -0
- package/apps/email/EPIC_PLAN.md +58 -0
- package/apps/email/neo-config.json +2 -2
- package/apps/email/store/Emails.mjs +11 -1
- package/apps/email/view/ComposeView.mjs +44 -0
- package/apps/email/view/MainView.mjs +89 -0
- package/apps/email/view/Viewport.mjs +4 -33
- package/apps/email/view/ViewportStateProvider.mjs +3 -3
- package/apps/form/store/SideNav.mjs +1 -0
- package/apps/form/view/FormContainer.mjs +1 -0
- package/apps/form/view/FormPageContainer.mjs +2 -0
- package/apps/form/view/SideNavList.mjs +1 -0
- package/apps/form/view/Viewport.mjs +3 -0
- package/apps/portal/childapps/preview/MainContainer.mjs +1 -0
- package/apps/portal/index.html +1 -1
- package/apps/portal/store/BlogPosts.mjs +2 -0
- package/apps/portal/store/Content.mjs +1 -0
- package/apps/portal/store/ContentSections.mjs +1 -0
- package/apps/portal/store/Examples.mjs +1 -0
- package/apps/portal/view/HeaderToolbar.mjs +1 -0
- package/apps/portal/view/Viewport.mjs +5 -0
- package/apps/portal/view/ViewportController.mjs +11 -3
- package/apps/portal/view/about/Container.mjs +2 -0
- package/apps/portal/view/about/MemberContainer.mjs +7 -0
- package/apps/portal/view/blog/Container.mjs +2 -0
- package/apps/portal/view/blog/List.mjs +2 -0
- package/apps/portal/view/examples/List.mjs +29 -19
- package/apps/portal/view/examples/TabContainer.mjs +4 -0
- package/apps/portal/view/home/ContentBox.mjs +3 -0
- package/apps/portal/view/home/FeatureSection.mjs +8 -0
- package/apps/portal/view/home/FooterContainer.mjs +4 -1
- package/apps/portal/view/home/MainContainer.mjs +2 -0
- package/apps/portal/view/home/parts/AfterMath.mjs +2 -0
- package/apps/portal/view/home/parts/BaseContainer.mjs +1 -0
- package/apps/portal/view/home/parts/Colors.mjs +4 -0
- package/apps/portal/view/home/parts/Features.mjs +2 -0
- package/apps/portal/view/home/parts/Helix.mjs +5 -0
- package/apps/portal/view/home/parts/How.mjs +4 -0
- package/apps/portal/view/home/parts/MainNeo.mjs +1 -0
- package/apps/portal/view/home/parts/References.mjs +2 -0
- package/apps/portal/view/learn/ContentComponent.mjs +11 -5
- package/apps/portal/view/learn/ContentTreeList.mjs +2 -0
- package/apps/portal/view/learn/CubeLayoutButton.mjs +1 -0
- package/apps/portal/view/learn/MainContainer.mjs +4 -0
- package/apps/portal/view/learn/PageContainer.mjs +2 -0
- package/apps/portal/view/learn/PageSectionsContainer.mjs +3 -0
- package/apps/portal/view/learn/PageSectionsList.mjs +1 -0
- package/apps/portal/view/services/Component.mjs +1 -0
- package/apps/realworld/api/Base.mjs +1 -0
- package/apps/realworld/view/HeaderComponent.mjs +4 -0
- package/apps/realworld/view/HomeComponent.mjs +7 -0
- package/apps/realworld/view/MainContainer.mjs +2 -0
- package/apps/realworld/view/MainContainerController.mjs +2 -0
- package/apps/realworld/view/article/CommentComponent.mjs +3 -0
- package/apps/realworld/view/article/Component.mjs +17 -10
- package/apps/realworld/view/article/CreateCommentComponent.mjs +2 -0
- package/apps/realworld/view/article/CreateComponent.mjs +5 -0
- package/apps/realworld/view/article/PreviewComponent.mjs +9 -0
- package/apps/realworld/view/article/TagListComponent.mjs +2 -0
- package/apps/realworld/view/user/ProfileComponent.mjs +7 -0
- package/apps/realworld/view/user/SettingsComponent.mjs +5 -0
- package/apps/realworld/view/user/SignUpComponent.mjs +3 -0
- package/apps/realworld2/api/Base.mjs +1 -0
- package/apps/realworld2/view/FooterComponent.mjs +1 -0
- package/apps/realworld2/view/HeaderToolbar.mjs +3 -0
- package/apps/realworld2/view/HomeContainer.mjs +1 -0
- package/apps/realworld2/view/MainContainer.mjs +2 -0
- package/apps/realworld2/view/MainContainerController.mjs +1 -0
- package/apps/realworld2/view/article/Helix.mjs +1 -0
- package/apps/realworld2/view/article/PreviewComponent.mjs +9 -0
- package/apps/realworld2/view/article/PreviewList.mjs +1 -0
- package/apps/realworld2/view/article/TagListComponent.mjs +2 -0
- package/apps/route/view/CenterContainer.mjs +1 -0
- package/apps/route/view/MainView.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidchart/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidgallery/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidhelix/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidmap/MainContainer.mjs +1 -0
- package/apps/sharedcovid/view/FooterContainer.mjs +3 -0
- package/apps/sharedcovid/view/GalleryContainer.mjs +2 -0
- package/apps/sharedcovid/view/GalleryContainerController.mjs +1 -0
- package/apps/sharedcovid/view/HeaderContainer.mjs +2 -0
- package/apps/sharedcovid/view/HelixContainer.mjs +2 -0
- package/apps/sharedcovid/view/HelixContainerController.mjs +1 -0
- package/apps/sharedcovid/view/MainContainer.mjs +3 -0
- package/apps/sharedcovid/view/TableContainer.mjs +3 -0
- package/apps/sharedcovid/view/TableContainerController.mjs +1 -0
- package/apps/sharedcovid/view/WorldMapContainer.mjs +2 -0
- package/apps/sharedcovid/view/country/Gallery.mjs +3 -0
- package/apps/sharedcovid/view/country/Helix.mjs +8 -0
- package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -0
- package/apps/sharedcovid/view/country/Table.mjs +2 -0
- package/apps/sharedcovid/view/mapboxGl/Component.mjs +1 -0
- package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -0
- package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +2 -0
- package/apps/shareddialog/view/DemoDialog.mjs +2 -0
- package/apps/shareddialog/view/MainContainer.mjs +2 -0
- package/apps/shareddialog/view/MainContainerController.mjs +1 -0
- package/buildScripts/addReactiveTags.mjs +191 -0
- package/buildScripts/checkReactiveTags.mjs +160 -0
- package/docs/app/store/Api.mjs +1 -0
- package/docs/app/store/Examples.mjs +1 -0
- package/docs/app/view/ApiTreeList.mjs +1 -0
- package/docs/app/view/ContentTabContainer.mjs +2 -0
- package/docs/app/view/ExamplesTreeList.mjs +2 -0
- package/docs/app/view/HeaderContainer.mjs +3 -0
- package/docs/app/view/MainContainer.mjs +5 -0
- package/docs/app/view/classdetails/HeaderComponent.mjs +1 -0
- package/docs/app/view/classdetails/MainContainer.mjs +3 -0
- package/docs/app/view/classdetails/MembersList.mjs +5 -0
- package/docs/app/view/classdetails/SourceViewComponent.mjs +2 -0
- package/examples/ConfigurationViewport.mjs +14 -8
- package/examples/calendar/weekview/MainContainer.mjs +4 -0
- package/examples/component/coronaGallery/CountryGallery.mjs +2 -0
- package/examples/component/coronaGallery/CountryStore.mjs +1 -0
- package/examples/component/coronaGallery/Viewport.mjs +3 -0
- package/examples/component/coronaGallery/ViewportController.mjs +1 -0
- package/examples/component/coronaHelix/CountryHelix.mjs +7 -0
- package/examples/component/coronaHelix/MainContainer.mjs +1 -0
- package/examples/component/gallery/ImageStore.mjs +1 -0
- package/examples/component/helix/ImageStore.mjs +1 -0
- package/examples/component/helix/Viewport.mjs +3 -0
- package/examples/component/helix/ViewportController.mjs +1 -0
- package/examples/component/multiWindowCoronaGallery/childapp/Viewport.mjs +1 -0
- package/examples/component/multiWindowHelix/childapp/Viewport.mjs +1 -0
- package/examples/component/wrapper/googleMaps/MapComponent.mjs +2 -0
- package/examples/core/config/MainContainer.mjs +2 -0
- package/examples/dialog/DemoDialog.mjs +2 -0
- package/examples/dialog/MainContainer.mjs +1 -0
- package/examples/form/field/color/MainStore.mjs +1 -0
- package/examples/functional/button/base/MainContainer.mjs +207 -0
- package/examples/functional/button/base/app.mjs +6 -0
- package/examples/functional/button/base/index.html +11 -0
- package/examples/functional/button/base/neo-config.json +6 -0
- package/examples/functional/defineComponent/Component.mjs +18 -0
- package/examples/functional/defineComponent/MainContainer.mjs +41 -0
- package/examples/functional/defineComponent/app.mjs +6 -0
- package/examples/functional/defineComponent/index.html +11 -0
- package/examples/functional/defineComponent/neo-config.json +6 -0
- package/examples/functional/hostComponent/Component.mjs +32 -0
- package/examples/functional/hostComponent/MainContainer.mjs +48 -0
- package/examples/functional/hostComponent/app.mjs +6 -0
- package/examples/functional/hostComponent/index.html +11 -0
- package/examples/functional/hostComponent/neo-config.json +6 -0
- package/examples/grid/animatedRowSorting/Viewport.mjs +1 -1
- package/examples/grid/bigData/ControlsContainer.mjs +3 -0
- package/examples/grid/bigData/GridContainer.mjs +4 -2
- package/examples/grid/bigData/MainContainer.mjs +2 -0
- package/examples/grid/bigData/MainModel.mjs +1 -0
- package/examples/grid/bigData/MainStore.mjs +3 -0
- package/examples/grid/cellEditing/MainContainer.mjs +1 -1
- package/examples/grid/container/MainContainer.mjs +1 -1
- package/examples/grid/covid/GridContainer.mjs +3 -0
- package/examples/grid/covid/MainContainer.mjs +2 -0
- package/examples/grid/covid/Store.mjs +1 -0
- package/examples/grid/nestedRecordFields/EditUserDialog.mjs +3 -0
- package/examples/grid/nestedRecordFields/Viewport.mjs +3 -1
- package/examples/list/animate/List.mjs +4 -0
- package/examples/list/animate/MainContainer.mjs +2 -0
- package/examples/list/circle/MainStore.mjs +1 -0
- package/examples/list/color/MainStore.mjs +1 -0
- package/examples/preloadingAssets/view/MainContainer.mjs +2 -0
- package/examples/stateProvider/advanced/MainContainer.mjs +1 -0
- package/examples/stateProvider/dialog/EditUserDialog.mjs +2 -0
- package/examples/stateProvider/dialog/MainContainer.mjs +1 -0
- package/examples/stateProvider/extendedClass/MainContainer.mjs +2 -0
- package/examples/stateProvider/inline/MainContainer.mjs +1 -0
- package/examples/stateProvider/inlineNoStateProvider/MainContainer.mjs +1 -0
- package/examples/stateProvider/inlineNoStateProvider/MainContainerController.mjs +2 -0
- package/examples/stateProvider/multiWindow/EditUserDialog.mjs +3 -0
- package/examples/stateProvider/multiWindow/MainContainer.mjs +1 -0
- package/examples/stateProvider/multiWindow/Viewport.mjs +1 -0
- package/examples/stateProvider/nestedData/MainContainer.mjs +1 -0
- package/examples/stateProvider/table/MainContainer.mjs +1 -0
- package/examples/table/covid/MainContainer.mjs +2 -0
- package/examples/table/covid/Store.mjs +1 -0
- package/examples/table/covid/TableContainer.mjs +3 -0
- package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -0
- package/examples/table/nestedRecordFields/Viewport.mjs +1 -0
- package/examples/todoList/version1/MainComponent.mjs +1 -1
- package/examples/toolbar/breadcrumb/view/MainContainer.mjs +2 -0
- package/examples/toolbar/paging/store/Users.mjs +1 -0
- package/examples/toolbar/paging/view/AddUserDialog.mjs +3 -0
- package/examples/toolbar/paging/view/MainContainer.mjs +3 -0
- package/examples/treeAccordion/MainContainer.mjs +2 -2
- package/examples/worker/task/MainContainer.mjs +1 -0
- package/learn/Glossary.md +1 -0
- package/learn/UsingTheseTopics.md +1 -0
- package/learn/benefits/ConfigSystem.md +2 -0
- package/learn/benefits/Effort.md +1 -0
- package/learn/benefits/Features.md +1 -0
- package/learn/benefits/FormsEngine.md +1 -0
- package/learn/benefits/FourEnvironments.md +2 -0
- package/learn/benefits/Introduction.md +2 -0
- package/learn/benefits/MultiWindow.md +3 -1
- package/learn/benefits/OffTheMainThread.md +2 -0
- package/learn/benefits/Quick.md +2 -0
- package/learn/benefits/RPCLayer.md +2 -0
- package/learn/benefits/Speed.md +2 -0
- package/learn/blog/v10-deep-dive-functional-components.md +293 -0
- package/learn/blog/v10-deep-dive-reactivity.md +522 -0
- package/learn/blog/v10-deep-dive-state-provider.md +432 -0
- package/learn/blog/v10-deep-dive-vdom-revolution.md +194 -0
- package/learn/blog/v10-post1-love-story.md +383 -0
- package/learn/comparisons/NeoVsAngular.md +90 -0
- package/learn/comparisons/NeoVsExtJs.md +178 -0
- package/learn/comparisons/NeoVsNextJs.md +124 -0
- package/learn/comparisons/NeoVsReact.md +95 -0
- package/learn/comparisons/NeoVsSolid.md +78 -0
- package/learn/comparisons/NeoVsVue.md +92 -0
- package/learn/comparisons/Overview.md +46 -0
- package/learn/gettingstarted/ComponentModels.md +2 -0
- package/learn/gettingstarted/Config.md +2 -0
- package/learn/gettingstarted/DescribingTheUI.md +2 -0
- package/learn/gettingstarted/Events.md +2 -0
- package/learn/gettingstarted/Extending.md +2 -0
- package/learn/gettingstarted/References.md +2 -0
- package/learn/gettingstarted/Setup.md +3 -2
- package/learn/gettingstarted/Workspaces.md +2 -0
- package/learn/guides/datahandling/Collections.md +1 -0
- package/learn/guides/datahandling/Records.md +1 -0
- package/learn/guides/datahandling/StateProviders.md +130 -16
- package/learn/guides/datahandling/Tables.md +1 -1
- package/learn/guides/fundamentals/ConfigSystemDeepDive.md +1 -0
- package/learn/guides/fundamentals/DeclarativeComponentTreesVsImperativeVdom.md +2 -0
- package/learn/guides/fundamentals/DeclarativeVDOMWithEffects.md +10 -8
- package/learn/guides/fundamentals/ExtendingNeoClasses.md +1 -0
- package/learn/guides/fundamentals/InstanceLifecycle.md +3 -1
- package/learn/guides/fundamentals/MainThreadAddons.md +2 -0
- package/learn/guides/specificfeatures/Mixins.md +3 -1
- package/learn/guides/specificfeatures/MultiWindow.md +3 -1
- package/learn/guides/specificfeatures/PortalApp.md +2 -0
- package/learn/guides/uibuildingblocks/ComponentsAndContainers.md +2 -0
- package/learn/guides/uibuildingblocks/CustomComponents.md +2 -0
- package/learn/guides/uibuildingblocks/Layouts.md +2 -0
- package/learn/guides/uibuildingblocks/WorkingWithVDom.md +28 -2
- package/learn/guides/userinteraction/Forms.md +2 -0
- package/learn/guides/userinteraction/events/CustomEvents.md +2 -1
- package/learn/guides/userinteraction/events/DomEvents.md +2 -0
- package/learn/javascript/ClassFeatures.md +4 -3
- package/learn/javascript/Classes.md +10 -13
- package/learn/javascript/Overrides.md +10 -6
- package/learn/javascript/Super.md +12 -8
- package/learn/tree.json +71 -64
- package/learn/tutorials/Earthquakes.md +2 -0
- package/learn/tutorials/RSP.md +3 -1
- package/learn/tutorials/TodoList.md +103 -7
- package/package.json +8 -6
- package/resources/scss/src/apps/email/ComposeView.scss +16 -0
- package/resources/scss/src/apps/email/MainView.scss +5 -0
- package/resources/scss/src/apps/portal/learn/ContentComponent.scss +5 -4
- package/src/DefaultConfig.mjs +12 -2
- package/src/Main.mjs +1 -0
- package/src/Neo.mjs +219 -166
- package/src/Xhr.mjs +1 -0
- package/src/button/Base.mjs +13 -0
- package/src/button/Effect.mjs +16 -2
- package/src/button/Split.mjs +2 -0
- package/src/calendar/store/Calendars.mjs +1 -0
- package/src/calendar/store/Colors.mjs +1 -0
- package/src/calendar/store/Events.mjs +1 -0
- package/src/calendar/view/DayComponent.mjs +2 -0
- package/src/calendar/view/EditEventContainer.mjs +4 -1
- package/src/calendar/view/MainContainer.mjs +13 -0
- package/src/calendar/view/MainContainerStateProvider.mjs +14 -28
- package/src/calendar/view/SettingsContainer.mjs +1 -0
- package/src/calendar/view/YearComponent.mjs +16 -0
- package/src/calendar/view/calendars/ColorsList.mjs +2 -0
- package/src/calendar/view/calendars/Container.mjs +2 -0
- package/src/calendar/view/calendars/EditContainer.mjs +1 -0
- package/src/calendar/view/month/Component.mjs +11 -0
- package/src/calendar/view/settings/GeneralContainer.mjs +1 -0
- package/src/calendar/view/settings/MonthContainer.mjs +1 -0
- package/src/calendar/view/settings/WeekContainer.mjs +1 -0
- package/src/calendar/view/settings/YearContainer.mjs +1 -0
- package/src/calendar/view/week/Component.mjs +15 -1
- package/src/calendar/view/week/TimeAxisComponent.mjs +4 -0
- package/src/code/LivePreview.mjs +51 -23
- package/src/collection/Base.mjs +7 -10
- package/src/collection/Filter.mjs +6 -0
- package/src/collection/Sorter.mjs +3 -0
- package/src/component/Abstract.mjs +412 -0
- package/src/component/Base.mjs +48 -1077
- package/src/component/Canvas.mjs +1 -0
- package/src/component/Chip.mjs +4 -0
- package/src/component/Circle.mjs +14 -0
- package/src/component/Clock.mjs +4 -0
- package/src/component/DateSelector.mjs +12 -0
- package/src/component/Gallery.mjs +11 -0
- package/src/component/Helix.mjs +24 -0
- package/src/component/Label.mjs +1 -0
- package/src/component/Legend.mjs +3 -0
- package/src/component/MagicMoveText.mjs +4 -0
- package/src/component/Progress.mjs +3 -0
- package/src/component/Splitter.mjs +3 -0
- package/src/component/StatusBadge.mjs +6 -0
- package/src/component/Timer.mjs +4 -0
- package/src/component/Toast.mjs +6 -0
- package/src/component/Video.mjs +1 -0
- package/src/component/mwc/Button.mjs +7 -0
- package/src/component/mwc/TextField.mjs +9 -0
- package/src/component/wrapper/AmChart.mjs +2 -0
- package/src/component/wrapper/GoogleMaps.mjs +3 -0
- package/src/component/wrapper/MapboxGL.mjs +5 -0
- package/src/component/wrapper/MonacoEditor.mjs +12 -0
- package/src/container/Accordion.mjs +2 -0
- package/src/container/Base.mjs +7 -3
- package/src/container/Panel.mjs +1 -0
- package/src/container/Viewport.mjs +1 -0
- package/src/controller/Application.mjs +1 -0
- package/src/controller/Base.mjs +1 -0
- package/src/controller/Component.mjs +1 -0
- package/src/core/Base.mjs +86 -33
- package/src/core/Compare.mjs +4 -7
- package/src/core/Config.mjs +65 -52
- package/src/core/Effect.mjs +86 -24
- package/src/core/EffectManager.mjs +117 -8
- package/src/core/IdGenerator.mjs +13 -44
- package/src/core/Observable.mjs +69 -65
- package/src/data/Model.mjs +2 -0
- package/src/data/Store.mjs +7 -0
- package/src/data/connection/WebSocket.mjs +2 -0
- package/src/date/DayViewComponent.mjs +2 -0
- package/src/date/SelectorContainer.mjs +14 -0
- package/src/dialog/Base.mjs +8 -0
- package/src/draggable/DragZone.mjs +5 -0
- package/src/draggable/tree/DragZone.mjs +1 -0
- package/src/filter/BooleanContainer.mjs +2 -0
- package/src/filter/NumberContainer.mjs +3 -0
- package/src/filter/ToggleOperatorsButton.mjs +2 -0
- package/src/form/Fieldset.mjs +6 -0
- package/src/form/field/Base.mjs +7 -0
- package/src/form/field/CheckBox.mjs +18 -0
- package/src/form/field/Chip.mjs +1 -0
- package/src/form/field/ComboBox.mjs +8 -0
- package/src/form/field/Country.mjs +1 -0
- package/src/form/field/Currency.mjs +2 -0
- package/src/form/field/Date.mjs +4 -0
- package/src/form/field/Display.mjs +1 -0
- package/src/form/field/Email.mjs +1 -0
- package/src/form/field/FileUpload.mjs +7 -0
- package/src/form/field/Hidden.mjs +1 -0
- package/src/form/field/Number.mjs +7 -0
- package/src/form/field/Password.mjs +1 -0
- package/src/form/field/Phone.mjs +3 -0
- package/src/form/field/Picker.mjs +2 -0
- package/src/form/field/Radio.mjs +1 -0
- package/src/form/field/Range.mjs +3 -0
- package/src/form/field/Search.mjs +2 -0
- package/src/form/field/Text.mjs +43 -5
- package/src/form/field/TextArea.mjs +7 -0
- package/src/form/field/Time.mjs +6 -0
- package/src/form/field/Url.mjs +3 -0
- package/src/form/field/ZipCode.mjs +2 -0
- package/src/form/field/trigger/Base.mjs +3 -0
- package/src/form/field/trigger/Clear.mjs +2 -0
- package/src/form/field/trigger/CopyToClipboard.mjs +2 -0
- package/src/form/field/trigger/Date.mjs +1 -0
- package/src/form/field/trigger/Picker.mjs +1 -0
- package/src/form/field/trigger/Search.mjs +1 -0
- package/src/form/field/trigger/SpinDown.mjs +2 -0
- package/src/form/field/trigger/SpinUp.mjs +1 -0
- package/src/form/field/trigger/Time.mjs +2 -0
- package/src/functional/_export.mjs +6 -0
- package/src/functional/button/Base.mjs +384 -0
- package/src/functional/component/Base.mjs +405 -0
- package/src/functional/defineComponent.mjs +102 -0
- package/src/functional/useConfig.mjs +52 -0
- package/src/functional/useEvent.mjs +43 -0
- package/src/grid/Body.mjs +20 -1
- package/src/grid/Container.mjs +50 -60
- package/src/grid/ScrollManager.mjs +2 -0
- package/src/grid/VerticalScrollbar.mjs +2 -0
- package/src/grid/column/Base.mjs +2 -0
- package/src/grid/header/Button.mjs +7 -0
- package/src/grid/header/Toolbar.mjs +6 -0
- package/src/grid/plugin/AnimateRows.mjs +2 -0
- package/src/layout/Base.mjs +3 -0
- package/src/layout/Card.mjs +1 -0
- package/src/layout/Cube.mjs +18 -4
- package/src/layout/Fit.mjs +1 -0
- package/src/layout/Flexbox.mjs +7 -0
- package/src/layout/Form.mjs +2 -0
- package/src/layout/Grid.mjs +1 -0
- package/src/layout/HBox.mjs +1 -0
- package/src/layout/VBox.mjs +1 -0
- package/src/list/Base.mjs +13 -0
- package/src/list/Chip.mjs +1 -0
- package/src/list/Circle.mjs +2 -0
- package/src/list/Color.mjs +1 -0
- package/src/list/plugin/Animate.mjs +2 -0
- package/src/main/DeltaUpdates.mjs +1 -0
- package/src/main/DomEvents.mjs +2 -0
- package/src/main/addon/CloneNode.mjs +1 -0
- package/src/main/addon/Cookie.mjs +1 -0
- package/src/main/addon/GoogleMaps.mjs +1 -0
- package/src/main/addon/LocalStorage.mjs +1 -0
- package/src/main/addon/MapboxGL.mjs +1 -0
- package/src/main/addon/Markdown.mjs +1 -0
- package/src/main/addon/Navigator.mjs +1 -0
- package/src/main/addon/Popover.mjs +1 -0
- package/src/main/addon/Stylesheet.mjs +1 -0
- package/src/main/addon/WindowPosition.mjs +1 -0
- package/src/manager/Component.mjs +0 -71
- package/src/manager/VDomUpdate.mjs +320 -0
- package/src/menu/List.mjs +6 -0
- package/src/menu/Model.mjs +1 -0
- package/src/menu/Panel.mjs +3 -0
- package/src/menu/Store.mjs +1 -0
- package/src/mixin/DomEvents.mjs +130 -0
- package/src/mixin/VdomLifecycle.mjs +670 -0
- package/src/plugin/Base.mjs +1 -0
- package/src/plugin/Resizable.mjs +2 -0
- package/src/selection/Model.mjs +15 -18
- package/src/selection/grid/BaseModel.mjs +1 -0
- package/src/sitemap/Component.mjs +1 -0
- package/src/state/Provider.mjs +129 -87
- package/src/state/createHierarchicalDataProxy.mjs +39 -25
- package/src/tab/Container.mjs +6 -0
- package/src/tab/Strip.mjs +1 -0
- package/src/tab/header/Button.mjs +2 -0
- package/src/tab/header/EffectButton.mjs +2 -0
- package/src/tab/header/Toolbar.mjs +1 -0
- package/src/table/Body.mjs +3 -0
- package/src/table/Container.mjs +10 -0
- package/src/table/header/Button.mjs +8 -0
- package/src/table/header/Toolbar.mjs +5 -0
- package/src/table/plugin/CellEditing.mjs +1 -0
- package/src/toolbar/Base.mjs +4 -0
- package/src/toolbar/Breadcrumb.mjs +3 -0
- package/src/toolbar/Paging.mjs +5 -0
- package/src/tooltip/Base.mjs +2 -0
- package/src/tree/List.mjs +3 -0
- package/src/util/HashHistory.mjs +1 -0
- package/src/util/KeyNavigation.mjs +2 -0
- package/src/util/Matrix.mjs +1 -0
- package/src/util/VDom.mjs +18 -5
- package/src/util/VNode.mjs +7 -1
- package/src/util/vdom/TreeBuilder.mjs +105 -0
- package/src/vdom/Helper.mjs +35 -23
- package/src/vdom/VNode.mjs +4 -6
- package/src/worker/App.mjs +1 -0
- package/src/worker/Base.mjs +2 -0
- package/src/worker/Manager.mjs +2 -0
- package/src/worker/ServiceBase.mjs +6 -1
- package/src/worker/mixin/RemoteMethodAccess.mjs +1 -6
- package/test/siesta/siesta.js +17 -2
- package/test/siesta/tests/VdomCalendar.mjs +19 -15
- package/test/siesta/tests/VdomHelper.mjs +7 -7
- package/test/siesta/tests/classic/Button.mjs +113 -0
- package/test/siesta/tests/core/Effect.mjs +10 -14
- package/test/siesta/tests/core/EffectBatching.mjs +72 -79
- package/test/siesta/tests/functional/Button.mjs +113 -0
- package/test/siesta/tests/state/ProviderNestedDataConfigs.mjs +314 -0
- package/test/siesta/tests/state/createHierarchicalDataProxy.mjs +42 -55
- package/test/siesta/tests/vdom/Advanced.mjs +14 -8
- package/test/siesta/tests/vdom/VdomAsymmetricUpdates.mjs +366 -0
- package/test/siesta/tests/vdom/VdomRealWorldUpdates.mjs +249 -0
- package/test/siesta/tests/vdom/layout/Cube.mjs +11 -7
- package/test/siesta/tests/vdom/table/Container.mjs +9 -5
- package/learn/javascript/NewNode.md +0 -31
- package/src/core/EffectBatchManager.mjs +0 -68
@@ -32,15 +32,18 @@ class CheckBox extends Field {
|
|
32
32
|
baseCls: ['neo-checkboxfield'],
|
33
33
|
/**
|
34
34
|
* @member {Boolean} checked_=false
|
35
|
+
* @reactive
|
35
36
|
*/
|
36
37
|
checked_: false,
|
37
38
|
/**
|
38
39
|
* @member {String|null} error_=null
|
40
|
+
* @reactive
|
39
41
|
*/
|
40
42
|
error_: null,
|
41
43
|
/**
|
42
44
|
* Useful for fields inside a css grid where errors should live outside the layout
|
43
45
|
* @member {Boolean} errorPositionAbsolute_=false
|
46
|
+
* @reactive
|
44
47
|
*/
|
45
48
|
errorPositionAbsolute_: false,
|
46
49
|
/**
|
@@ -53,10 +56,12 @@ class CheckBox extends Field {
|
|
53
56
|
errorTextRequired: 'Required',
|
54
57
|
/**
|
55
58
|
* @member {Boolean} groupRequired_=false
|
59
|
+
* @reactive
|
56
60
|
*/
|
57
61
|
groupRequired_: false,
|
58
62
|
/**
|
59
63
|
* @member {Boolean} hideLabel_=false
|
64
|
+
* @reactive
|
60
65
|
*/
|
61
66
|
hideLabel_: false,
|
62
67
|
/**
|
@@ -69,6 +74,7 @@ class CheckBox extends Field {
|
|
69
74
|
iconClsChecked: ['fas', 'fa-check'],
|
70
75
|
/**
|
71
76
|
* @member {String} inputType_='checkbox'
|
77
|
+
* @reactive
|
72
78
|
*/
|
73
79
|
inputType_: 'checkbox',
|
74
80
|
/**
|
@@ -77,45 +83,54 @@ class CheckBox extends Field {
|
|
77
83
|
labelBaseCls: ['neo-checkbox-label'],
|
78
84
|
/**
|
79
85
|
* @member {String[]} labelCls_=[]
|
86
|
+
* @reactive
|
80
87
|
*/
|
81
88
|
labelCls_: [],
|
82
89
|
/**
|
83
90
|
* Edge-case config in case we want to render leading content with their own selectors like:
|
84
91
|
* <span class="my-label-id-cls">E10</span> · Firstname
|
85
92
|
* @member {String|null} labelId_=null
|
93
|
+
* @reactive
|
86
94
|
*/
|
87
95
|
labelId_: null,
|
88
96
|
/**
|
89
97
|
* CSS rules for labelId
|
90
98
|
* @member {String[]} labelIdCls_=[]
|
99
|
+
* @reactive
|
91
100
|
*/
|
92
101
|
labelIdCls_: [],
|
93
102
|
/**
|
94
103
|
* Separator between labelId & labelText
|
95
104
|
* @member {String} labelIdSeparator_=' · '
|
105
|
+
* @reactive
|
96
106
|
*/
|
97
107
|
labelIdSeparator_: ' · ',
|
98
108
|
/**
|
99
109
|
* Valid values: 'left', 'top'
|
100
110
|
* @member {String} labelPosition_='left'
|
111
|
+
* @reactive
|
101
112
|
*/
|
102
113
|
labelPosition_: 'left',
|
103
114
|
/**
|
104
115
|
* @member {String} labelText_='LabelText'
|
116
|
+
* @reactive
|
105
117
|
*/
|
106
118
|
labelText_: 'LabelText',
|
107
119
|
/**
|
108
120
|
* defaults to px
|
109
121
|
* @member {Number|String} labelWidth_=150
|
122
|
+
* @reactive
|
110
123
|
*/
|
111
124
|
labelWidth_: 150,
|
112
125
|
/**
|
113
126
|
* @member {Boolean} required_=false
|
127
|
+
* @reactive
|
114
128
|
*/
|
115
129
|
required_: false,
|
116
130
|
/**
|
117
131
|
* Use case: Set this config to false for all but one item with the same name.
|
118
132
|
* @member {Boolean} showErrorTexts_=true
|
133
|
+
* @reactive
|
119
134
|
*/
|
120
135
|
showErrorTexts_: true,
|
121
136
|
/**
|
@@ -129,14 +144,17 @@ class CheckBox extends Field {
|
|
129
144
|
* Intended to get combined with form.Container: getFormState().
|
130
145
|
* See apps/form as an example.
|
131
146
|
* @member {Boolean} useAlertState_=false
|
147
|
+
* @reactive
|
132
148
|
*/
|
133
149
|
useAlertState_: false,
|
134
150
|
/**
|
135
151
|
* @member {Boolean|Number|String|null} value=true
|
152
|
+
* @reactive
|
136
153
|
*/
|
137
154
|
value: true,
|
138
155
|
/**
|
139
156
|
* @member {String|null} valueLabelText_=null
|
157
|
+
* @reactive
|
140
158
|
*/
|
141
159
|
valueLabelText_: null,
|
142
160
|
/**
|
package/src/form/field/Chip.mjs
CHANGED
@@ -53,6 +53,7 @@ class ComboBox extends Picker {
|
|
53
53
|
filterDelay : 50,
|
54
54
|
/**
|
55
55
|
* @member {String} filterOperator_='like'
|
56
|
+
* @reactive
|
56
57
|
*/
|
57
58
|
filterOperator_: 'like',
|
58
59
|
/**
|
@@ -81,6 +82,7 @@ class ComboBox extends Picker {
|
|
81
82
|
list: null,
|
82
83
|
/**
|
83
84
|
* @member {Object|null} listConfig_=null
|
85
|
+
* @reactive
|
84
86
|
*/
|
85
87
|
listConfig_: null,
|
86
88
|
/**
|
@@ -90,10 +92,12 @@ class ComboBox extends Picker {
|
|
90
92
|
pickerHeight: null,
|
91
93
|
/**
|
92
94
|
* @member {String|null} role='combobox'
|
95
|
+
* @reactive
|
93
96
|
*/
|
94
97
|
role: 'combobox',
|
95
98
|
/**
|
96
99
|
* @member {Neo.data.Store|null} store_=null
|
100
|
+
* @reactive
|
97
101
|
*/
|
98
102
|
store_: null,
|
99
103
|
/**
|
@@ -101,16 +105,19 @@ class ComboBox extends Picker {
|
|
101
105
|
* match the filter string inside the input field.
|
102
106
|
* Valid values: all, filtered
|
103
107
|
* @member {String} triggerAction_='all'
|
108
|
+
* @reactive
|
104
109
|
*/
|
105
110
|
triggerAction_: 'all',
|
106
111
|
/**
|
107
112
|
* Display the first matching result while typing
|
108
113
|
* @member {Boolean} typeAhead_=true
|
114
|
+
* @reactive
|
109
115
|
*/
|
110
116
|
typeAhead_: true,
|
111
117
|
/**
|
112
118
|
* Set this config to false, in case typing into the input field should not filter list items
|
113
119
|
* @member {Boolean} useFilter_=true
|
120
|
+
* @reactive
|
114
121
|
*/
|
115
122
|
useFilter_: true,
|
116
123
|
/**
|
@@ -122,6 +129,7 @@ class ComboBox extends Picker {
|
|
122
129
|
/**
|
123
130
|
* Default width to prevent rendering issues.
|
124
131
|
* @member {Number} width=150
|
132
|
+
* @reactive
|
125
133
|
*/
|
126
134
|
width: 150
|
127
135
|
}
|
package/src/form/field/Date.mjs
CHANGED
@@ -48,14 +48,17 @@ class DateField extends Picker {
|
|
48
48
|
hidePickerOnSelect: false,
|
49
49
|
/**
|
50
50
|
* @member {String} inputType='date'
|
51
|
+
* @reactive
|
51
52
|
*/
|
52
53
|
inputType: 'date',
|
53
54
|
/**
|
54
55
|
* @member {String|null} maxValue_=null
|
56
|
+
* @reactive
|
55
57
|
*/
|
56
58
|
maxValue_: null,
|
57
59
|
/**
|
58
60
|
* @member {String|null} minValue_=null
|
61
|
+
* @reactive
|
59
62
|
*/
|
60
63
|
minValue_: null,
|
61
64
|
/**
|
@@ -73,6 +76,7 @@ class DateField extends Picker {
|
|
73
76
|
/**
|
74
77
|
* @member {Object|Object[]} triggers=[{module: DateTrigger}]
|
75
78
|
* @protected
|
79
|
+
* @reactive
|
76
80
|
*/
|
77
81
|
triggers: [{
|
78
82
|
module: DateTrigger
|
package/src/form/field/Email.mjs
CHANGED
@@ -102,6 +102,7 @@ class FileUpload extends Field {
|
|
102
102
|
baseCls: ['neo-file-upload-field'],
|
103
103
|
/**
|
104
104
|
* @member {String[]} cls=['neo-field-empty']
|
105
|
+
* @reactive
|
105
106
|
*/
|
106
107
|
cls: ['neo-field-empty'],
|
107
108
|
/**
|
@@ -148,6 +149,7 @@ class FileUpload extends Field {
|
|
148
149
|
|
149
150
|
/**
|
150
151
|
* @member {String|null} document_=null
|
152
|
+
* @reactive
|
151
153
|
*/
|
152
154
|
document_: null,
|
153
155
|
|
@@ -211,6 +213,7 @@ class FileUpload extends Field {
|
|
211
213
|
* by the {@link #member-documentIdParameter}. It defaults to `'documentId'`.
|
212
214
|
*
|
213
215
|
* @member {String|null} downloadUrl_=null
|
216
|
+
* @reactive
|
214
217
|
*/
|
215
218
|
downloadUrl_: null,
|
216
219
|
|
@@ -240,6 +243,7 @@ class FileUpload extends Field {
|
|
240
243
|
* ```
|
241
244
|
*
|
242
245
|
* @member {String|null} documentStatusUrl_=null
|
246
|
+
* @reactive
|
243
247
|
*/
|
244
248
|
documentStatusUrl_: null,
|
245
249
|
|
@@ -273,6 +277,7 @@ class FileUpload extends Field {
|
|
273
277
|
* If this service yields an HTTP 200 status, the deletion is taken to have been successful.
|
274
278
|
*
|
275
279
|
* @member {String|null} documentDeleteUrl_=null
|
280
|
+
* @reactive
|
276
281
|
*/
|
277
282
|
documentDeleteUrl_: null,
|
278
283
|
|
@@ -286,6 +291,7 @@ class FileUpload extends Field {
|
|
286
291
|
|
287
292
|
/**
|
288
293
|
* @member {String} state_=ready
|
294
|
+
* @reactive
|
289
295
|
*/
|
290
296
|
state_: 'ready',
|
291
297
|
|
@@ -302,6 +308,7 @@ class FileUpload extends Field {
|
|
302
308
|
/**
|
303
309
|
* The error text to show below the widget
|
304
310
|
* @member {String|null} error_=null
|
311
|
+
* @reactive
|
305
312
|
*/
|
306
313
|
error_ : null,
|
307
314
|
|
@@ -35,6 +35,7 @@ class Number extends Text {
|
|
35
35
|
/**
|
36
36
|
* Prevent users from typing specific characters.
|
37
37
|
* @member {String[]|null} disabledChars=['e','E']
|
38
|
+
* @reactive
|
38
39
|
*/
|
39
40
|
disabledChars: ['e', 'E'],
|
40
41
|
/**
|
@@ -58,23 +59,28 @@ class Number extends Text {
|
|
58
59
|
/**
|
59
60
|
* false only allows changing the field using the spin buttons
|
60
61
|
* @member {Boolean} inputEditable_=true
|
62
|
+
* @reactive
|
61
63
|
*/
|
62
64
|
inputEditable_: true,
|
63
65
|
/**
|
64
66
|
* Value for the inputType_ textfield config
|
65
67
|
* @member {String} inputType='number'
|
68
|
+
* @reactive
|
66
69
|
*/
|
67
70
|
inputType: 'number',
|
68
71
|
/**
|
69
72
|
* @member {Number} maxValue_=100
|
73
|
+
* @reactive
|
70
74
|
*/
|
71
75
|
maxValue_: 100,
|
72
76
|
/**
|
73
77
|
* @member {Number} minValue_=0
|
78
|
+
* @reactive
|
74
79
|
*/
|
75
80
|
minValue_: 0,
|
76
81
|
/**
|
77
82
|
* @member {Number} stepSize_=1
|
83
|
+
* @reactive
|
78
84
|
*/
|
79
85
|
stepSize_: 1,
|
80
86
|
/**
|
@@ -84,6 +90,7 @@ class Number extends Text {
|
|
84
90
|
triggerPosition_: 'right',
|
85
91
|
/**
|
86
92
|
* @member {Boolean} useSpinButtons_=true
|
93
|
+
* @reactive
|
87
94
|
*/
|
88
95
|
useSpinButtons_: true
|
89
96
|
}
|
package/src/form/field/Phone.mjs
CHANGED
@@ -24,15 +24,18 @@ class Phone extends Text {
|
|
24
24
|
errorTextInputPattern: data => `Not a valid phone number`,
|
25
25
|
/**
|
26
26
|
* @member {RegExp|null} inputPattern=/^\+?\(?[0-9]+\)?([\-\s\.]?[/0-9]+)*$/
|
27
|
+
* @reactive
|
27
28
|
*/
|
28
29
|
inputPattern: /^\+?\(?[0-9]+\)?([\-\s\.]?[/0-9]+)*$/,
|
29
30
|
/**
|
30
31
|
* @member {Boolean} inputPatternDOM=false
|
32
|
+
* @reactive
|
31
33
|
*/
|
32
34
|
inputPatternDOM: false,
|
33
35
|
/**
|
34
36
|
* Value for the inputType_ textfield config
|
35
37
|
* @member {String} inputType='tel'
|
38
|
+
* @reactive
|
36
39
|
*/
|
37
40
|
inputType: 'tel'
|
38
41
|
}
|
@@ -58,6 +58,7 @@ class Picker extends Text {
|
|
58
58
|
/**
|
59
59
|
* @member {Boolean} pickerIsMounted_=false
|
60
60
|
* @protected
|
61
|
+
* @reactive
|
61
62
|
*/
|
62
63
|
pickerIsMounted_: false,
|
63
64
|
/**
|
@@ -79,6 +80,7 @@ class Picker extends Text {
|
|
79
80
|
/**
|
80
81
|
* @member {Object|Object[]} triggers=[]
|
81
82
|
* @protected
|
83
|
+
* @reactive
|
82
84
|
*/
|
83
85
|
triggers: [{
|
84
86
|
module: PickerTrigger
|
package/src/form/field/Radio.mjs
CHANGED
package/src/form/field/Range.mjs
CHANGED
@@ -31,11 +31,13 @@ class Range extends Number {
|
|
31
31
|
/**
|
32
32
|
* True shows a clear trigger in case the field has a non empty value.
|
33
33
|
* @member {Boolean} clearable=false
|
34
|
+
* @reactive
|
34
35
|
*/
|
35
36
|
clearable: false,
|
36
37
|
/**
|
37
38
|
* Value for the inputType_ textfield config
|
38
39
|
* @member {String} inputType='range'
|
40
|
+
* @reactive
|
39
41
|
*/
|
40
42
|
inputType: 'range',
|
41
43
|
/**
|
@@ -45,6 +47,7 @@ class Range extends Number {
|
|
45
47
|
showResultInLabel: false,
|
46
48
|
/**
|
47
49
|
* @member {Array} tickmarks_=[]
|
50
|
+
* @reactive
|
48
51
|
*/
|
49
52
|
tickmarks_: [],
|
50
53
|
/**
|
@@ -23,11 +23,13 @@ class Search extends Text {
|
|
23
23
|
/**
|
24
24
|
* Value for the hideLabel_ textfield config
|
25
25
|
* @member {Boolean} hideLabel=true
|
26
|
+
* @reactive
|
26
27
|
*/
|
27
28
|
hideLabel: true,
|
28
29
|
/**
|
29
30
|
* Value for the placeholderText_ textfield config
|
30
31
|
* @member {String} placeholderText='Search'
|
32
|
+
* @reactive
|
31
33
|
*/
|
32
34
|
placeholderText: 'Search'
|
33
35
|
}
|
package/src/form/field/Text.mjs
CHANGED
@@ -46,6 +46,7 @@ class Text extends Field {
|
|
46
46
|
autoCapitalize_: 'off',
|
47
47
|
/**
|
48
48
|
* @member {Boolean} autoComplete_=false
|
49
|
+
* @reactive
|
49
50
|
*/
|
50
51
|
autoComplete_: false,
|
51
52
|
/**
|
@@ -62,18 +63,21 @@ class Text extends Field {
|
|
62
63
|
/**
|
63
64
|
* True shows a clear trigger in case the field has a non-empty value.
|
64
65
|
* @member {Boolean} clearable_=true
|
66
|
+
* @reactive
|
65
67
|
*/
|
66
68
|
clearable_: true,
|
67
69
|
/**
|
68
70
|
* True will reset the field to its initial value config.
|
69
71
|
* Recommended for fields with required: true
|
70
72
|
* @member {Boolean} clearToOriginalValue_=false
|
73
|
+
* @reactive
|
71
74
|
*/
|
72
75
|
clearToOriginalValue_: false,
|
73
76
|
/**
|
74
77
|
* Prevent users from typing specific characters.
|
75
78
|
* E.g. disabling +-e for NumberFields
|
76
79
|
* @member {String[]|null} disabledChars_=null
|
80
|
+
* @reactive
|
77
81
|
*/
|
78
82
|
disabledChars_: null,
|
79
83
|
/**
|
@@ -83,6 +87,7 @@ class Text extends Field {
|
|
83
87
|
* For example picker fields such as `Date` and `Select` may still have their
|
84
88
|
* values changed by selecting from the picker using keyboard or pointer.
|
85
89
|
* @member {Boolean} editable_=true
|
90
|
+
* @reactive
|
86
91
|
*/
|
87
92
|
editable_: true,
|
88
93
|
/**
|
@@ -92,11 +97,13 @@ class Text extends Field {
|
|
92
97
|
emptyValue: null,
|
93
98
|
/**
|
94
99
|
* @member {String|null} error_=null
|
100
|
+
* @reactive
|
95
101
|
*/
|
96
102
|
error_: null,
|
97
103
|
/**
|
98
104
|
* Useful for fields inside a css grid where errors should live outside the layout
|
99
105
|
* @member {Boolean} errorPositionAbsolute_=false
|
106
|
+
* @reactive
|
100
107
|
*/
|
101
108
|
errorPositionAbsolute_: false,
|
102
109
|
/**
|
@@ -120,10 +127,12 @@ class Text extends Field {
|
|
120
127
|
errorTextRequired: 'Required',
|
121
128
|
/**
|
122
129
|
* @member {Boolean} hideLabel_=false
|
130
|
+
* @reactive
|
123
131
|
*/
|
124
132
|
hideLabel_: false,
|
125
133
|
/**
|
126
134
|
* @member {RegExp|null} inputPattern_=null
|
135
|
+
* @reactive
|
127
136
|
*/
|
128
137
|
inputPattern_: null,
|
129
138
|
/**
|
@@ -131,14 +140,17 @@ class Text extends Field {
|
|
131
140
|
* The regex support for input based patterns is not fully there yet, so feel free to disable this feature
|
132
141
|
* if needed (E.g. form.field.Phone).
|
133
142
|
* @member {Boolean} inputPatternDOM_=true
|
143
|
+
* @reactive
|
134
144
|
*/
|
135
145
|
inputPatternDOM_: true,
|
136
146
|
/**
|
137
147
|
* @member {String} inputType_='text'
|
148
|
+
* @reactive
|
138
149
|
*/
|
139
150
|
inputType_: 'text',
|
140
151
|
/**
|
141
152
|
* @member {String|null} inputValue_=null
|
153
|
+
* @reactive
|
142
154
|
*/
|
143
155
|
inputValue_: null,
|
144
156
|
/**
|
@@ -147,54 +159,65 @@ class Text extends Field {
|
|
147
159
|
labelBaseCls: ['neo-textfield-label'],
|
148
160
|
/**
|
149
161
|
* @member {String[]} labelCls_=[]
|
162
|
+
* @reactive
|
150
163
|
*/
|
151
164
|
labelCls_: [],
|
152
165
|
/**
|
153
166
|
* Edge-case config in case we want to render leading content with their own selectors like:
|
154
167
|
* <span class="my-label-id-cls">E10</span> • Firstname
|
155
168
|
* @member {String|null} labelId_=null
|
169
|
+
* @reactive
|
156
170
|
*/
|
157
171
|
labelId_: null,
|
158
172
|
/**
|
159
173
|
* CSS rules for labelId
|
160
174
|
* @member {String[]} labelIdCls_=[]
|
175
|
+
* @reactive
|
161
176
|
*/
|
162
177
|
labelIdCls_: [],
|
163
178
|
/**
|
164
179
|
* Separator between labelId & labelText
|
165
180
|
* @member {String} labelIdSeparator_=' · '
|
181
|
+
* @reactive
|
166
182
|
*/
|
167
183
|
labelIdSeparator_: ' · ',
|
168
184
|
/**
|
169
185
|
* @member {String} labelOptionalText_=' (Optional)'
|
186
|
+
* @reactive
|
170
187
|
*/
|
171
188
|
labelOptionalText_: ' (Optional)',
|
172
189
|
/**
|
173
190
|
* Valid values: 'bottom', 'inline', 'left', 'right', 'top'
|
174
191
|
* @member {String} labelPosition_='left'
|
192
|
+
* @reactive
|
175
193
|
*/
|
176
194
|
labelPosition_: 'left',
|
177
195
|
/**
|
178
196
|
* @member {String} labelText_='LabelText'
|
197
|
+
* @reactive
|
179
198
|
*/
|
180
199
|
labelText_: 'LabelText',
|
181
200
|
/**
|
182
201
|
* defaults to px
|
183
202
|
* @member {Number|String} labelWidth_=150
|
203
|
+
* @reactive
|
184
204
|
*/
|
185
205
|
labelWidth_: 150,
|
186
206
|
/**
|
187
207
|
* The maximum amount of chars which you can enter into this field
|
188
208
|
* @member {Number|null} maxLength_=null
|
209
|
+
* @reactive
|
189
210
|
*/
|
190
211
|
maxLength_: null,
|
191
212
|
/**
|
192
213
|
* The minimum amount of chars which you can enter into this field
|
193
214
|
* @member {Number|null} minLength_=null
|
215
|
+
* @reactive
|
194
216
|
*/
|
195
217
|
minLength_: null,
|
196
218
|
/**
|
197
219
|
* @member {String|null} placeholderText_=null
|
220
|
+
* @reactive
|
198
221
|
*/
|
199
222
|
placeholderText_: null,
|
200
223
|
/**
|
@@ -203,19 +226,23 @@ class Text extends Field {
|
|
203
226
|
* The input field will be read-only and other ways of changing the field's value
|
204
227
|
* (such as by operating pickers) will be disabled.
|
205
228
|
* @member {Boolean} readOnly_=false
|
229
|
+
* @reactive
|
206
230
|
*/
|
207
231
|
readOnly_: false,
|
208
232
|
/**
|
209
233
|
* @member {Boolean} required_=false
|
234
|
+
* @reactive
|
210
235
|
*/
|
211
236
|
required_: false,
|
212
237
|
/**
|
213
238
|
* @member {Boolean} showOptionalText_=false
|
239
|
+
* @reactive
|
214
240
|
*/
|
215
241
|
showOptionalText_: false,
|
216
242
|
/**
|
217
243
|
* null => Follow the element's default behavior for spell checking
|
218
244
|
* @member {Boolean|null} spellCheck_=false
|
245
|
+
* @reactive
|
219
246
|
*/
|
220
247
|
spellCheck_: false,
|
221
248
|
/**
|
@@ -224,14 +251,17 @@ class Text extends Field {
|
|
224
251
|
subLabelBaseCls: ['neo-textfield-sublabel'],
|
225
252
|
/**
|
226
253
|
* @member {String[]} subLabelCls_=[]
|
254
|
+
* @reactive
|
227
255
|
*/
|
228
256
|
subLabelCls_: [],
|
229
257
|
/**
|
230
258
|
* @member {String} subLabelText_=null
|
259
|
+
* @reactive
|
231
260
|
*/
|
232
261
|
subLabelText_: null,
|
233
262
|
/**
|
234
263
|
* @member {Object|Object[]|null} triggers_=null
|
264
|
+
* @reactive
|
235
265
|
*/
|
236
266
|
triggers_: null,
|
237
267
|
/**
|
@@ -239,6 +269,7 @@ class Text extends Field {
|
|
239
269
|
* Intended to get combined with form.Container: getFormState().
|
240
270
|
* See apps/form as an example.
|
241
271
|
* @member {Boolean} useAlertState_=false
|
272
|
+
* @reactive
|
242
273
|
*/
|
243
274
|
useAlertState_: false,
|
244
275
|
/**
|
@@ -249,6 +280,7 @@ class Text extends Field {
|
|
249
280
|
/**
|
250
281
|
* get value can be xssProtected and values are escaped
|
251
282
|
* @member {Boolean} xssProtected_=false
|
283
|
+
* @reactive
|
252
284
|
*/
|
253
285
|
xssProtected_: false,
|
254
286
|
/**
|
@@ -1359,13 +1391,19 @@ class Text extends Field {
|
|
1359
1391
|
onInputValueChange(data) {
|
1360
1392
|
let me = this,
|
1361
1393
|
oldValue = me.value,
|
1362
|
-
inputValue = data.value
|
1363
|
-
vnode = VNodeUtil.find(me.vnode, {nodeName: 'input'});
|
1394
|
+
inputValue = data.value;
|
1364
1395
|
|
1365
|
-
|
1366
|
-
|
1396
|
+
// Find the VNode for the real input element within the component's vnode tree.
|
1397
|
+
const {vnode: inputVNode} = VNodeUtil.find(me.vnode, {nodeName: 'input'}) || {};
|
1398
|
+
|
1399
|
+
if (inputVNode) {
|
1400
|
+
// This is the critical synchronization step. The user's input has changed the
|
1401
|
+
// real DOM on the Main Thread. We must manually update our "last known state"
|
1402
|
+
// (this.vnode) to match this reality *before* the next diffing cycle runs.
|
1403
|
+
// This prevents the framework from sending a redundant delta update that could
|
1404
|
+
// overwrite the user's input or cause cursor jumps.
|
1367
1405
|
// Required e.g. for validation -> revert a wrong user input
|
1368
|
-
|
1406
|
+
inputVNode.attributes.value = inputValue
|
1369
1407
|
}
|
1370
1408
|
|
1371
1409
|
if (Neo.isString(inputValue)) {
|