Commit Graph

1149 Commits

Author SHA1 Message Date
Patryk Osmaczko c84651dc5c chore: update README and build script 2022-09-21 18:20:12 +02:00
Patryk Osmaczko de0823a2e2 bump vendor/SortFilterProxyModel
iterates: status-im/status-desktop#6510
2022-09-21 18:20:12 +02:00
Patryk Osmaczko c6c276d8c8 chore(git): add vendor/SortFilterProxyModel
iterates: status-im/status-desktop#6510
2022-09-21 18:20:12 +02:00
Patryk Osmaczko 6dd8c5fa46 feat: use cmake instead of qmake
- cmake is superior to qmake (e.g. linking custom libraries)
- maintaining two build system generators is costly

iterates: status-im/status-desktop#6510
2022-09-21 18:20:12 +02:00
Alexandra Betouni 03bc2e6184 feat(StatusListItem): adding title text icon (#785)
Needed for https://github.com/status-im/status-desktop/issues/6494
2022-09-21 18:20:12 +02:00
Alexandra Betouni 9dacfb9bb6 fix(StatusQ): Added/updated icon assets (#786)
Nedded for: https://github.com/status-im/status-desktop/issues/6494
2022-09-21 18:20:12 +02:00
Alexandra Betouni 3ac6f48fbd fix(StatusActivityCenterButton): updated offset values (#780)
Closes https://github.com/status-im/status-desktop/issues/6350
2022-09-21 18:20:12 +02:00
Alexandra Betouni 57d750e514 fix(demo/CreateChatView): fixed layout issues (#783)
As part of https://github.com/status-im/status-desktop/issues/6452
2022-09-21 18:20:12 +02:00
Alexandra Betouni e848ee3ba7 fix(StatusBaseButton): centered button's content (#779)
Closes #724
2022-09-21 18:20:12 +02:00
Noelia 2150b5f32b refactor(StatusPickerButton): Component refactor
Component refactor to have a clean and easy-to-read code.
Unnecessary stuff removed.

BREAKING CHANGES: Removed unnecessary properties since the parent already has them.
2022-09-21 18:20:12 +02:00
Lukáš Tinkl 33154a178a fix(SearchPopup): align with design
Needed for status-im/status-desktop#6428

- set the default icon background color to "transparent"; otherwise it
would be black when unset
- set the popup default size to 560x122 (as designed)
- add placeholder for the search field
- correct the font and icon sizes, spacing and margins according to
design
- fix some warnings
2022-09-21 18:20:12 +02:00
Lukáš Tinkl bee3e91423 fix(StatusCheckBox): enable setting the font size
add a possibility to override the font size for the contentItem's
StatusBaseText

otherwise it's impossible to do stuff like:
```
StatusCheckBox {
  font.pixelSize: 15
}
```¨
2022-09-21 18:20:12 +02:00
Mikhail Rogachev bd2932594a feat(StatusScrollView): New scrollview component without twitches (#766) 2022-09-21 18:20:12 +02:00
Khushboo-dev-cpp 170660a6be fix(StatusAssetSelector): Fixes the issue of longer text overlapping with the arrow. Have also added a max width for the text after which it should elide (#772) 2022-09-21 18:20:12 +02:00
Pascal Precht 85ca2dc3b3 feat(StatusStackModal): introduce `prevAction` API
This adds a possible `prevAction` hook to `stackLayout.currentItem`
which is triggered (if it exists) when the stack modal's back button is
hit.
2022-09-21 18:20:12 +02:00
Pascal Precht cf5461799f fix(StatusBaseInput): ensure correct text color is set for disabled
state
2022-09-21 18:20:12 +02:00
Khushboo-dev-cpp 9f87c24a6e fix: Minors fixes for issues found when using StatusFloatingButtons and implementing new SendModal (#748)
1. Fix the issue of floating buttons having incorrect color in Dark theme
2. Added balances param in StatusAssetSelector. ideally should be removed in another task as it is not the correct place for business logic
2022-09-21 18:20:12 +02:00
Khushboo-dev-cpp f8b5beb61c feat(StatusCard): Create a new reusbale card component (#731)
closes #582
2022-09-21 18:20:12 +02:00
Noelia e106f93c4d feat(StatusItemSelector): Component improvements
-  Added `popupItem` property
- Replaced `GridLayout` to `Flow`.
- Added add item logic.
- Added operators logic.
- Added basic documentation.
- Added to sandbox.
2022-09-21 18:20:12 +02:00
Noelia cd0e458ad2 feat(StatusIconTextButton): Created new control
It defines a button composed with an icon and plain text.
It has been documented and added to sandbox.
2022-09-21 18:20:12 +02:00
Noelia 4c3196a255 feat(StatusFloatValidator): Updated default `bottom` and `top` values 2022-09-21 18:20:12 +02:00
Noelia 694496ce75 feat(StatusSwitchTabButton): Added property `pixelSize` 2022-09-21 18:20:12 +02:00
Noelia 0c26e7e35b feat(StatusPickerButton): Added configurable image in front of text 2022-09-21 18:20:12 +02:00
Noelia 6b7a59bae5 chore(icons): Added arrow icon 2022-09-21 18:20:12 +02:00
Noelia 7df9e18840 feat(StatusDropdown): Basic dropdown template 2022-09-21 18:20:12 +02:00
Noelia 96dad45f70 feat(StatusBaseInput): Updated leftMargin depending if it is set from outside 2022-09-21 18:20:12 +02:00
Noelia db2fda5ed4 feat(StatusInput): Added alias property to font and binding to left / right paddings 2022-09-21 18:20:12 +02:00
Noelia 264a45cec3 feat(StatusItemSelector): First component iteration
- Layout, basic properties and signal.
- Default tag displayed.
- TODO: Selector logic.
2022-09-21 18:20:11 +02:00
Alexandra Betouni 828339bf7c fix(CreateChatView): fixed no contacts text alignment (#767)
As part of https://github.com/status-im/status-desktop/issues/6354
2022-09-21 18:20:11 +02:00
Alexandra Betouni 27491d7fee fix(StatusAppChatView): Updated layout based on new designs (#765)
As part of https://github.com/status-im/status-desktop/issues/6352
2022-09-21 18:20:11 +02:00
Olufemi Ade-Olusile d9feeff1a9 chore(StatusIcon): Include Object Name to Status Icon (#761)
* Include auto generated object names for all Icons.

This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274

* Include auto generated object names for all Icons.

This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274

* Include auto generated object names for all Icons.

This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274

* refactor(isContact): rename isMutualContact to isContact

BREAKING CHANGE: isMutualContact is replaced by isContact anywhere it was used

* fix(StatusStackModal): init the next/finish buttons

call `updateRightButtons()` also on creation to correctly initialize the
Next and Finish buttons in derived classes, when one overrrides these

can be seen in the Backup Seed dialog where the Next button is not
enabled even though all 3 boxes are checked

* feat(StatusFontSettings): Add StatusFontSettings component to change StatusMenuItems font attributes (#749)

Required by #6090

* fix(StatusPinInput): `forceFocus` function exposed

* fix(StatusTagSelector): corrected font size in to label

Needed for https://github.com/status-im/status-desktop/issues/6349

* fix(StatusActivityCenterButton): fixed actvity icon position (#763)

Closes https://github.com/status-im/status-desktop/issues/6350

* Include auto generated object names for all Icons.

This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274

* Include auto generated object names for all Icons.

This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274

* Include auto generated object names for all Icons.

This will help Squish tests easily identify Icons. Which is used in test case https://github.com/status-im/status-desktop/issues/6274

Co-authored-by: Jonathan Rainville <rainville.jonathan@gmail.com>
Co-authored-by: Lukáš Tinkl <lukast@status.im>
Co-authored-by: Michał Iskierko <61889657+endulab@users.noreply.github.com>
Co-authored-by: Sale Djenic <aleksandardjenic@status.im>
Co-authored-by: Alexandra Betouni <31625338+alexandraB99@users.noreply.github.com>
2022-09-21 18:20:11 +02:00
Alexandra Betouni c63ecee172 fix(StatusActivityCenterButton): fixed actvity icon position (#763)
Closes https://github.com/status-im/status-desktop/issues/6350
2022-09-21 18:20:11 +02:00
Alexandra Betouni 052b37a348 fix(StatusTagSelector): corrected font size in to label
Needed for https://github.com/status-im/status-desktop/issues/6349
2022-09-21 18:20:11 +02:00
Sale Djenic 1138a1eb1f fix(StatusPinInput): `forceFocus` function exposed 2022-09-21 18:20:11 +02:00
Michał Iskierko 88e21c0a91 feat(StatusFontSettings): Add StatusFontSettings component to change StatusMenuItems font attributes (#749)
Required by #6090
2022-09-21 18:20:11 +02:00
Lukáš Tinkl ea24acd7ce fix(StatusStackModal): init the next/finish buttons
call `updateRightButtons()` also on creation to correctly initialize the
Next and Finish buttons in derived classes, when one overrrides these

can be seen in the Backup Seed dialog where the Next button is not
enabled even though all 3 boxes are checked
2022-09-21 18:20:11 +02:00
Jonathan Rainville 524168410d refactor(isContact): rename isMutualContact to isContact
BREAKING CHANGE: isMutualContact is replaced by isContact anywhere it was used
2022-09-21 18:20:11 +02:00
Lukáš Tinkl cd2bb8c165 fix(StatusChatList): StatusChatListItem should follow parent's width
both StatusChatList and StatusChatListItem have the same hardcoded width
of 288, so if we want to make the former smaller, StatusChatListItem has
to obey that, otherwise it's cut on its right side in status-desktop

Status Desktop's new designs have a smaller width (272), this fix is
needed for status-im/status-desktop#6343
2022-09-21 18:20:11 +02:00
Kamil K e268edb988 fix: handle animations by higher level nodes or states 2022-09-21 18:20:11 +02:00
Lukáš Tinkl b8dcbb6187 fix(models): flag/currency icons are rendered blurred
exchange language/currency icons, PNG->SVG
2022-09-21 18:20:11 +02:00
Lukáš Tinkl dd38cfc0de fix(StatusIcon): flag/currency icons are rendered blurred
- set the Image's sourceSize only if it's an SVG, otherwise it is
rendered blurry
- remove antialiasing/mipmap; it's not the correct fix, doesn't really
improve the visual quality for smallish items like icons and just causes
memory/GPU overhead
2022-09-21 18:20:11 +02:00
Patryk Osmaczko 9a076ee49c feat(StatusDialog): introduce StatusDialog
closes: #725
2022-09-21 18:20:11 +02:00
Lukáš Tinkl 8fd5f5b3bb fix(sandbox): enable the hover effects by default (#751)
Similar to what we did in status desktop under
d0a26a326e

- since Qt 5.xy, hover is not enabled by default for QQC2, so enable it
unconditionally as we are a desktop app anyway
- this fixes several hover effects being broken, mostly for builtin
components like MenuItem and some buttons (eg. the leftmost NavBar)
where we haven't enabled those with `hoverEnabled: true` explicitely
2022-09-21 18:20:11 +02:00
Lukáš Tinkl f145d30350 fix(@sandbox): greatly speed up (re)build times (#746)
since most of the compilation time is spent on creating the QRC bundle
and the resulting binary is quite huge, advice the `rcc` compiler to add
support for "big resources"
(cf https://doc.qt.io/qt-6/resources.html#embedding-large-files)

Also pass the env $LDFLAGS to qmake (to be able to link e.g. with mold,
which again greatly reduces the time to link the binary)

this leads to 6-10x faster time when recompiling
(Linux, gcc 12.1.1, mold 1.3.0)

BEFORE:
Clean build:
real	0m57,256s
user	1m25,869s
sys	0m40,963s

Incremental build, one file touched:
real	0m54,323s
user	0m54,012s
sys	0m2,934s

AFTER:
Clean build:
real	0m7,276s
user	0m21,001s
sys	0m37,256s

Incremental build, one file touched:
real	0m5,569s
user	0m4,850s
sys	0m0,840s
2022-09-21 18:20:11 +02:00
Mikhail Rogachev 586d975d76 feat(StatusStackModal): add subheader and remove explicit width (#747) 2022-09-21 18:20:11 +02:00
Igor Sirotin b720f13caa fix(icons): Updated arrows icons (#735) 2022-09-21 18:20:11 +02:00
Mikhail Rogachev 59b9532cb8 Fix(StatusStackModal): fix height calculation (#745) 2022-09-21 18:20:11 +02:00
Iuri Matias 9f8caa00bb bug(@status-q): only run animations when they are visible to avoid cpu issues (#744)
bug(@status-q): only run animations when they are visible to avoid cpu issues

remove prop that doesn't exist
2022-09-21 18:20:11 +02:00
Mikhail Rogachev 2a64ba455b feat(StatusStackModal): Component to replace nested StausModals (#733) 2022-09-21 18:20:11 +02:00
Noelia 9f3aa21834 fix(StatusChatToolBar): Updated activity center button size
Activity center button has now the same size than the other toolbar buttons.

Fixes https://github.com/status-im/status-desktop/issues/6216
2022-09-21 18:20:11 +02:00
Noelia 6207e1f34f feat(StatusRoundButton): Added `Tertiary` type
- Transparent background but when hovered, like Primary type in idle state.

- Updated sandbox with the new type.
2022-09-21 18:20:11 +02:00
Sale Djenic e8bb092db4 fix(StatusToastMessage): `clicked` signal added 2022-09-21 18:20:11 +02:00
Jonathan Rainville e0ddb0f8d0 chore(StatusFlatRoundButon): fix warning related to hovered property 2022-09-21 18:20:11 +02:00
Noelia eddea24c63 fix(StatusCommunityCard): Added implicit width and height (#739)
Fixes https://github.com/status-im/status-desktop/issues/6206
2022-09-21 18:20:11 +02:00
Igor Sirotin 679096e12e feat(icons): Added unpin icon (#738) 2022-09-21 18:20:11 +02:00
Igor Sirotin acb56141fa feat(StatusListItem): Added `loading` and `loadingFailed` properties (#736) 2022-09-21 18:20:11 +02:00
Mikhail Rogachev 0a36c4c88d fix(StatusCommunityTag): fix StatusCommunityTag and and ETH icon (#734) 2022-09-21 18:20:11 +02:00
Igor Sirotin 2bb0a67754 fix(contributing.md): Added `Popup` sizing guidelines (#728) 2022-09-21 18:20:11 +02:00
Mikhail Rogachev 529cf9de3a feat(StatusCommunityTags): Add community tags component (#718) 2022-09-21 18:20:11 +02:00
Boris Melnik f78693d247 feat(StatusQ.Controls): Introduce `StatusActivityCenterButton` (#705) 2022-09-21 18:20:11 +02:00
Igor Sirotin f1b3c25b63 fix(StatusBaseButton): Passed `icon.rotation` property to the icon component (#727) 2022-09-21 18:20:11 +02:00
Khushboo-dev-cpp 517dcf646e feat(StatusFloatingButtonsSelector): Implements the floating buttons selector widget (#681)
To be used in with StatusModal or independently
2022-09-21 18:20:11 +02:00
Igor Sirotin 3d779f78cb fix(StatusTabButton): Hide bottom dash in disabled state (#729) 2022-09-21 18:20:11 +02:00
Patryk Osmaczko 5f3d5aa31b fix: adapt StatusMemeberListItem usages to renamed properties 2022-09-21 18:20:11 +02:00
Noelia 2b3cbf6444 feat(StatusCommunityCard): Added explicit dependency between z properties
Added explicit dependency between z properties with banner, logo, and content card.
2022-09-21 18:20:11 +02:00
Noelia 31539e0606 fix(StatusListItemTag): Added margins to better center the content
Added margins to better center the content
2022-09-21 18:20:11 +02:00
Noelia bc9e177f27 feat(StatusCommunityCard): New design
- Added community banner.
- Added community restrictions / private.
- Modified card background shape.
- Modified logo shape and position.
- Modified text position and size.
- Modified `loading state` card.
- Added `DropShadow` effect.
- Added new icons.
- Added new community images and updated model.
- Added numbers format function.
- Added following new properties: `banner`,`activeUsers` `communityColor`, `isPrivate` and `tokenLogo`.

Closes #692
2022-09-21 18:20:11 +02:00
Patryk Osmaczko 869db82f86 chore: adapt to new user/member backend models structure 2022-09-21 18:20:11 +02:00
Patryk Osmaczko 036212c5e3 chore(StatusModal): set StatusModal margins to 64
closes: status-im/status-desktop#6049
2022-09-21 18:20:11 +02:00
Patryk Osmaczko ad149843bf chore(StatusModal): make StatusModal follow padding
https://github.com/status-im/status-desktop/pull/6010#discussion_r892148627
2022-09-21 18:20:11 +02:00
Noelia ca9d67525a feat(StatusTagSelector): Updated component to use `StatusTagItem` as a delegate
Updated component to use `StatusTagItem` as a delegate.
2022-09-21 18:20:11 +02:00
Noelia b06dba5aea feat(StatusTagItem): Created new control that represents a tag item
Created new `StatusTagItem` control and added that represents a tag item with a `text`, `icon` and `isReadonly` properties.
2022-09-21 18:20:10 +02:00
Noelia 259aeba066 feat(StatusTagSelector): Introduced readonly tags and possibility of icon
- Different tag color depending if the entry `isReadonly` or not.
- Tag disabled if the entry `isReadonly`.
- Possibility to show icon if entry contains the proper info.
- Added property `orderByReadonly` to position `isReadonly` entries in the left.

Updated sandbox project examples according to new tag updates.

Closes #694
2022-09-21 18:20:10 +02:00
Anthony Laibe 946e169ee0 feat(@StatusAssetSelector): Use asset selector per symbol and not (#715)
address
2022-09-21 18:20:10 +02:00
Alexandra Betouni 6cfeafaada fix(StatusTagSelector): Fixed Layout issues when shrinking (#714)
Closes https://github.com/status-im/status-desktop/issues/5954
2022-09-21 18:20:10 +02:00
Alexandra Betouni f0e7ad9a4b fix(StatusSeedPhraseInput): removed input anchoring not needed after refactor
Closes https://github.com/status-im/status-desktop/issues/5967
2022-09-21 18:20:10 +02:00
Igor Sirotin 4379c3dc61 fix(StatusBaseButton): Mouse events ignored when button is disabled (#707)
* fix(StatusBaseButton): Mouse events ignored when button is disabled
2022-09-21 18:20:10 +02:00
Noelia f8bc5530aa fix(StatusPopupMenu): Changed dim to false
Changed dim to false.

Fixes https://github.com/status-im/status-desktop/issues/5828
2022-09-21 18:20:10 +02:00
Patryk Osmaczko bb3325ee6d fix(StatusSearchPopup): add color hash to chat icons 2022-09-21 18:20:10 +02:00
Patryk Osmaczko 2bce533f46 chore(StatusBaseText): add theme aware default color 2022-09-21 18:20:10 +02:00
Boris Melnik fae4543b4f feat(StatusMemberListItem): Add admin status (#704) 2022-09-21 18:20:10 +02:00
Alexandra Betouni b94debcaaf feat(StatusTagSelector): Added colorIdForPubkeyGet property (#702)
Needed for: https://github.com/status-im/status-desktop/issues/5875
2022-09-21 18:20:10 +02:00
Noelia c7a2f6b479 feat(StatusTagSelector): Added property `showSortedListOnlyWhenText` and make dynamic the `implicitHeight`
Added property `showSortedListOnlyWhenText` and make dynamic the `implicitHeight` calculation.
2022-09-21 18:20:10 +02:00
Noelia 7f04c90494 chore(assets): Added new icon `add-to-dm`
Added new icon `add-to-dm`.
2022-09-21 18:20:10 +02:00
Noelia 88f791f3ac feat(StatusChatToolBar): Add flexible component in right toolbar position
- Added loader in right component position and removed `StatusChatInfoButton` specific.

- Updated sandbox and added new example in Layouts with another different component than the `StatusChatInfoButton`.

BREAKING CHANGES:
The toolbar now expects a component to be loaded. The previous `StatusChatInfoButton` component has been removed and needs to be passed as a component from outside whenever needed.
Breaking changes in `desktop` will be addressed in: https://github.com/status-im/status-desktop/pull/5823
2022-09-21 18:20:10 +02:00
Noelia 7bd9b37792 feat(StatusCommunityCard): First component iteration (#693)
It includes logo, title, community members, description, loaded, community id, popularity, tags row (that must be replaced to a new StatusQ component `StatusListItemTagRow`.

It also contains `locale` property used to decide the member's number format.

Added loading card.

Added Community Card page (components test) and view (demo app) in sandbox.

Added component documentation.

Part of task: https://github.com/status-im/status-desktop/issues/4936
2022-09-21 18:20:10 +02:00
Patryk Osmaczko 7281c4142a chore(StatusBaseInput): expose placeholder as alias 2022-09-21 18:20:10 +02:00
Patryk Osmaczko 9a841b9c20 chore(StatusInput): use layouts for elements positioning
It removes complexity and fixes StatusInput to follow the size assigned
by client.
2022-09-21 18:20:10 +02:00
Sale Djenic 76a0caaa13 fix(StatusRoundedImage): actual loaded image width and height updated
In case you're dynamically change source image and image width and height
are way bigger than the rounded image component width and height, resizing
was not done correctly.

update

update
2022-09-21 18:20:10 +02:00
Alexandra Betouni 99f1634fbc feat(icons): adding view icon
Needed for: https://github.com/status-im/status-desktop/issues/4918
2022-09-21 18:20:10 +02:00
Alexandra Betouni e683793021 feat(StatusBaseInput): disabled mouse area when input is disabled
Needed for: https://github.com/status-im/status-desktop/issues/4918
2022-09-21 18:20:10 +02:00
Stefan 13b41cbd00 fix(StatusImageCrop): fix wrong initial image fit
The initial fit was computed for the square crop-window

updates: 5118
2022-09-21 18:20:10 +02:00
Mikhail Rogachev b9088427d7 feat(StatusLabeledSlider): add ability to decorate sliders and slider, decorated with lablels (#687)
Close #686
2022-09-21 18:20:10 +02:00
r4bbit.eth fff2682a9c fix(StatusNavigationListItem): make click handler work again (#688)
The click handler used inside the component broke in one of the latest
changes done in `StatusListItem` where it expects two arguments being
passed to its click handler.

This commit fixes it by supplying all needed arguments (where `itemId`
is always `''` unless set differently)
2022-09-21 18:20:10 +02:00
Mikhail Rogachev 290d5cbebc feat(StatusColorSpace): impl color space component (#679) 2022-09-21 18:20:10 +02:00
Alexandra Betouni b4c37e2255 fix(StatusListItem): added mouse obj parameter in clicked signal (#683)
Needed for: https://github.com/status-im/status-desktop/issues/5212
2022-09-21 18:20:10 +02:00
Igor Sirotin c2c47b6bb7 feat(StatusTabButton): Created component as per design (#684) 2022-09-21 18:20:10 +02:00
Alexandra Betouni d3637e8a56 feat(StatusTagSelector): Replaced member delegate w/ StatusMemberLisItm (#676)
Fixes https://github.com/status-im/status-desktop/issues/5625
2022-09-21 18:20:10 +02:00
Boris Melnik 5513158f89 fix(StatusTagSelector): Fix mouse hover (#678)
Closes: status-im/status-desktop#5220
2022-09-21 18:20:10 +02:00
Alexandra Betouni 88c26d148f fix(StatusChatList): Fixed alignment in left column (#680)
Needed for https://github.com/status-im/status-desktop/issues/5211
2022-09-21 18:20:10 +02:00
Igor Sirotin 0714d6b305 fix(StatusLetterIdentIcon): Display emoji as svg (#677)
* fix(StatusLetterIdentIcon): Display emoji as svg

* feat(StatusEmoji): Added StatusEmoji image component
2022-09-21 18:20:10 +02:00
r4bbit.eth 620e977673 fix(StatusSeedPhraseInput): ensure suggested item has correct text color (#670) 2022-09-21 18:20:10 +02:00
Igor Sirotin 5a9f9527a7 fix(StatusSlider): Fixed background behavior (#667) 2022-09-21 18:20:10 +02:00
Mikhail Rogachev 85713de833 fix(StatusProgressBar): Hide text in bar if it does not fit (#672) 2022-09-21 18:20:10 +02:00
Igor Sirotin 7baa94eab3 feat(Emoji): Functions improvements (#673)
- Introduced `format] argument for `parse` function
- New `iconId(text)` function
2022-09-21 18:20:10 +02:00
Alexandra Betouni cf7255b6f1 fix(StatusSeedPhraseInput): anchored component to its parent bottom
Needed for: https://github.com/status-im/status-desktop/issues/5669
2022-09-21 18:20:10 +02:00
Alexandra Betouni 4365911457 feat(StatusInput): exposed letterIconName property (#671)
Exposed letterIconName to be set in StatusLetterIdenticon

Needed for: https://github.com/status-im/status-desktop/issues/5636
2022-09-21 18:20:10 +02:00
Jonathan Rainville df3452d24d fix(StatusTagSelector): hide contact when it is selected (#668) 2022-09-21 18:20:10 +02:00
Jonathan Rainville 818374af1a fix(StatusSeedPhraseInput): autocomplete when word not alone in the list
The problem was that if the clicked word (or tabbed) was not alone in the suggestion list, the done signal was not called. Now it is always called when clicking on using tab or enter.
2022-09-21 18:20:10 +02:00
Stefan 1acbeb1962 fix(StatusSlider): improve handle draging area
Issues
- The slider only handle mouse events in its own control space.
- In oder to use the entire area it needs to be centered.

Fixes

- Center the content vertically (handle and slider bar)
- Height and implicitHeight defaults to heigh of the handle
- Add note to create awareness about the mouse handling requirements
2022-09-21 18:20:10 +02:00
Stefan 0d8bbcde8f improvement(StatusImageCrop): add option to limit to fill
Currently only fit image is supported as minimum limit
This change sdds option to fill crop window with image as
minimum zoom which is required by status-go crop function
2022-09-21 18:20:10 +02:00
Alexandra Betouni f1ddedd2b9 fix(StatusTagSelector): Updated names list filtering (#659)
Fixes: https://github.com/status-im/status-desktop/issues/5642
2022-09-21 18:20:10 +02:00
Jonathan Rainville 524915a68a fix(StatusBaseInput): adjust emoji size and position in base input (#660) 2022-09-21 18:20:10 +02:00
Alexandra Betouni ef891ea02c fix(StatusTagSelector): Adjusted name tags list width and scrolling (#653)
Needed for https://github.com/status-im/status-desktop/issues/5643
2022-09-21 18:20:10 +02:00
Patryk Osmaczko 76c9411329 chore(translations): add missing qsTrs
issue: status-im/status-desktop#4544
2022-09-21 18:20:10 +02:00
Khushboo Mehta 80ac7d22b9 fix(StatusBaseButton): Button component should keep its original width/size when it enters loading state
fixes #656
2022-09-21 18:20:10 +02:00
mishkarogachev b79c1f149b fix(StatusTagSelector):Create new chat input is single line 2022-09-21 18:20:10 +02:00
mishkarogachev 7a45b18b26 fix(StatusListItem): Make text always fit boundaries 2022-09-21 18:20:10 +02:00
Alexandra Betouni e3a64a5d9c fix(StatusTagSelector): Added up/down hard keys navigation
Needed for: https://github.com/status-im/status-desktop/issues/5640
2022-09-21 18:20:09 +02:00
Noelia 9dd65224bf fix(StatusBaseButton): After loading, button keeps loader width, so the button size is bigger
When button changed from loading to their normal shape it kept the width of the loader as it was visible in the row component.

It has been added a binding between loader `visible` property and root `loading` property that fixes the issue with the width.

Also, removed some `break` leftovers.

Fixes #5606 --> https://github.com/status-im/status-desktop/issues/5606
2022-09-21 18:20:09 +02:00
mishkarogachev adbae92730 fix(StatusSwitchTabBar): Update and unify colors of tabBar 2022-09-21 18:20:09 +02:00
Jonathan Rainville f52d052051 fix(StatusWizardStepper): make to value configurable 2022-09-21 18:20:09 +02:00
Jonathan Rainville 8bc4dc906c fix(StatusBaseInput): fix typo in verticalAlignement 2022-09-21 18:20:09 +02:00
Khushboo Mehta a14d4b9680 fix(StatusListPicker): Add an option to allign the menu with respective the buttons and keep right aligned as the default one
Also fixes search placeholder to be centrally aligned

fixes #5633
2022-09-21 18:20:09 +02:00
Jonathan Rainville 45103cc958 fix(StatusSeedPhraseInput): fix pasting word with spaces in them
This makes it possible to paste a word with a space in it. It will insert it correctly
2022-09-21 18:20:09 +02:00
Jonathan Rainville 906a472f9e fix(StatusSeedPhraseInput): fix interactions in SeedInput 2022-09-21 18:20:09 +02:00
Jonathan Rainville f57f7530ae feat(StatusBasenput): add acceptReturn to Input to pass return events 2022-09-21 18:20:09 +02:00
Jonathan Rainville 37c66e33bd fix(StatusBaseInput): fix dirty being set when the text didn't change 2022-09-21 18:20:09 +02:00
Sale Djenic e6bd9b5627 feat(StatusToastMessage): introduce duration property and `close` signal emit after animation
- `open` property set to `true` by default
- `duration` property added (if set to anything greater than 0, will trigger
close toast signal after `duration` milliseconds)
- `close` signal is now emitted once animation gets completed
2022-09-21 18:20:09 +02:00
Stefan 52c8e3e2c1 fix(StatusImageCrop): output an error if trying to set cropRect without image 2022-09-21 18:20:09 +02:00
Stefan 7072665a10 test(Components.StatusImageCropPanel): basic validation tests for the image crop component
updates #5401
2022-09-21 18:20:09 +02:00
Stefan f383121957 test(Controls.StatusImageCrop): basic validation tests for the image crop control
updates #5401
2022-09-21 18:20:09 +02:00
Stefan e293f80554 tests(general): refactor tests
Enhance the CMake strucuture of thests
Update documentation
2022-09-21 18:20:09 +02:00
Stefan 59fc0a6669 feat(Sandbox): add visual test setup page for StatusImageCropPanel
Other improvements:

- save state for theme switcher and last selected page
- add optional fill all test space for pages

fixes: 5401
2022-09-21 18:20:09 +02:00
Stefan 18ecb2b140 feat(StatusImageCropPanel): Add image crop editor panel component
New QML component StatusQ.Components.StatusImageCropPanel
that extends on StatusImageCrop with simper interface and extra features

Features:
- Minimizes drawing with Canvas to the crop window
- Adds user interactions: pan, zoom
- Zoom slider for zooming, beside the mouse scroll action
- Optional checker pattern for background for the user to have a visual feedback on the transparent areas or image margins

fixes: #5401
updates: #5118
2022-09-21 18:20:09 +02:00
Stefan 107a3d1d34 feat(StatusImageCrop): Image cropping editor control
New QML control StatusQ.Controls.StatusImageCrop allows user to crop an image for avatar/banner purpuses

Features:
- Support rectangular and elliptical crop windows
- Transparency for the wall
- Controlling the crop window in image coordinates using cropRect
- The image support is based on `Image`
- Limits the

fixes: #5401
2022-09-21 18:20:09 +02:00
Alexandra Betouni e2ba041ec6 fix(StatusChatList): Added property to control item's highlight (#646)
Needed for https://github.com/status-im/status-desktop/issues/5627
2022-09-21 18:20:09 +02:00
Igor Sirotin 6939a63fbf build: Added all qmls and assets to resources (fixes release build) (#647) 2022-09-21 18:20:09 +02:00
Igor Sirotin 774f2f3d15 fix(StatusBaseInput): Fixed border color on active focus loss (#643) 2022-09-21 18:20:09 +02:00
Igor Sirotin 5c420a0e11 fix(StatusBaseInput): Implement cursor as per designs (#642) 2022-09-21 18:20:09 +02:00
Noelia 7080f0aecb fix(StatusListPicker): Disable uncheck option and reset searcher (#639)
Disabled uncheck option if component is configured as single selection mode.

Added binding to reset searcher input text when picker is closed.

BREAKING CHANGE: Renamed `searchText` property for `placeholderSearchText` to control placeholder text in searcher and added / used existing `searchText` property to control  searcher input text.
2022-09-21 18:20:09 +02:00
Stefan Dunca d203334c94 doc(contributing.md): add pixel miss-alignment recommendation
Follow up on the PR comment https://github.com/status-im/status-desktop/pull/5549#issuecomment-1099468321
2022-09-21 18:20:09 +02:00
Michal Iskierko 78a9231cc9 fix(StatusTagSelector): Fix displaying a list of contacts in StatusTagSelector
Fix #5465
2022-09-21 18:20:09 +02:00
Alexandra Betouni 107d6ff62d fix(StatusSearchLocationMenu): removed dimming from submenus (#635)
fixes https://github.com/status-im/status-desktop/issues/5139
2022-09-21 18:20:09 +02:00
Patryk Osmaczko 2884b49b36 chore(StatusChatList): use colorId if color is not provided 2022-09-21 18:20:09 +02:00
Patryk Osmaczko 60946e66a7 chore(StatusLetterIdenticon): test different backgrounds 2022-09-21 18:20:09 +02:00
Patryk Osmaczko 3700e575f8 fix(StatusIdenticonRing): repait ring when model changes 2022-09-21 18:20:09 +02:00
Patryk Osmaczko 94e168423e chore(ThemePalette): introduced userCustomizationColors
BREAKING CHANGE: renamed accountColors to userCustomizationColors
2022-09-21 18:20:09 +02:00
Patryk Osmaczko fe214b32a0 feat(StatusLetterIdenticon): use luminance to determine letter color 2022-09-21 18:20:09 +02:00
Alexandra Betouni 9a93f152cc feat(StatusInput): Adding component documentation (#632)
Part of #616
2022-09-21 18:20:09 +02:00
Alexandra Betouni a5da508617 feat(StatusBaseInput): Adding component documentation (#631)
Part of #616
2022-09-21 18:20:09 +02:00
Noelia 093649b867 feat(StatusPasswordStrengthIndicator): Added component documentation (#630)
Added component documentation.

Part of #620
2022-09-21 18:20:09 +02:00
Noelia 340ccf2915 feat(StatusMemberListItem): Added component documentation (#629)
Added component documentation and updated functions to be private.

Part of #620
2022-09-21 18:20:09 +02:00
Noelia 64bb0c35a0 feat(StatusBanner): Added component documentation (#628)
Added component documentation.

Part of #620
2022-09-21 18:20:09 +02:00
Alexandra Betouni a4eaba3de4 feat(StatusTagSelector): Adding component documentation (#623)
Part of #616
2022-09-21 18:20:09 +02:00
Alexandra Betouni 30a7e95460 feat(StatusToastMessage): Adding component documentation (#621)
Part of #616
2022-09-21 18:20:09 +02:00
Alexandra Betouni c8740d77de feat(StatusSeedPhraseInput): Adding component documentation (#617)
Also fixed component's height in demonstration page

Part of #616
2022-09-21 18:20:09 +02:00
Alexandra Betouni c35431f4ee fix(StatusTagSelector): adding wrap mode in text edit (#633)
needed for: https://github.com/status-im/status-desktop/issues/5294
2022-09-21 18:20:09 +02:00
Noelia 84cc9eae73 fix(StatusListPicker/StatusItemPicker/StatusPickerButton): Added some properties / signals (#624)
Added property `textPixelSize` to be configurable in `StatusPickerButton`.

Added signal `itemPickerChanged` to be directly notified when an item changes its selected property value.

Updated `selected` property properly in `StatusListPicker`.

Added new property `enableSelectableItem` to highlight an item when hovering.

Some documentation improvements.
2022-09-21 18:20:09 +02:00
Pascal Precht 10ccfef8de fix(StatusSeedPhraseInput): don't access input control via `root` 2022-09-21 18:20:09 +02:00
Richard Ramos 708d844c2b fix(StatusSeedPhraseInput): handle 3 characters mnemonics 2022-09-21 18:20:09 +02:00
Boris Melnik 6a7271147d fix(StatusListItem): Show emoji if exist
Part of: https://github.com/status-im/status-desktop/issues/5350
2022-09-21 18:20:08 +02:00
Alexandra Betouni 191c759407 feat(StatusWizardStepper): Adding component documentation (#618)
Part of #616
2022-09-21 18:20:08 +02:00
Anthony Laibe 83955adb6f fix(StatusFloatValidator): Fix value equal to bottom 2022-09-21 18:20:08 +02:00
Patryk Osmaczko 3c855450fb fix: add various fixes/improvements to identicons 2022-09-21 18:20:08 +02:00
Boris Melnik 4ff66d8fd3 feat(assets): Add new icons for community settings
Part of: status-im/status-desktop#4932
2022-09-21 18:20:08 +02:00
Noelia c586b9be1e feat(StatusQ.Components/Controls): New `StatusListPicker` and `StatusItemPicker` selector component / control (#583)
It adds the `StatusItemPicker` control and `StatusListPicker` component and its corresponding documentation.

The new selector component is composed by a `StatusButtonPicker` and a drop-down list.

It adds sections in `ListView` by using `category` model property.

It incorporates a searcher in header.

The selector type can be customised as a `StatusRadioButton` or a `StatusCheckbox`.

It adds dynamic selection mechanism.

It adds a dynamic text fit between `name` and `shortName` text components.

It adds a specific page in `sandbox` and some models to play with that.

It extends `StatusPickerButton` to allow more than one type.

Closes #563
2022-09-21 18:20:08 +02:00
Stefan Dunca 9be2de676a Clarify dynamic scoping 2022-09-21 18:20:08 +02:00
Stefan 62b09f047c docs(General): initial proposal on developer documentation and checklists
Developer targeted checklist and reminders to cover the most common source of errors
and tech-debt (maintenance burden).
2022-09-21 18:20:08 +02:00
Alexandra Betouni b3c3a90148 fix(StatusTagSelector): fixing tag selector height (#606)
Fix for https://github.com/status-im/status-desktop/issues/5199
2022-09-21 18:20:08 +02:00
Alexandra Betouni 02b2b591fe fix(StatusSeedPhraseInput): added trim() also when seedWord selected from list (#613)
Fixes issue on Windows where empty spaces are insterted in the input
field together with the word
2022-09-21 18:20:08 +02:00
Jonathan Rainville 55e29b6f67 fix(StatusSeedPhraseInput): remove empty spaces in seed phrase input (#611) 2022-09-21 18:20:08 +02:00
Sale Djenic 4e42de03de fix(@desktop/contacts): placeholder position updated 2022-09-21 18:20:08 +02:00
Alexandra Betouni 59510b8a0a feat(StatusSeedPhraseInput): exposed keys on pressed signal (#599)
* feat(StatusSeedPhraseInput): exposed touch/keys pressed events

Exposed keys.onPressed signal, mouse on clicked signal
as well as tabNavItem to be set in KeyNavigation.tab
when needed

Needed for task https://github.com/status-im/status-desktop/issues/4955

* feat(StatusListItem): Added new tags inline in the StatusListItem (#607)

Co-authored-by: Khushboo-dev-cpp <60327365+Khushboo-dev-cpp@users.noreply.github.com>
2022-09-21 18:20:08 +02:00
Noelia f795ced1bd fix(StatusChatListCategory): Selecting the category menu should not toggle the category itself
Closes `status-desktop` issue https://github.com/status-im/status-desktop/issues/4914
2022-09-21 18:20:08 +02:00
Stefan f65923fcf1 tests(StatusInput): add regression test to check for qml output
Also improves on the test structure
2022-09-21 18:20:08 +02:00
Michał Iskierko 164c65e6c4 fix(StatusSearchPopup): Fix cutting text with big font (#604)
Decreasing padding.
Setting loading property default to false.

Fix #5197
2022-09-21 18:20:08 +02:00
Patryk Osmaczko a0246f6a7c fix(StatusInput): add implicitHeight
It makes it work with layouts correctly.
2022-09-21 18:20:08 +02:00
Patryk Osmaczko c6b2a02e0a fix(StatusBaseInput): fix default padding when leftComponent is loaded 2022-09-21 18:20:08 +02:00
Alexandra Betouni 5f012da87f fix(StatusSeedPhraseInput): Increased suggestion match chars to 4 2022-09-21 18:20:08 +02:00
Khushboo Mehta 10520a6f53 fix(StatusInput): Added mising documentation of new properties to StatusInput and StatusModal
Moved the StatusInputWithCursor out of StatusQ as it not needed under StatusQ.
2022-09-21 18:20:08 +02:00
Khushboo Mehta af0acb801c fix(StatusModal): Added support for advanced footer and header as seen in new designs.
It is also backward compatible and is not a breaking change.
2022-09-21 18:20:08 +02:00
Khushboo Mehta 3a58ee8200 feat(StatusInput): Expose errorMessage so that its placement can be controlled from outside 2022-09-21 18:20:08 +02:00
Khushboo Mehta 604ba1b88d fix(StatusListItemTag): Fix for allignment in StatusListItemTag and option to make close button invisible 2022-09-21 18:20:08 +02:00
Khushboo Mehta 3a93f835d2 feat: Added new icon fees 2022-09-21 18:20:08 +02:00
Khushboo Mehta 111d90bcd7 feat(StatusFloatValidator): Used to validate a float variable for
1. Is a valid number
2. Is greater than bottom value
3. Is less than top value
2022-09-21 18:20:08 +02:00
Khushboo Mehta 58250acaf8 feat(StatusInputWithCursor): Extended the StatusInput to support an Input with no background and a blinking custom cursor 2022-09-21 18:20:08 +02:00
Alexandra Betouni 511c1f7d4c fix(StatusTagSelector): move suggestions popup inside component (#598)
Closes #531
2022-09-21 18:20:08 +02:00
r4bbit.eth 2ff015fccb chore: add check for dark and light theme to PR template (#597) 2022-09-21 18:20:08 +02:00
Boris Melnik b86678f726 fix(StatusQ.Popups): Replace TextEdit to StatusBaseInput for SearchPopup
Closes: https://github.com/status-im/status-desktop/issues/5059
2022-09-21 18:20:08 +02:00
Patryk Osmaczko 8ff0a47be0 feat(StatusQ.Controls): add StatusTokenInlineSelector
Closes: status-im/status-desktop#4937
2022-09-21 18:20:08 +02:00
Jonathan Rainville 78ce7a6ac0 fix(StatusLetterIdenticon): fix emoji positioning
The emoji wasn't centered correctly on Windows
Fixes #5045
2022-09-21 18:20:08 +02:00
Patryk Osmaczko 957680cb1c fix(StatusBaseInput): apply changes required by StatusSeedPhraseInput 2022-09-21 18:20:08 +02:00
Patryk Osmaczko f2c832e015 refactor(StatusBaseInput): use RowLayout for position management 2022-09-21 18:20:08 +02:00
Noelia ffb7289b9f fix(StatusPasswordStrengthIndicator): Added new `onValueChanged` condition
Added new `onValueChanged` condition if bar value is 0 --> Strength.None.
2022-09-21 18:20:08 +02:00
Alexandra Betouni 36a109421c fix(SeedPhraseInput): Fixing SeedPhraseInput control height
The suggestion list should be showing up to 5 seed
word entries
2022-09-21 18:20:08 +02:00
Alexandra Betouni 18fddf7289 fix(SeedPhraseInput): fix lost focus after typing one character
Relates to: https://github.com/status-im/status-desktop/issues/4955
2022-09-21 18:20:08 +02:00
osmaczko 93e5357027 ci: add pull request template 2022-09-21 18:20:08 +02:00
Jonathan Rainville bdeb0e9c1c fix(StatusChatListItem): add missing import (#585) 2022-09-21 18:20:08 +02:00
Jonathan Rainville d2911c42ab fix(StatusIconSettings): set charactersLen to 1 by default (#581)
This caused a breaking change where components that used to imply 1 charactersLen now showed no character at all because it defaulted to 0.
2022-09-21 18:20:08 +02:00
Jonathan Rainville 66b5b9d34b feat(StatusIconSetting): add emojiSize setting for icons (#579) 2022-09-21 18:20:08 +02:00
Jonathan Rainville dfad051880 fix(StatusContactRequestIndicatorListItem): hide badge when value is 0 (#580)
* fix(StatusContactRequestIndicatorListItem): hide badge when value is 0

* feat(icons): add edit pencil icon
2022-09-21 18:20:08 +02:00
Alexandra Betouni cc50cd1e96 feat(StatusQ/Controls): Adding StatusSeedPhraseInput control
Also added an example in Inputs page

Closes #567
2022-09-21 18:20:08 +02:00
Stefan a7056bb8bf docs(StatusInput): Initial basic docs plus validationMode 2022-09-21 18:20:08 +02:00
Stefan 94bfed0846 test(StatusInput): Add initial basic tests 2022-09-21 18:20:08 +02:00
Stefan cf97a51fb5 fix(dev): silence qml warnings 2022-09-21 18:20:08 +02:00
Stefan ed4277c543 feat(StatusInput): add mode to ingnore unvalidated content
Add optional feature to StatusInput not to allow typing characters
that are not validated

updates #4961
2022-09-21 18:20:08 +02:00
osmaczko 5d58dc334c Add various of changes required by emojiHash and identiconRing integration (#577)
* chore(StatusIdenticonRing): make ringSpecModel accept array of objects

* chore(StatusLetterIdenticon): add charactersLen and textColor settings
2022-09-21 18:20:08 +02:00
Khushboo-dev-cpp 0b4941966e feat: Add emoji support (#575)
* feat: Add emoji support
1. StatusChatListItem (only updated parts already done by Jo)
2. StatusListItem
3. StatusInput

* feat(StatusColorSelectorGrid): Added new widget for color selection as needed in wallet

* fix(StatusInput): on reset, valid should be set to true else error mode is shown even though the user hasnt entered a value

* fix(StatusLetterIdenticon): Removed the clicked event out from the LetterIdenticon and added it to the StatusBaseInput as other places that use the letterIdenticon dont need the mouse area is not needed
2022-09-21 18:20:07 +02:00
Jonathan Rainville ae3bb01c10 fix(StatusQ.Validators): fix regular expression test in validator 2022-09-21 18:20:07 +02:00
Anthony Laibe 3363469109 fix(@StatusListItem): Use tags model 2022-09-21 18:20:07 +02:00
Alexandra Betouni 0abfab4674 feat(StatusLetterIdenticon): Added charCount property in StatusLetterIdenticon
For desktop task #4956 the letter identicon displayed inside
the StatusSmartIdenticon should be of 2 characters and not 1.
2022-09-21 18:20:07 +02:00
Noelia 6b7a332d61 feat(StatusPasswordStrengthIndicator): Add new Strength type `None`
Add new Strength type None and its corresponding state.
2022-09-21 18:20:07 +02:00
Pascal Precht 387a103742 chore: cut v0.25.0 release 2022-09-21 18:20:07 +02:00
Anthony Laibe 7b45a1ad16 feat(@StatusListItem): add option for tags 2022-09-21 18:20:07 +02:00
Jonathan Rainville 688b6b2d92 feat(StatusChatListItem): enable assigning emoji to chat item 2022-09-21 18:20:07 +02:00
Anthony Laibe b4194a69e9 feat(StatusQ.Core): add new arrow-left icon 2022-09-21 18:20:06 +02:00
Anthony Laibe 8f649f1586 fix(build): fix linux build
Fixes #413
2022-09-21 18:20:06 +02:00
Anthony Laibe dcee33a06d fix(@StatusListItem): fix left padding
When there is an icon, take it into account when calculating the left
padding
2022-09-21 18:20:06 +02:00
Jonathan Rainville ee18ab89dd fix(StatusListItem): add propagateTitleClicks property to StatusListItem
Makes it possible disable the propagation of the mouse event when it's not wanted, for example in the search popup, where if the user clicks the title, we want to show the profile popup, but not navigate to the channel
2022-09-21 18:20:06 +02:00
Alexandra Betouni c5635bb36a fix(StatusTagSelector): Updates and fixes in the component
Moved `remove` function below remove contact signal
also removed online status badge from CreateChatView

Fixed as well name tags to be adapting on parent's
width and scrolling the list to the end when this is
bigger than the available width. Switcehd to use
nameCountLimit property where needed
2022-09-21 18:20:06 +02:00
Boris Melnik 9f66a36b69 feat(StatusChatList): Highlight chat item at creation time
Part of: https://github.com/status-im/status-desktop/issues/4767
2022-09-21 18:20:06 +02:00
Noelia c4ede85ed3 feat(StatusPinInput): Introduce `StatusPinInput` control
It creates `StatusPinInput` control that allows customzing its circle diameter, circle spacing and pin length. It contains a `TextInput` object that will provide the component, input text management like validation rules.

It incorporates a blinking animation when the control is focused and feedback (mouse shape changed) when hovering it.

It adds new page in sandbox to play with `StatusPinInput` control.

It adds component documentation.

Also it creates 2 new `StatusValidator` controls with their corresponding documentation:
- `StatusRegularExpressionValidator` which wraps a QML type `RegularExpressionValidator`.

- `StatusIntValidator` which wraps a QML type `IntValidator`.

Closes #524
2022-09-21 18:20:06 +02:00
Noelia 0df69a8f51 feat(StatusSmartIdenticon): Add support for color rings in StatusSmartIdenticon (#553)
Created new control `StatusIdenticonRing` and used in `StatusSmartIdenticon` component.

Added property assignments in sandbox models to display the `StatusIdenticonRing` when needed.

Added first documentation approach for `StatusIdenticonRing` and `StatusIdenticonRingSettings`.

Closes #517
2022-09-21 18:20:06 +02:00
Noelia 3bc3216ba0 feat(StatusContactVerificationIcons): Create new row control that includes mutual connect and trust indicator icons (#559)
Create `StatusContactVerificationIcons` row component.

Refactor in `StatusMemberListItem`. It now uses `StatusContactVerificationIcons` component.

Refactor in `StatusListItem`. It now contains a Loader for dynamically decide if a row icons component is defined aside the title.

Refactor in `StatusMessageHeader` and `StatusMessage`. They now use `StatusContactVerificationIcons` component.

Closes #542

BREAKING CHANGES:

Removed `titleIcon1Visible` and `titleIcon1Visible` from `StatusListItem`.

Removed `ContactType` enumeration in `StatusMessage`. Now, contact verification type is managed by enum `TrustedType` in `StatusContactVerificationIcons` component.
2022-09-21 18:20:06 +02:00
Alexandra Betouni 7a517f3ac7 feat(StatusQ): Moving docs outside sandbox
To generate docs, from doc folder run
/path/to/Qt/installation/bin/qdoc statusq.qdocconf

A folder named "html" will be generated under doc,
open the statusq-index.html to get to the home page.
2022-09-21 18:20:06 +02:00
Alexandra Betouni 13d5c24a27 fix(sandbox): Fix results popup component position
Fixed alignment when results are being filtered.
If the x position that the popup should be aligned
goes off the screen, the popup appears back on
position 0. Also fixed result list item was not
vertically centered.
2022-09-21 18:20:06 +02:00
Alexandra Betouni 422eb741d4 fix(StatusQ.Popups): removed overlay setting (#557)
A MouseArea was set as an Overlay to the PopupMenu
consuming all clicks outside the component until it
was closed. Removed it as it's not necessary anymore.

Closes https://github.com/status-im/status-desktop/issues/3599
2022-09-21 18:20:06 +02:00
Pascal Precht 55248565dc chore: release v0.24.0 2022-09-21 18:20:06 +02:00
Alexandra Betouni 93b414229b feat(StatusQ) Adding qdoc related files (#555)
Added qdoc conf & source files for each
StatusQ module. Documented StatusBaseText
from StatusQ.Core as an example

To generate docs, from sandbox/docs run
/path/to/Qt/installation/bin/qdoc statusq.qdocconf

A folder named "html" will be generated under sandbox/doc,
open the statusq-index.html to get to the home page.

Closes #550
2022-09-21 18:20:06 +02:00
Patryk Osmaczko f68a70d07a feat(StatusListItem): add highlighted property 2022-09-21 18:20:06 +02:00
Alexandra Betouni 632b5b7267 feat(StatusQ.Components): Adding StatusWizardSteper component
Added StatusWizardStepper component

Also added corresponding page in API documentation

Closes #522
2022-09-21 18:20:06 +02:00
Pascal Precht ac303e1e6f chore: cut 0.23.0 release 2022-09-21 18:20:06 +02:00
Alexandra Betouni f024831c9b feat(StatusQ.Components): Adding StatusToastMessage
Added StatusToastMessage component, an example page
as well as a demonstration in chat view

Closes #521
2022-09-21 18:20:06 +02:00
Alexandra Betouni 08aced147f feat(StatusQ.Components): Adding StatusTagSelector component
Added StatusTagSelector component needed for
creating new chat channels, either ono on
one or group based on updated designs on
Figma

Also added corresponding page in API Documentation

Closes #526
2022-09-21 18:20:06 +02:00
Noelia 4cb28fee12 chore(demoApp): restore DemoApp to have the latest changes from both master and base_bc
Updated DemoApp, main and Models to have the
latest changes from both master and base_bc
2022-09-21 18:20:06 +02:00
Richard Ramos 6de288570c refactor: fix empty categories handling (#544)
* feat(StatusChatListCategory): display item if the model is a category
* fix(StatusChatListAndCategories): do not display categories in StatusChatList
2022-09-21 18:20:06 +02:00
Sale Djenic ad7b5a9ff9 refactor(StatusAppNavBar): `triggerUpdate` function added 2022-09-21 18:20:06 +02:00
Sale Djenic ab835857fb refactor(StatusChatToolBar): open/close handlers get called if they are set for `popupMenu` of `StatusChatToolBar` component 2022-09-21 18:20:06 +02:00
Sale Djenic ce8603b0e1 fix(StatusChatList): unexisting property name for chat item fixed
`StatusChatList` component is able to display:
- chats for Chat section
- channels for Community section
- channels from a category from Community section

in cases 1. and 2. displayed items do not have `parentItemId` property and
it's not used in these cases.
This commit fixes that console error.
2022-09-21 18:20:06 +02:00
Sale Djenic 0f15cb6d5f refactor(StatusChatList): `categoryId` parameter added to `chatItemSelected` signal 2022-09-21 18:20:06 +02:00
Sale Djenic 1529070e24 refactor(StatusChatList): updates due to chat & communities models refactored
Updated Models.qml for chats and communities models to reflect changes due to
refactor in the actual backend.`StatusChatList` and `StatusChatListAndCategories`
components updated accordingly.
2022-09-21 18:20:06 +02:00
Alexandra Betouni 0f3d6fccde refactor(sandbox): remove obsolete timeline demo code
This feature is deprecated and shall be removed

Relates to #4177
2022-09-21 18:20:06 +02:00
Sale Djenic 909b183b12 refactor(StatusAppNavBar): profile nav bar button added
Profile button of type `StatusNavBarTabButton` added to `StatusAppNavBar`
and exposed so it can be optionally set from outside of the component.
2022-09-21 18:20:06 +02:00
Sale Djenic 4ade947921 refactor(StatusAppNavBar): navigation bar displays buttons based on set model
`StatusAppNavBar` component is refactored in order to meet new changes we
have on the backend in the desktop app.
2022-09-21 18:20:06 +02:00
Alexandra Betouni dc9cb8a08a fix: Icon components had wrong color in sandbox app
Icon color in Icons page was broken as setting it
in main.qml was mistakenly removed. Set it back to
Theme.palette.primaryColor1

Closes #538
2022-09-21 18:20:06 +02:00
Pascal Precht 8e4b6c3dca chore: cut 0.22.0 release 2022-09-21 18:20:06 +02:00
Noelia 2e11b7f203 feat(StatusMemberListItem): Implement `StatusMemberListItem` (#539)
Create component StatusMemberListItem.

Add StatusMemberListItem component in sandbox\controls\ListItems for testing all its variants and demo app.

Add new properties in StatusListItem.

Reorganize StatusListItem.qml following Qt conventions.

Add badge in StatusSmartIndenticon component that allows configure a colored state.

Closes #515
2022-09-21 18:20:06 +02:00
Pascal Precht a400a4c6a3 chore: cut 0.21.0 release 2022-09-21 18:20:06 +02:00
Noelia d1525b0b53 feat(StatusQ.Controls): Introduce `StatusPasswordStrengthIndicator`
Create a password strength indicator component with the corresponding variation.

Create a base StatusProgressBar component.

Add new miscColor12.

Closes #528
2022-09-21 18:20:06 +02:00
Khushboo Mehta bd41957c80 feat(StatusMessage): Introducing a new StatusQ Component for Chat Messages
The below mentioned features have been implemented in this component
1. Profile Picture of sender
2. Sender details - name, secondaryName, chatID
3. Text content
4. Image Content
5. Sticker Content
6. Audio Content
7. Reply Component with all the details for the message beinf replied to
8. Pinned component for Pinned message
9. Edit Component to edit the message
10. Loades to load the below -
    a. Link content loader
    b. transaction content
    c. invitation bubble
    d. footer - in this case to show emoji reactions to a message
    e. quick actions loader to show the related quick actions
2022-09-21 18:20:06 +02:00
Alexandra Betouni e7b9462c84 refactor: refactored/cleaned up sandbox app
Grouped QML files by pages, controls and demo app
related stuff
2022-09-21 18:20:06 +02:00
Alexandra Betouni 774b7e44f4 fix(build): broken MacOS build (#533)
moved DESTDIR in sandbox.pro above
copydata command as it was breaking
the build process on MacOS
2022-09-21 18:20:06 +02:00
Pascal Precht 18b763b006 chore: cut 0.20.0 release 2022-09-21 18:20:06 +02:00
Noelia 60638305aa feat(StatusBanner): introduce type variants for different banner styles
* feat(sandbox/controls): Added StatusBanner component in controls view

In order to test StatusBanner.qml ui component it has been added into the Sandbox app as another Control.

* chore(sandbox/controls): Refactor `StatusBanner' component

Create enum to allow selecting StatusBanner type (`Info`, `Danger`, `Success`, `Warning`).

Add new success color with some opacity in ThemePalette.

* chore(Controls/StatusBanner): Use states instead of function

To have a cleaner code, it has been added states to manage type property changes.

* chore(Controls/StatusBanner): Remove unnecessary stuff

Remove unnecessary name property.
Remove successColor3 property.
2022-09-21 18:20:06 +02:00
Boris Melnik 05d0705664 fix(build): Windows build 2022-09-21 18:20:06 +02:00
Noelia 10af4c5433 Created new UI component StatusBanner and added into StatusQ/Controls 2022-09-21 18:20:06 +02:00
Khushboo Mehta 7dfd8260a9 fix(StatusBaseInput): Corrects allignment of the placeholder text in the StatusBaseInput. 2022-09-21 18:20:06 +02:00
Pascal Precht b637cc532e chore: cut 0.19.0 release 2022-09-21 18:20:06 +02:00
Khushboo Mehta 5a00101169 fix(StatusChatListItem): This change fixes the issue of the chat list items getting a highlight even when they are not really hovered
The issue is caused by the fact that the MouseArea returns containsMouse as true even when the item is not hovered.
The issue is reproduced when the model changes dynamically in the StatusChatList, thus causing the StatusChatListItem to be recreated and
this is when the containsMouse remains true even though the item is not hovered.
I see a bunch of issues in the QT bug list with regards to the containsMouse property but are still open.
A solution to this is to use HoverHandler which is a more reliable way getting hovered events for an item.
2022-09-21 18:20:06 +02:00
Pascal Precht 337779f9a6 feat(StatusModal): introduce `hasCloseButton` property
This property can be used to hide the close button, as there are some
modals that shouldn't allow users to "x" modals away.
2022-09-21 18:20:06 +02:00
Pascal Precht 04ba89db97 chore: cut 0.18.0 release 2022-09-21 18:20:06 +02:00
Pascal Precht b2da194809 fix(StatusListItem): ensure title is elided 2022-09-21 18:20:06 +02:00
Khushboo Mehta e83ad058c8 fix(StatusImageWithTitle): Fix position of the edit title button 2022-09-21 18:20:06 +02:00
Khushboo Mehta 5f6f311d8d feat(StatusListItem): Expose the Aside text so that it can be modified from the outside 2022-09-21 18:20:06 +02:00
Khushboo Mehta 083d648b05 fix(StatusAppNavBar): Fixed position of profile button on the NavBar 2022-09-21 18:20:06 +02:00
Pascal Precht fb2a93b549 chore: cut 0.17.1 release 2022-09-21 18:20:06 +02:00
Anthony Laibe d18dfdec03 fix(StatusAccountSelector): Adapt ui to data model changed 2022-09-21 18:20:06 +02:00
Khushboo Mehta 375c76ca1d fix(StatusAssetSelector): Fixed error of crypto balance not updated correctly
Also added error handling in case in case that crypto symbol image is not available
Added a way to display the balance in currently selected currency on the widget
To do this the consumer of this widget needs to implement "getCurrencyBalanceString" based on the currently selected currency

fixes #4079
2022-09-21 18:20:06 +02:00
Pascal Precht 285641b434 chore: cut 0.17.0 release 2022-09-21 18:20:06 +02:00
Khushboo Mehta 7fd7c8a947 fix(StatusListItem): This solves the issue of channel list overlpaing when a category is collapsed.
The issue is not reproducible a 100% of time. In order to solve this bug, we have turned on the preventStealing flag for the mousseArea.
Checked for any sideimpacts but didnt find any.
Tried several times and this change seems to solve the bug. Feel free to repoen if you are still able to reproduce this behaviour.

fixes #4047
2022-09-21 18:20:06 +02:00
Jonathan Rainville 876c6e99f8 fix(StatusAccountSelector): adapt AccountSelector to new model (#482) 2022-09-21 18:20:06 +02:00
Pascal Precht 5fa646d2eb fix(StatusExpandibleItem): add missing hover indicator in `Secondary` type
Fixes #478
2022-09-21 18:20:06 +02:00
Anastasiya S 817a900fd6 fix(StatusSearchPopup): disable enter and return keys to avoid UI breakage 2022-09-21 18:20:06 +02:00
Alexandra Betouni 77e210fa87 fix(StatusSlider): slider background and handle should not depend on root's height
Made slider background and handle to not depend
to root's height so that it covers cases where a
legend is needed thus all should be clickable for
better user experience.

Relates to status-im/status-desktop#3984
2022-09-21 18:20:06 +02:00
Pascal Precht d1be7973c9 feat(StatusQ.Controls.Validators): introduce `StatusUrlValidator` 2022-09-21 18:20:06 +02:00
Pascal Precht 09e0d8a8b9 feat(StatusBaseButton): introduce `Tiny` size 2022-09-21 18:20:06 +02:00
Pascal Precht b4e2730f3d fix(StatusInput): ensure validator messages are rendered when validators return boolean values
There's two ways to signal that a validator emits invalidity on a control:

1. Its `validate()` method returns `false`
2. Its `validate()` method returns an object

Option 2) allows validators to supply the `errors` object with additional data.

Due to latest changes to `errorMessage` handling in validators, those messages
would not be rendered anymore if a validator returns simply `false` instead of an object.
The reason for that is because the code assumed that only option 2) is gonna happen.

This commit ensures that error messages a displayed in both options.
2022-09-21 18:20:06 +02:00
Pascal Precht 9859e33cc0 chore: cut 0.16.0 release 2022-09-21 18:20:06 +02:00
Pascal Precht 2ea3c76bf5 fix(StatusModal): render footer correctly based on `showFooter` flag 2022-09-21 18:20:06 +02:00
Pascal Precht 617ca649b3 feat(StatusQ.Platform): introduce StatusMacNotification component 2022-09-21 18:20:06 +02:00
Pascal Precht 61760e8e54 feat(StatusQ.Controls): introduce `StatusWalletColorSelect` control
Usage:

```qml
StatusWalletColorSelect {
    model: Theme.palette.accountColors
}

```

Closes #467
2022-09-21 18:20:06 +02:00
Pascal Precht 6959ec54aa fix(StatusRoundButton): ensure disabled state uses correct background color 2022-09-21 18:20:06 +02:00
Pascal Precht d8745049da feat(StatusQ.Controls): introduce `StatusWalletColorButton` component
Usage:

```qml
StatusWalletColorButton {
    icon.color: Theme.palette.miscColor1
    selected: true
}
```

Closes #466
2022-09-21 18:20:06 +02:00
Pascal Precht 1708f7aa58 chore: release 0.15.0 2022-09-21 18:20:06 +02:00
Pascal Precht bb3fb252d0 feat(StatusQ.Controls): introduce StatusChatCommandButton
Usage:

```qml
StatusChatCommandButton {
    icon.name: "send"
    icon.color: Theme.palette.miscColor2
    text: "Send transaction"
}
```

Closes #429
2022-09-21 18:20:06 +02:00
Pascal Precht b61a8c45da feat(StatusQ.Controls): introduce `StatusTabBarIconButton` component
Usage:

```qml
StatusTabBarIconButton {
    icon.name: "travel-and-places"
}
```

Closes #428
2022-09-21 18:20:06 +02:00
Pascal Precht d05eb44d4b chore: cut 0.14.0 release 2022-09-21 18:20:06 +02:00
B.Melnik 75d0382e97 fix(Spellchecking): Add check for hunspell existence 2022-09-21 18:20:06 +02:00
Alexandra Betouni 3c7b498e74 fix(Popups/StatusMenuItemDelegate) adding checks to avoid undefined errors 2022-09-21 18:20:06 +02:00
Khushboo Mehta 32e69e6a8e feat(StatusSmartIdenticon): Created a new StatusQ componnent to accomodate:
1. A StatusRoundedImage
2. StatusRoundIcon
3. LetterIdenticon

Fallback in case of an error in loading Image to the LetterIdenticon
2022-09-21 18:20:06 +02:00
Pascal Precht c1021977d6 fix(StatusModal): ensure `onEditButtonClicked` signal is emitted
Closes #454
2022-09-21 18:20:06 +02:00
Pascal Precht b85ccbfc23 fix(StatusModal): expose `header.editable` property
Fixes #452
2022-09-21 18:20:06 +02:00
Anastasiya S cec89ef605 chore(StatusChatInfoButton): add object name for pin counter for testing purposes 2022-09-21 18:20:06 +02:00
Anastasiya S ffc4598bc5 chore(StatusChatInfoButton): add object name for testing purposes 2022-09-21 18:20:06 +02:00
Pascal Precht 66a8b5c87e chore: cut 0.13.0 release 2022-09-21 18:20:06 +02:00
B.Melnik f6bbd95f13 chore(ForTests): Add ojectName's for modals 2022-09-21 18:20:06 +02:00
Khushboo Mehta 5ab7c91b44 feat(StatusFlatRoundButton): Update the StatusFlatRoundButton to take over button behaviour from StatusIconButton under ui/shared/status
1. Added icon disabledColor property under StatusIconSettings
2. Added Tertiary and Quaternary type to accomodate hovered behavior needed in many buttons
3. Added a missing gif icon.
2022-09-21 18:20:06 +02:00
Pascal Precht d27e067e1d fix: use proper double checkmark icon 2022-09-21 18:20:06 +02:00
Pascal Precht 312800ccb9 fix(StatusBaseButton): introduce missing `highlighted` property 2022-09-21 18:20:06 +02:00
Pascal Precht 10a7718011 chore: cut 0.12.0 release 2022-09-21 18:20:06 +02:00
Pascal Precht 19ada77172 chore: ignore cache files 2022-09-21 18:20:06 +02:00
B.Melnik 3f9f3d5b15 feat: Resolve StatusQ modules highlighting and add qml compiler for detecting coompile time errors 2022-09-21 18:20:06 +02:00
Pascal Precht e2c178ad43 feat(StatusQ.Controls): introduce StatusColorSelector component
This is a select component to pick from various supplied colors.

Usage:

```qml
import StatusQ.Controls 0.1

StatusColorSelector {
    model: ["red", "blue", "green"]
}

```

Closes #444
2022-09-21 18:20:06 +02:00
Pascal Precht b194a1d869 feat(StatusQ.Controls): introduce `StatusAssetSelector` component
This is used for a more complex amount and asset selector component.

Usage:

```qml
import StatusQ.Controls 0.1

StatusAssetSelector {
    assets: ListModel {
        ListElement {
            address: "0x1234"
            name: "Status Network Token"
            value: "20"
            symbol: "SNT"
            fiatBalance: "9992.01"
            fiatBalanceDisplay: "9992.01"
        }
        ListElement {
            address: "0x1234"
            name: "DAI Token"
            value: "20"
            symbol: "DAI"
            fiatBalance: "20"
            fiatBalanceDisplay: "20"
        }
    }
}
```

Closes #442
2022-09-21 18:20:06 +02:00
Pascal Precht 368ede5645 feat(StatusQ.Components): introduce `StatusAddress` component
This introduces a `StatusAddress` component which renders an address
and can be made `expandable` by applying a `width`:

```qml
import StatusQ.Components 0.1

// Simple case
StatusAddress {
    text: "0x9ce0056c5fc6bb9459a4dcfa35eaad8c1fee5ce9"
}

// Expandable case
Item {
    width: 200
    height: childrenRect.height
    StatusAddress {
        text: "0x9ce0056c5fc6bb9459a4dcfa35eaad8c1fee5ce9"
        expandable: true
        width: parent.width
    }
}

```

Closes #430
2022-09-21 18:20:06 +02:00
Pascal Precht 9389ee256e feat(StatusQ.Controls): introduce `StatusAccountSelector` component
This commit moves the original `AccountSelector` into StatusQ and makes it
a `StatusAccountSelector`. The API has been preserved. The only difference is
that it's internally relying completely on `StatusQ.Core.Theme` and `StatusQ.Controls`
components instead.

Usage:

```qml
import StatusQ.Controls 0.1

StatusAccountSelector {
    accounts: ListModel {
        ListElement {
            name: "Pascal"
            address: "0x1234567891011"
            iconColor: "red"
            balance: "0"
            walletType: "generated"
            assets: []
            fiatBalance: "1199.02"
        }
        ListElement {
            name: "Boris"
            address: "0x123"
            iconColor: "red"
            balance: "0"
            walletType: "generated"
            assets: []
            fiatBalance: "0"
        }
        ListElement {
            name: "Alexandra"
            address: "0x123"
            iconColor: "yellow"
            balance: "0"
            walletType: "generated"
            assets: []
            fiatBalance: "0"
        }
        ListElement {
            name: "Khushboo"
            address: "0x123"
            iconColor: "blue"
            balance: "0"
            walletType: "generated"
            assets: []
            fiatBalance: "0"
        }
    }
}
```

Closes #435
2022-09-21 18:20:06 +02:00
Pascal Precht 03c6da6e9f feat(StatusQ.Controls): introduce `StatusSelect`
This introduces a new `StatusSelect` component which is a select form control.
The `model` property can be used to apply a `ListModel` for dynamic data.
To give users full control over what the menu items look like, `StatusSelect`
exposes a `selectMenu.delegate` property.

Most of the time this should be a `StatusMenuItemDelegate` to get access to the
comple `MenuItem` component (remember that `StatusMenuItem` is merely an `Action`
type).

`StatusMenuItemDelegate` derives most of its behaviour by its applied `action`,
so the easiest way to construct a dynamic select with StatusQ menu item look and feel
is a combination of `StatusMenuItemDelegate` and `StatusMenuItem` as shown below.

Further more, because `StatusSelect` can't know what the `delegate` is going to look like
it also can't decide what data goes into a `selectedItem`. Therefore, it offers another API,
the `selectedItemComponent` which can be any component. This component can then be accessed
by menu item actions to set corresponding properties.

Usage:

```qml
import StatusQ.Controls 0.1

StatusSelect {
    label: "Some label"
    model: ListModel {
        ListElement {
            name: "Pascal"
        }
        ListElement {
            name: "Khushboo"
        }
        ListElement {
            name: "Alexandra"
        }
        ListElement {
            name: "Eric"
        }
    }

    selectMenu.delegate: StatusMenuItemDelegate {
        statusPopupMenu: select
        action: StatusMenuItem {
            iconSettings.name: "filled-account"
            text: name
            onTriggered: {
                selectedItem.text = name
            }
        }
    }

    selectedItemComponent: Item {
        id: selectedItem
        anchors.fill: parent
        property string text: ""

        StatusBaseText {
            text: selectedItem.text
            anchors.centerIn: parent
            color: Theme.palette.directColor1
        }
    }
}
```

Closes #436
2022-09-21 18:20:06 +02:00
Pascal Precht ec2aeffc55 feat(StatusQ.Popups): introduce `StatusMenuItemDelegate`
This extracts the `MenuItem` delegate used in `StatusPopupMenu` into its
own component so it can be easily reused for cases where simply supplying the
popup menu with `StatusMenuItem` (which is of type `Action`) isn't enough.

Ideally, the `StatusMenuItemDelegate` would be called `StatusMenuItem` but that
would be a breaking change.

Usage:

```qml

StatusPopupMenu {
    delegate: StatusMenuItemDelegate {
        ...
    }
}
2022-09-21 18:20:06 +02:00
B.Melnik a0d97fb464 feat(StatusModal): Add edit avatar button
Part of https://github.com/status-im/status-desktop/issues/3734
2022-09-21 18:20:06 +02:00
Pascal Precht a065abf01b chore: cut 0.11.1 release 2022-09-21 18:20:06 +02:00
Khushboo Mehta fb290392b4 fix(StatusChatInfoButton): StatusChatInfoButton takes up entire available width
fixes #432
2022-09-21 18:20:05 +02:00
Khushboo Mehta c86d1d63df fix: Sandbox doesn't build on Linux machines
fixes #423
2022-09-21 18:20:05 +02:00
Khushboo-dev-cpp 315f91d737 feature(StatusSelectableText): Added a selectable text component (#431)
Features:
1. Select text and copy it
2. Custom highlight on selection
3. Highlight on links
4. Support for multiline text
2022-09-21 18:20:05 +02:00
Pascal Precht 0ca798c891 chore: cut v0.11.0 release 2022-09-21 18:20:05 +02:00
B.Melnik f0004ffc4c fix(StatusSpellcheckingMenuItems): Exact menu items order 2022-09-21 18:20:05 +02:00
Pascal Precht a30cd474d9 fix(StatusSearchPopup): use correct theme color for search result text
This used `Theme.palette.black` before which doesn't work across differen themes.
`Theme.palette.directColor1` is the correct one to use here.
2022-09-21 18:20:05 +02:00
Pascal Precht 86c1f69723 fix(StatusChatList): ensure right click popup opens in correct position
This broke because the emitted `mouse` coordinates where no longer correct
after we've moved the chat list item into a delegate model.
2022-09-21 18:20:05 +02:00
Eric Mastro fd92ad5e28 feat: add star icons (#422) 2022-09-21 18:20:05 +02:00
Eric Mastro 567983b7d8 fix: track category opened state
Category `opened` state is tracked and restored on model change.

Previously, when the model data for categories and channels was changed, all unexpanded, or collapsed categories would automatically expand. This was due to the default state of the category `opened` property being restored (which was set to true) when the model data changed.

With this change in place, the opened state of each category is tracked in the parent component (`StatusChatListAndCategories`), and on each model change, the opened state is restored.

NOTE: it was tempting to the put the changes inside of the `StatusChatListCategory` component, however this would not work as the component is used as a delegate, and all state is wiped on each model change.
2022-09-21 18:20:05 +02:00
Pascal Precht 3bdc2a4c34 chore: cut 0.10.0 release 2022-09-21 18:20:05 +02:00
B.Melnik 79769c165e feat(StatusSpellcheckingMenuItems): Add spellchecking menu
Closes: #398
2022-09-21 18:20:05 +02:00
Pascal Precht 48bd006d05 feat(StatusChatList): expose `statusChatListItems` Repeater
Ever since we've moved to `DelegateModel` which is passed to the `Repeater`
which was previously aliased as `chatListItems`, we no longer get access to the
`model.itemAt` method. This is because `DelegateModel` doesn't have such a method.

So in order to restore that access, we have to expose `Repeater` additionally.

The reason this method is needed, is so that apps like Status Desktop can update
individual chat list items based on `Connection` events
2022-09-21 18:20:05 +02:00
Pascal Precht 581dd15f14 feat(StatusInput): add support for asynchronous validators
Allows asynchronous validation, with the ability to track the validated value for use in the StatusInput as a value that is separate from the entered text.

Async operations are debounced internally to the StatusAsyncValidator.

- `validate`: the input value to this function is the value sent to `asyncComplete`, which must be called by the validator. Return true when the value from the async operation is valid.
- `asyncComplete`: signal to be called by the validator after the async operation has completed. It should contain the value returned by the async operation that should be validated in `validate`.
- `validatedValue`: This is the valid value returned from the async operation. It it tracked separately so that the input text on the `StatusInput` can remain as entered by the user. Use this property and the `onValidatedValueChanged` signal handler for the “real” value to be used by other components.

Closes #395
2022-09-21 18:20:05 +02:00
B.Melnik 540cd79618 feat(Spellchecking): Add dictionaries
Closes: #400
2022-09-21 18:20:05 +02:00
Pascal Precht 8e4b5e2c09 feat(StatusInput): introduce `leftPadding` and `rightPadding` properties 2022-09-21 18:20:04 +02:00
Pascal Precht ada657fab6 feat(StatusInput): introduce `reset` API
This can be used to reset text, error message and validity state of inputs
2022-09-21 18:20:04 +02:00
Alexandra Betouni 56212c547a fix(StatusChatListCategoryItem): Disable sensor when chevron clicked
List items' mouse area was also triggered when chevron
(sub menu) button was clicked so it was unsetting the
opened variable which is responsible for opening/closing
the chats list.
2022-09-21 18:20:04 +02:00
Alexandra Betouni 0c0d9bf919 fix(StatusChatInfoToolBar): Right anchored title in StatusChatInfoToolBar
So that elide mode in text can be activated
2022-09-21 18:20:04 +02:00
B.Melnik b9b4ecae21 feat(Spellchecker): Add Spellchecker class
Closes: #399
2022-09-21 18:20:04 +02:00
B.Melnik 556de60a8d feat(Spellchecking): Add huspell dependency
Closes: #397
2022-09-21 18:20:04 +02:00
Pascal Precht 2bb282bb2c fix(StatusQ.Controls.Validators): fix bug that addressOrEns validator isn't properly exposed in QML 2022-09-21 18:20:03 +02:00
Khushboo Mehta 45dd8147ad feat(StatusExpandableItem): Correct placement of expandable region in tertiary type 2022-09-21 18:20:03 +02:00
Pascal Precht 36b75b8beb chore: cut 0.9.0 release 2022-09-21 18:20:03 +02:00
Pascal Precht 74a88a70b3 feat(StatusBaseInput): introduce `component` property
This property enables users to load any component into the input field.
This is useful for rendering a "clearable" icon button, simple icons or
even more complex buttons.

Usage:

```qml
StatusBaseInput {
    ...
    component: StatusIcon {
        name: "cancel"
        color: Theme.palette.dangerColor1
        width: 16
    }
}
```

The `clearable` property of `StatusBaseInput` also renders and icon button
on the right hand side. With this new feature, `clearable` is just a short-hand
for:

```qml
StatusBaseInput {
    ...
    component: StatusFlatRoundButton {
        visible: edit.text.length != 0 &&
                statusBaseInput.clearable &&
                !statusBaseInput.multiline &&
                edit.activeFocus
        type: StatusFlatRoundButton.Type.Secondary
        width: 24
        height: 24
        icon.name: "clear"
        icon.width: 16
        icon.height: 16
        icon.color: Theme.palette.baseColor1
        onClicked: {
            edit.clear()
        }
    }
}
```

Closes #380
2022-09-21 18:20:03 +02:00
Pascal Precht 1b5d407e93 fix(StatusCheckbox): give checkbox label proper theme color 2022-09-21 18:20:03 +02:00
Pascal Precht ff549d2822 feat(StatusQ.Controls.Validators): introduce `StatusAddressAndEnsValidator` 2022-09-21 18:20:03 +02:00
Pascal Precht f979011323 feat(StatusQ.Controls.Validators): introduce `StatusAddressValidator` 2022-09-21 18:20:03 +02:00
Pascal Precht af8d2036f3 feat(StatusInput): introduce `ValidationMode`
This allows users to configure how validation is run. There are two modes:

1. `ValidationMode.OnlyWhenDirty`
2. `ValidationMode.Always`

By default, validation happens when the inputs value changes, or on
initial `Component.onCompleted` event. The first mode allows for not
performing validation when the input field is blank and validation.
isn't necessary (yet).
2022-09-21 18:20:03 +02:00
Pascal Precht de776e4567 feat(StatusValidator): allow validators to provide default `errorMessage`
Validators can now define a default `errorMessage` like so:

```qml
StatusValidator {
  ...
  errorMessage: "..."
}
```

Because there's no access to runtime validation errors, `errorMessage` have to
be static. However, if applications wish to provide their own `errorMessage`
they can still override it and make it dynamic:

```qml
SomeValidator {
  ...
  errorMessage: input.errors.someValidator ? "Whoopsie" : ""
}
```
2022-09-21 18:20:03 +02:00
Pascal Precht 09c0892e3c Revert "chore: replace profile icon (#312)"
This reverts commit aab59763e5ad943b61856a7394d866ea68068df7.
2022-09-21 18:20:03 +02:00
Khushboo Mehta 5c5d782605 feat(StatusExpandableItem): Refactored the StatusExpandableSettingsItem to support different types
Renamed StatusExpandableSettingsItem to StatusExpandableItem.
Added support for dofferent types of styles for the item.
Type Primary: Relates to Settings Design
Type Secondary: Relates to Collectibles Design
Type Tertiary: Relates to the Collectibles detailed view design

BREAKING CHANGE: Renamed and expanded features of the  StatusExpandableSettingsItem to StatusExpandableItem
2022-09-21 18:20:03 +02:00
Pascal Precht 782c0eecfe feat(StatusSearchPopup): introduce forceActiveFocus API
This is used to enforce focus on the search input when the popup
is opened. In fact users decide to override the search popup's
`onOpened` handler, they still get access to this API to make use of it.
2022-09-21 18:20:03 +02:00
Pascal Precht 7bd484c339 feat(Status.Core.Theme): add RobotoMono font
Closes #342
2022-09-21 18:20:03 +02:00
Pascal Precht dc96cf04a9 fix(StatusModal): don't reserve header subtitle space
Closes #378
2022-09-21 18:20:03 +02:00
Pascal Precht 40001ef7a9 fix(StatusChatListAndCategories): rely on correct tooltip settings prop
Category tooltip settings were broken in this component due to a mismatching
property name.

This commit fixes it.
2022-09-21 18:20:03 +02:00
B.Melnik 0511fade5c fix(StatusAppThreePanelLayout): Fix margin between left and center panels
This margin shows because of `handle` width incuded in `SplitView` width. Handle have `Component` type and can't accessable for getting sizes. I add `magic constant` as hotfix.

Closes: #307
2022-09-21 18:20:03 +02:00
B.Melnik d8d5048622 refactor(StatusPopupMenu): Refactor bug with reopen menu 2022-09-21 18:20:03 +02:00
Alexandra Betouni 12f6791d0c feat(StatusInput): exposed edit component
We need to be able to call forceActiveFocus, so
TextEdit component should be somehow accessible

Relates to desktop #3310
2022-09-21 18:20:03 +02:00
Pascal Precht 45ea097f3e chore: release v0.8.0 2022-09-21 18:20:03 +02:00
Pascal Precht 5f30a34161 feat(StatusBaseInput): introduce focussed property
We can't alias the property as `focus` because this is a final readonly
property, so we're introducing a `focussed` property instead.

Closes #373
2022-09-21 18:20:03 +02:00
B.Melnik 756bc6a1dc fix(StatusModal): Remove self-calculating height
Based on Qt docs `contentItem` must have `implicit` sizes.
link to rules: https://doc.qt.io/qt-5/qml-qtquick-controls2-popup.html#popup-sizing
2022-09-21 18:20:03 +02:00
Alexandra Betouni faea959d63 feat(StatusInput): Introduced secondaryLabel property
Due to design updates in AddAccount modal, updates are
needed in StatusBaseInput and StatusInput

* Added the possibility of having the icon on the right
  side
* Added secondaryLabel for title
* Added examples in StatusInputPage

Closes #383
2022-09-21 18:20:03 +02:00
Khushboo Mehta fa5c50622a feat(qrc): Add new icon needed for share modal 2022-09-21 18:20:03 +02:00
Khushboo Mehta 9bb00e43a2 feat(StatusModal): Add popup menu support for StatusModal
Added logic to support a popup menu to be launched from the StatusModal header.
Added an example in sandbox to demonstrate its usage.

fixes #374
2022-09-21 18:20:03 +02:00
B.Melnik 49c9348f65 fix(StatusInput): Forward keys events to root
Closes: #372
2022-09-21 18:20:03 +02:00
Khushboo Mehta 1398b3c9d5 feat(StatusExpandableSettingsItem): Added new component for wallet settings
Also added a page in the sandbox to demonstrate its usage.
2022-09-21 18:20:03 +02:00
Pascal Precht 4c661109c6 feat(StatusQ.Controls): introduce StatusSwitchTabBar and StatusSwitchTabButton
This commit adds two new components to the StatusQ.Controls module:

- StatusSwitchTabBar
- StatusSwitchTabButton

Usage:

```qml
StatusSwitchTabBar {

    StatusSwitchTabButton {
        text: "Tab 1"
    }

    StatusSwitchTabButton {
        text: "Tab 2"
    }

    StatusSwitchTabButton {
        text: "Tab 3"
    }
}
```

Closes #365
2022-09-21 18:20:03 +02:00
B.Melnik cd72ef5f38 refactor(StatusModal): Remove custom content property
BREAKING CHANGES:
- `content` property removed
- `Loader` inside StatusModal removed
- default `contentItem` property should be used now

Closes: #306
2022-09-21 18:20:03 +02:00
B.Melnik 181ed86b95 fix(StatusBaseInput): fix one line scroll
Closes: #291
2022-09-21 18:20:03 +02:00
B.Melnik 8f83dbbca5 feat(StatusChatListAndCategories): Add tooltip settings for categories buttons
Closes: #226
2022-09-21 18:20:03 +02:00
Pascal Precht d2fd625ee5 feat(StatusSearchPopup): add function hook to allow timestamp formatting
This introduces a new API to allow users to provide a function that formats
timestamps in the search results.

```qml
StatusSearchPopup {
  formatTimestampFn: function (ts) {
      return // formatted ts
  }
}
```

Closes #363
2022-09-21 18:20:03 +02:00
Pascal Precht 1af17548ba feat: introduce bigger versions of navbar icons
Turns out the icons used in the navigation bar of the application actually
are designed to be bigger than the usual icons.

We can't just use the original source and scale them up in QML because that
will impact the stroke width of the SVGs as well, hence we need to introduce
a special set of icons that are design bigger but presever the feature ratios.
2022-09-21 18:20:03 +02:00
B.Melnik 398f17c50e fix(StatusBaseInput): Make clear button bigger
Closes: #294
2022-09-21 18:20:03 +02:00
Pascal Precht 7734a33a95 feat(StatusDescriptionListItem): expose subtitle component for fine control
This enables users to get more control over the subtitle to set things like
`elide` and font properties.

Closes: #356
2022-09-21 18:20:03 +02:00
Pascal Precht 4d54a9347f feat(StatusDescriptionListItem): introduce support for `value`
This adds a new `value` property to the component to set label for a
selected value and also rendering a chevron as an indicator that the list
item becomes clickable.
2022-09-21 18:20:03 +02:00
B.Melnik 5394abb767 fix(StatusChatToolBar): Fix mouse event catching after menu closing
Closes: #350
2022-09-21 18:20:03 +02:00
Sale Djenic 07540b2463 refactor(StatusSearchPopup): change expected search model shape
This changes the share of the model expected to render search results.

BREAKING CHANGE:
The model has changed in the following way:
- `image` field added
- `color` field added
- `badgeIdenticonColor` field renamed to `badgeIconColor`
- `isLetterIdenticon` field renamed to `badgeIsLetterIdenticon`
2022-09-21 18:20:03 +02:00
Pascal Precht 7cf893113b feat(StatusModal): add ability to set elide config of header titles
There are now two new properties in `StatusModalHeaderSettings`:

- `titleElide`
- `subTitleElide`

These can be used to configure the `elide` property of both header titles.
The default values for both of them is `Text.ElideRight`.

Closes #353
2022-09-21 18:20:03 +02:00
B.Melnik d829635354 fix(StatusListItem): Add propogateCompostedEvents to title mouse area
Closes: #346
2022-09-21 18:20:03 +02:00
Pascal Precht 3398fa6119 chore: cut v0.7.0 release 2022-09-21 18:20:03 +02:00
B.Melnik aec06b41d4 feat(StatusWindowsTitleBar): Add windows title bar
Closes: #200
2022-09-21 18:20:03 +02:00
Pascal Precht 4c5b8a79d6 fix(StatusModal): ensure header and subtitles elide if needed
Closes #256
2022-09-21 18:20:03 +02:00
B.Melnik 239fa5e20f feat(StatusChatListCategoryItem): Add tooltips settings
Usage:

```qml
StatusChatListCategoryItem {
   addButton.tootlip.text: "Some add lazy text"
   menuButton.tooltip.text: "My menu"
}
```
2022-09-21 18:20:03 +02:00
B.Melnik 378101fa31 fix(StatusChatInfoButton): Add self-calculated implicitWIdth and elide to texts
This commit add elide flags to text in title and subtitle and add flexibility to width. Now compoents use next rules:
1. If width is set - text should be elided when implicit text  width is more than root object width
2. Component grows if width is not set based on inner elements natural sizes

Closes: #335 and #338
2022-09-21 18:20:03 +02:00
Pascal Precht dfcf6e07f1 fix(StatusListItem): don't set width on title item
There was an explicit `width` introduced on `statusListItemTitle`, most likely
to make room for it when `titleAsideText` is supplied.

This unfortunately causes the title get a very small width, resulting in broken
UI.

Since we can assume that there should be enough space for the titleAsideText
when it's used, we probably don't have to calculate a fixed width for the title
in the first place.

This commit therefore removes that explicit setting.
2022-09-21 18:20:03 +02:00
Pascal Precht cebfe60d50 feat(StatusChatListAndCategories): add drag and drop support for cate… (#349)
* feat(StatusChatListAndCategories): add drag and drop support for categories

This adds support for dragging and dropping chat list categories.
To persist reorder of chat categories, the new `onChatListCategoryReordered`
signal can be leveraged.

Drag and drop of categories is turned off by default and needs to
be turned on using `draggableCategories: true`.

Closes #227

* feat(Status.Core): introduce Utils namespace

This adds a new package for utility related things.
2022-09-21 18:20:03 +02:00
Alexandra Betouni c4aa67a751 fix(StatusAppThreePanelLayout): increase minimum width in right panel
This is to ensure it also inlcludes right margin.
2022-09-21 18:20:03 +02:00
khushboo-dev-cpp e33e51f11a feat(StatusPopupMenu): changed close policy
Close on press outside added to closing policy as the I found old one to be buggy on mac. Causes no side effects.
2022-09-21 18:20:03 +02:00
B.Melnik a8cd4be5a5 fix(StatusBaseInput): fix click to focus
Closes: #325
2022-09-21 18:20:03 +02:00
Pascal Precht 8672141a80 chore: add v0.6.0 changelog 2022-09-21 18:20:03 +02:00
Pascal Precht 591fbdbd4f fix(StatusChatListCategory): emit original mouse event data in clicked signal
This fixes a bug that was introduced in 01da750899 with a breaking change
where `StatusChatListCategoryItem`'s `clicked` signal would no longer receive
a `mouse` event object.

The reason this is happening is because we've introduced a new `clicked` signal
on `StatusListItem`. The idea was to rely on that within `StatusChatListCategoryItem`,
however, we didn't take into account that the new `clicked` signal in `StatusListItem`
doesn't emit a `mouse` event object.

To fix this issue could either reintroduce the custom `clicked` handler on
`StatusChatListCategoryItem`, or listen to the original `sensor.onClicked` and
`onTitleClicked` signals exposed by `StatusListItem` instead, ensuring the required
`mouse` event data exists.

Fixes #333
2022-09-21 18:20:03 +02:00
B.Melnik 85ee81cfa3 feat(StatusChatList): Add drag and drop support of list items
This implements drag and drop capabilities of chat items within a `StatusChatList`.
The commit introduces a `DelegateModal` to visually reorder chat items
when they're being dragged and dropped onto a `DropArea`.

To persist the new order of chat items, various signals have been introduced to chat
list related components:

```qml
StatusChatList {

    onChatItemReordered: function (id, from, to) {
        // ...
    }
}

StatusChatListAndCategories {

    onChatItemReordered: function (categoryId, chatId, from, to) {
        // ...
    }
}
```

There's no such API on the `StatusChatListCategory` type because that one already
exposes its underlying `StatusChatList` via `chatList`, which makes the signal available.

Dragging and dropping chat items is disabled by default and needs to be turned on
using the `draggableItems` property:

```qml
StatusChatList {
    draggableItems: true
    ...
}
```
2022-09-21 18:20:03 +02:00
Pascal Precht 67031ad5b1 Revert "fix(StatusChatInputButton) ensure button text is elided correctly"
This reverts commit 38b0207055f81c853830320e8b20e9532e84973b.
2022-09-21 18:20:03 +02:00
Alexandra Betouni dc5e5d648b fix(StatusChatInputButton) ensure button text is elided correctly
Closes #335
2022-09-21 18:20:03 +02:00
Khushboo Mehta bff34a2e21 feat(StatusLetterIdenticon): Expose the text component
Aliased the text compoenent so that its color, text value can be set from outside
2022-09-21 18:20:03 +02:00
Pascal Precht 4fe2d82208 feat(StatusBaseInput): introduce `dirty` and `pristine` properties
These properties can be used to determine whether a user has either
interacted with the form control, or changed its value.

It's also used in initial validation to ensure validation is done but
visually, form controls stay untouched.

Closes #327
2022-09-21 18:20:03 +02:00
Pascal Precht 3c6147c69c fix(StatusInput): ensure validation is performed on initialization
Closes #326
2022-09-21 18:20:03 +02:00
Pascal Precht 01c5557621 fix(StatusInput): remove recursive binding in label height 2022-09-21 18:20:03 +02:00
Pascal Precht 0ddfa6a1c3 fix(StatusBaseInput): ensure wrapmode works as expectefd in multiline mode
Closes #324
2022-09-21 18:20:03 +02:00
Pascal Precht cc96474b8e fix(StatusBaseInput): expose cursorPosition
Fixes #323
2022-09-21 18:20:03 +02:00
Sale Djenic dc1e0620e6 fix(StatusSearchPopup): replace "#" character with "channel" icon 2022-09-21 18:20:03 +02:00
Sale Djenic 9396bd208c feat(StatusSearchPopupMenuItem): New APIs resetSearchSelection and setSearchSelection
New methods added `resetSearchSelection` and `setSearchSelection` for resetting
and setting selected location.
2022-09-21 18:20:03 +02:00
Sale Djenic e10c8f5d16 refactor(StatusSearchLocationMenu): expose a single itemClicked signal
A single `signal itemClicked(string firstLevelItemValue, string secondLevelItemValue)`
with parameters referring to the first level and second level item is exposed
and replaced multiple signals we had before for the same purpose.
2022-09-21 18:20:03 +02:00
Sale Djenic ca7d17ffc6 feat(StatusSearchPopupMenuItem): new API
Status Menu item received new value property.
2022-09-21 18:20:03 +02:00
Sale Djenic 92757be8fd fix(StatusSearchLocationMenu): typo fix
Fixed a typo in StatusSearchLocationMenu.locationModel
2022-09-21 18:20:03 +02:00
Sale Djenic b1a871cd37 feat(StatusListItem): introduce itemId and titleId properties and their handlers
A click on the item's title or whole item emits appropriate `titleClicked` or
`clicked` signal with `titleId` or `itemId` value respectively. `titleId` and
`itemId` may or may not defer from their display values, it's up to logic which
is applied.

This is introduced because of need of the issue-2934.
2022-09-21 18:20:03 +02:00
Pascal Precht 3a07a9ead8 chore: cut 0.5.0 release 2022-09-21 18:20:03 +02:00
Pascal Precht 2d0febcaae feat(StatusInput): introduce new validator pipeline
There's a new `validators` property that can be used to add validators to `StatusInput` instances, which are executed in the same order:

```qml
StatusInput {
  text: "Some value"
  validators: [...]
}
```

For convenience StatusQ provides some common validation methods, such as `StatusMinLengthValidator`, StatusMaxLengthValidator` and could be extended to other (e.g. email validation etc):

```qml
StatusInput {
  text: "Some value"
  validators: [
    StatusMinLengthValidator { minLength: 3 }
  ]
}
```

Validators are executed every time the text of the input changes. They are executed in the same order they have been applied, which enables users to create cascading conditions like "First make sure the value is at least 3 characters long, then make sure it matches a certain pattern".

When a validation fails, it sets the validity of the input (`valid: false`) accordingly and optionally exposes additional error information on `StatusInput.errors`:

```qml
StatusInput {
  text: "Fo"
  onTextChanged: {
    if (errors) {
      /**
       * errors now has the following structure:
       * errors: {
       *   minLength: { minValue: 3, actual: ... }
       * }
       * Also, `StatusInput` is now `valid = false`
       **/
       errorMesssage = "Expected " + errors.minLenght.minValue + " but got: "+ errors.minLength.actual; // i18n'able
    }
  }
  validators: [
    StatusMinLengthValidator { minLength: 3 }
  ]
}
```
There can be any number of error objects on the `errors` property, depending on who many validators have been run that failed validation.

Custom validators can be implemented by introducing a new `StatusValidator` type that has to implement a `validate()` function and defines the validators name. The `validate()` function has to return either `true` or `false` depending on whether the value is valid.

Alternatively, the function can return an error object which gets exposed on the underlying input's `errors` property, at which point it's considered invalid as well.

Here's a simple custom validator:

```qml
// HelloValidator.qml
import StatusQ.Controls.Validators 0.1

StatusValidator {

  property string name: "hello"

  validate: function (value) { // `value` is the `text` value of the underlying control
    return value === "hello"
  }
}
```

Applying this validators would look like this:

```qml
StatusInput {
  text: "Some value"
  validators: [
    HelloValidator {}
  ]
  onTextChanged: {
    if (errors.hello) {
      errorMessage = "Doesn't say hello!"
    }
  }
}
```

Alternatively, validators can return error objects to provide more information about what went wrong. Here's the implementation of the `StatusMinLengthValidator` as an example:

```qml
StatusValidator {

    property int minLength: 0

    name: "minLength"

    validate: function (value) {
        return value.length >= minLength ? true : {
            min: minLength,
            actual: value.length
        }
    }
}
```

Because validators as components, they can hold any custom properties they need to be configured.

There has been concern that, with this API, error messages need to be potentially defined in multiple places, given that there could be multiple instances of any validator. This is easily solved by having a centralized function figure out what the error message is, given a certain error object:

```qml
StatusInput {
  validators: [
    StatusMinLengthValidator { minLength: 3 }
  ]
  onTextChanged: {
    if (errors) {
      errorMessage = getErrorMessage(errors) // this function is provided by global or elsewhere
    }
  }
}
```

Closes #298
2022-09-21 18:20:03 +02:00
Pascal Precht 91fbc16ee2 feat(StatusBaseInput): enforce `maximumLength` if it's set
Prior to this commit, setting `charLimit` on `StatusInput` would only have a visual effect
(rendering the char limit), however it wouldn't actually enforce this limit.

This was by intended behaviour, because we wanted to leave some room
for possible validators to kick in (for example a max length validator).

If however the char limit is enforce, such a validator would never kick in.
There seems to be consensus in the team that the limit should be enforced though.

This commit enables that.
2022-09-21 18:20:03 +02:00