status-desktop/storybook/PagesModel.qml
Stefan 81c3463816 feat(wallet): implement DerivationPathInput control
The enforcing of the derivation path editing rules is done in a structured
way by handling all the changes on the array of `Element` stored in
d.elements and then recomposing the HTML string to be displayed after
every change.

Main limitation is the workaround in `onTextChanged` that regenerates
the text in order to dismiss foreign characters introduced by pasting
which I couldn't find a way to disable without disabling also the ability
to copy content to clipboard.

Highlights:
- Implement DerivationPathInput control that intercepts the modifiable
keyboard events in order to edit the visible TextEdit.text while
respecting the requirements of the derivation path editing
- Implement a JS Controller that handles the logic of the
  decomposing and recomposing the derivation path string
- Add anew StatusQ with the TextEdit basic look and feel to be used
  in DerivationPathInput control without duplicating the style
- Allow passing modifiable events that are not generating characters in
  order to allow copy to clipboard
- Disable add account when control is in error state
- Limit to maximum 5 elements in the derivation path

Testing:
- Integrate the control with StoryBook for a quick preview of the
  control
- Add unit tests for the Controller basic functionality and regression
  for the main control Item
- Removed forcing x64 architecture on apple arm64 hardware from the
  storybook build configuration

Note: initially the implementation was suppose to be simple parse the
derivation path string edit elements and format it. However, I could not
find a quick way fix the circular dependency issue between editing the
text and reformatting it. The solution was to use a one way from the
structured data to the formatted string which complicates the
implementation logic.

Closes: #9890
2023-03-31 18:14:50 +04:00

193 lines
4.3 KiB
QML

import QtQuick 2.14
ListModel {
ListElement {
title: "ProfileDialogView"
section: "Views"
}
ListElement {
title: "CommunitiesPortalLayout"
section: "Views"
}
ListElement {
title: "CommunityNewPermissionView"
section: "Views"
}
ListElement {
title: "ProfileFetchingView"
section: "Views"
}
ListElement {
title: "LoginView"
section: "Views"
}
ListElement {
title: "AboutView"
section: "Views"
}
ListElement {
title: "CommunityPermissionsView"
section: "Views"
}
ListElement {
title: "JoinCommunityView"
section: "Views"
}
ListElement {
title: "CommunityNewCollectibleView"
section: "Views"
}
ListElement {
title: "CommunityCollectibleView"
section: "Views"
}
ListElement {
title: "CommunityMintedTokensView"
section: "Views"
}
ListElement {
title: "StatusCommunityCard"
section: "Panels"
}
ListElement {
title: "CommunityProfilePopupInviteFriendsPanel"
section: "Panels"
}
ListElement {
title: "CommunityProfilePopupInviteMessagePanel"
section: "Panels"
}
ListElement {
title: "UserListPanel"
section: "Panels"
}
ListElement {
title: "CommunityPermissionsSettingsPanel"
section: "Panels"
}
ListElement {
title: "PermissionQualificationPanel"
section: "Panels"
}
ListElement {
title: "PermissionConflictWarningPanel"
section: "Panels"
}
ListElement {
title: "CommunityColumnHeaderPanel"
section: "Panels"
}
ListElement {
title: "JoinPermissionsOverlayPanel"
section: "Panels"
}
ListElement {
title: "DidYouKnowSplashScreen"
section: "Panels"
}
ListElement {
title: "CommunityMintTokensSettingsPanel"
section: "Panels"
}
ListElement {
title: "CommunityAirdropsSettingsPanel"
section: "Panels"
}
ListElement {
title: "InviteFriendsToCommunityPopup"
section: "Popups"
}
ListElement {
title: "CreateChannelPopup"
section: "Popups"
}
ListElement {
title: "HoldingsDropdown"
section: "Popups"
}
ListElement {
title: "InDropdown"
section: "Popups"
}
ListElement {
title: "CommunityIntroDialog"
section: "Popups"
}
ListElement {
title: "CommunityTokenPermissionsPopup"
section: "Popups"
}
ListElement {
title: "SignMintTokenTransactionPopup"
section: "Popups"
}
ListElement {
title: "MembersSelector"
section: "Components"
}
ListElement {
title: "ImagesGridView"
section: "Components"
}
ListElement {
title: "ContactsListAndSearch"
section: "Components"
}
ListElement {
title: "StatusChatInput"
section: "Components"
}
ListElement {
title: "StatusChatListAndCategories"
section: "Components"
}
ListElement {
title: "StatusScrollView"
section: "Components"
}
ListElement {
title: "StatusMessage"
section: "Components"
}
ListElement {
title: "StatusDotsLoadingIndicator"
section: "Components"
}
ListElement {
title: "StatusFlowSelector"
section: "Components"
}
ListElement {
title: "StatusItemSelector"
section: "Components"
}
ListElement {
title: "StatusGroupBox"
section: "Components"
}
ListElement {
title: "AirdropTokensSelector"
section: "Components"
}
ListElement {
title: "StatusEmojiAndColorComboBox"
section: "Components"
}
ListElement {
title: "DerivationPathInput"
section: "Components"
}
ListElement {
title: "BrowserSettings"
section: "Settings"
}
ListElement {
title: "LanguageCurrencySettings"
section: "Settings"
}
ListElement {
title: "ProfileSocialLinksPanel"
section: "Panels"
}
}