Code Monkey home page Code Monkey logo

macos_ui's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

macos_ui's Issues

Implement tooltip

https://developer.apple.com/design/human-interface-guidelines/macos/user-interaction/help#help-tags-tooltips

Help tags, often referred to as tooltips, succinctly describe how to use controls without shifting people’s focus away from the primary interface. Help tags appear when the user positions the pointer over a control for a few seconds.

A help tag remains visible for 10 seconds, or until the pointer moves away from the control.

The tooltips should be rendered according to the pointer (mouse) position, not to its child.

Tooltip Example

Contextual menu

These kinds of menus are almost everywhere in macOS UIs :

image

Implementing them would require a native plugin since they can appear outside of the main window.

They would also allow to implement list pickers like :

image

image

More info

`MacosTabView` & `MacosTab`

https://developer.apple.com/design/human-interface-guidelines/macos/windows-and-views/tab-views/

A tab view presents multiple mutually exclusive panes of content in the same area. A tab view includes a tabbed control and a content area. Each segment of a tabbed control is known as a tab, and clicking a tab displays its corresponding pane in the content area. Although the amount of content can vary from pane to pane, switching tabs doesn’t change the overall size of the tab view or its parent window.

TabView Preview

Vertical Tabs Horizontal Tabs

Library structure

A structure needs to be established within /src. I'm leaning towards the structure that Apple uses in their Human Interface Guidelines. If anyone has any thoughts on this, please share. Thanks!

`MacosListTile`💡

Proposal

A widget much like the material ListTile only without the material bits. Such a widget is often quite useful.

`MacosIconButton` needs a few updates

  • Since the color property for our IconButton sets the background color of the button, if the user selects a transparent background they should be able to set the color of the IconData themselves
  • MacosIconButtonThemeData

`Toolbar`

Screen Shot 2021-05-13 at 12 01 46 PM

Screen Shot 2021-05-13 at 9 29 32 PM

  • A TitleBar should take a List<Toolbar> toolbars. A Toolbar should therefore be defined as a Widget that can take multiple children and lay them our horizontally according to the developer's preference.

Repo setup tasks

  • Add info to CONTRIBUTING.md (branch structure, etc)
  • Decide on lint rules and add them to analysis_options.yaml
  • Decide on any actions and add them
  • Decide on a pull request template and add it
  • Decide on an issue template and add it

Renaming widgets with "macos" prefix

All our widget names should start with Mac. eg MacScaffold.
This is to prevent name conflicts with existing widgets in the flutter framework and preserve the great developer experience Flutter already has. No dev (yes, including us) dreams of importing our library with a prefix or in every file of their project.

Improve scrolling

  • Implement Scrollbar, and expose ScrollbarThemeData to MacosThemeData
  • Implement MacosScrollBehavior

Add input cursors

Description
Currently the inputs we have (PushButtons, Checkbox, RadioButton, HelpButton) doesn't change the mouse cursor on hover.

Expected behavior
The mouse cursor should change to SystemMouseCursors.click. This can be done using the widget MouseRegion.

Level Indicator not working as expected

As stated in the description provided by apple the Level Indicator should implement user interaction. Clicking on a bar or sliding over the bar should adjust the value.

Screenshot 2021-04-23 at 22 24 38

However, as you can see in the following GIF clicking on a bar does not correspond to the correct selected value.

showcase

As far as I can tell the element you tap on should be selected.
The sliding is fine but the first click of the slide is registered as tap thus the value changes before the sliding applies. This should be avoided

☂️ Fields and Labels

Implement text and label fields:

  • MacosTextField
  • MacosLabel
  • #197
  • #196
  • MacosTokenField

-ordered by priority-

Text Fields

A text field is a rectangular area in which the user enters or edits one or more lines of text. A text field can contain plain or styled text.

TextField Example

Combo Box

A combo box combines a text field with a pull-down button in a single control. The user can enter a custom value into the field or click the button to choose from a list of predefined values. When the user enters a custom value, it’s not added to the list of choices.

ComboBox Example

Search Fields

A search field is a style of text field optimized for performing text-based searches in a large collection of values. Many windows include a search field in the toolbar, but a search field can also be displayed in the body area of a window. A search field displays a magnifying glass icon, and can also include placeholder text and a cancellation button.

Search Field Example

Token Fields

A token field is a type of text field that includes tokens, blocks of text that can be easily selected and manipulated.

Token Field Example

Label

A label is a static text field that describes an onscreen interface element or provides a short message. Although people can’t edit labels, they can sometimes copy label contents.

Label

Improve Typography

  • Remove height from all TextStyles
  • Add letter spacing to all TextStyles that require it
  • Add correct weights to all TextStyles

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.