Commit Graph

37 Commits

Author SHA1 Message Date
Francesco Torchia baa2c9fd60
Fix dropdown behavior in Select component when removing tagged elements
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2025-09-10 15:16:40 +02:00
Francesco Torchia 6fa45c1fec
Remove onClickOption to avoid duplicate update:value emit from LabeledSelect.vue and Select.vue
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2025-09-09 18:51:31 +02:00
Alexandre Alves faa7fe3b60
A11y report fixes (#14530)
* fix item 2: All page content should be contained by landmarks

* fix item 4. Elements must only use permitted ARIA attributes

* fix item 6. ARIA attributes must conform to valid values

* fix bug on item 6. and fix item 7. <ul> and <ol> must only directly contain <li>, <script> or <template> elements

* fix item 8. Interactive controls must not be nested

* fix item 10. ARIA toggle fields must have an accessible name

* fix item 11. autocomplete attribute must be used correctly

* fix item 12. Form elements must have labels

* fix item 14. ARIA input fields must have an accessible name

* fix item 15. Buttons must have discernible text

* fix item 16. Images must have alternative text

* working on item 17

* finish fix item 17. ARIA role should be appropriate for the element

* fix wrong role in hidden inputs

* address pr comments
2025-07-10 10:09:09 +01:00
Neil MacDougall f8a6ddf25d
Fix select controls do not close when clicking on arrow (#14217)
* Fix select controls do not close when clicking on arrow

* Rebase

* Control vue-select state via labeledSelect

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Control vue-select state via Select.vue

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Set isOpen to false when select closes

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Move focus back to select wrapper on close

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Defer more select open state logic to wrapper

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Close when no selection is made

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Allow for multiselect

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Fix failing e2e test

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

---------

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
Co-authored-by: Phillip Rak <rak.phillip@gmail.com>
2025-07-02 13:33:43 -07:00
Phillip Rak ade0a1f9d9
Simplify spacebar prevent behavior when focusing LabeledSelect (#14553)
* Simplify spacebar prevent behavior when focusing LabeledSelect

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Fix unit test

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Simplify spacebar prevent behavior when focusing Select

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

---------

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2025-06-26 08:57:30 -07:00
Alexandre Alves 20827a1943
fix problem with space key on searchable selects (#14362)
* fix problem with space key on searchable selects + add unit tests

* fix lint issue
2025-05-19 11:49:44 +01:00
Phillip Rak dc30093509
Replace container logs actions with new dropdown menu component (#14172)
* Create new `useDropdownItem` composable

This composable defines common methods that can be shared across different dropdown menu item types.

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Create new `RcDropdownMenuItemCheckbox` component

`RcDropdownMenuItemCheckbox` specifies the styles and behaviors for a menu items that acts as a checkbox.

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Create a select item dropdown component

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Move container actions into dedicated component

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Toggle container logs actions based on environment

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Fix type for labeledSelect component ref

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Replace trigger mixin data with event.stop

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Fix typo: LocaleSelector

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

---------

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2025-05-06 10:50:09 -07:00
Alexandre Alves e8e05df687
fix missing labels on form fields (#13957)
* fix missing labels on form fields

* update Select to match wiring work done in another PR for aria attributes + add a11y unit test
2025-04-11 09:51:15 +01:00
Alexandre Alves 4af23f6d6a
working on issues reported in the a11y tests (#13609) 2025-04-02 09:57:46 +01:00
Alexandre Alves a3e4a80ef0
add missing lang HTML attribute to locale selector2 (#13817) 2025-03-21 09:20:20 +00:00
Alexandre Alves 46aa2851c0
prevent scroll when hitting arrow down key on selects (#13466) 2025-02-24 15:27:30 +00:00
Alexandre Alves d79c491e8b
Fix keyboard navigation and focus display issues on the combobox component (#13352)
* add label connection to dropdown on LabeledSelect + add missing roles and connections

* address pr comments
2025-02-24 15:12:31 +00:00
Alexandre Alves dab97f7397
prevent scroll when hitting space key on selects (#13371) 2025-02-13 11:32:17 +00:00
Alexandre Alves 0c411e96d3
Keyboard nav for extensions main screen (#13176)
* working on focus trap composable

* working on slide in panel refactor

* add change so that we dont have a change on the component diff

* fix slidein extension details panel key nav

* fine tune cluster badge trigger btn

* finish work on extensions page

* fix lint errors

* address pr comments

* fix problems of propagation

* update return focus for some modals in the extensions main screen

* remove dead code + fix focus selector return for add extensions repo and developer install modals
2025-02-11 10:47:55 +00:00
Alexandre Alves bc003d36a0
fix key nav on preferences page (#13161)
* fix key nav on preferences page

* address pr comments
2025-01-23 09:49:24 +00:00
Cody Jackson 5052c2a8e8 Enabling `vue/require-explicit-emits` linting rule
https://github.com/rancher/dashboard/issues/11961
2024-09-19 09:58:53 -07:00
Richard Cox fd515f29b4 Improve the height of Create Role Resource Tab's input fields
- Remove custom code, use new generic code that follows 'compact' concept
- Apply to all four fields in row
- Also fix a bug where selected verbs such that another row is shown would grow height of other inputs

Fix height of Create Project Resource Quotes input fields
- Vue2
  - Component would inherit attributes, such as class from owning element. For example classes applied to `<Select` would be applied to the first element within the Select component
  - $attrs property does not contain some properties from the parent, such as class
- Vue3
  - Component does not inherit attributes of owning element
  - $attrs property contains all propertiesof parrent, including class
- Bug
  - We fixed part one, but not part two
  - in Select we were applying class twice, manually to parent and then automatically to v-select
  - solution is to fix part two (chop out class)
2024-09-06 14:12:18 +01:00
Phillip Rak 52a51348fb Add `canPaginate()` computed prop to LabeledFormElement components
This defines the `canPaginate()` computed prop so that it can be accessed in the `labeled-form-element` mixin.

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2024-08-27 14:10:52 -07:00
Cody Jackson 60d5998800 Fixing how we forward classes to the select element. 2024-08-22 16:09:54 -07:00
Cody Jackson 66a61da1d8 Fixing value binding in the <Select> component 2024-08-22 16:09:54 -07:00
Phillip Rak 64e9baf7f4 Update `vue-select` and fix `LabeledSelect` & `Select` components
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2024-08-22 16:07:03 -07:00
Cody Jackson 9b829c55ea Ran `yarn lint --fix` 2024-08-22 16:05:36 -07:00
Cody Jackson d5ce4fff2e Run the vue3 migration script
Commands run:

➤ yarn migrate
➤ git clean -fdx
➤ nvm use 20
➤ yarn
2024-08-22 16:05:36 -07:00
Francesco Torchia fc4051f4fa
Validate allocatable vGPUs number in Harvester clusters creation
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2024-04-30 16:30:26 +02:00
Alexandre Alves d3b802ab15
fix issue with Resources Select in globalRoles edit/create interface (#9210)
* fix issue with Resources Select in globalRoles edit/create interface

* address PR comments

* add missing check

* Minor improvement, add comments
- Did a deep dive on what this should actually be doing, added comments to explain
- We should prioritise methods to find a key via config before falling back on label and random string
- The opt.optionKey has been (previously) applied incorrectly. It should be the actual option key, rather than a key to find the option key
  - This is the root of the issue.
  - I don't think we should fix this here in case of breaking somewhere else
  - The changes in the PR are one's we should be doing anyway

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-07-17 13:23:02 +01:00
Giuseppe Leo 01eeb0548f
Add recommended lint rules globally (#8997)
* Update configuration

* Create default config for eslint

* Restore plugin:vue/recommended

* Add exceptions and overrides

* Correct manually remaining issues

* Adding further picked exceptions groupped up

* Fix or disable specific cases manually and singularly

* Add naming linting exception

* Remove unused variable in component

* Move rules to default

* Autocorrect rancher/components linting issues

* Configure VSCode to use multiple files, to display linting for rancher components

* Disable jest lint hook restriction for string list component

* Autofix
2023-06-23 17:02:55 +02:00
Catherine Luse b41d734054
Merge pull request #6688 from bashofmann/logging-flow-match-namespaces
Add additional namespaces match field to logging ClusterFlow page
2022-12-16 18:19:58 -07:00
Nancy bc17dea8d5
Fix role form input event handling (#7562)
* allow cloning roles; fix unlabaled taggable select style

* fix role edit/view config style inconsistency

* fix role form input event handling
2022-11-30 08:57:31 -07:00
Nancy 8a0f8211bd
allow cloning roles; fix unlabeled multi-select style (#7258)
* allow cloning roles; fix unlabaled taggable select style

* fix role edit/view config style inconsistency
2022-11-22 08:29:47 -07:00
Bastian Hofmann 60ebcaff7f Add additional namespaces match field to logging ClusterFlow page
This also fixes a styling issue in the select fields on the Flow and ClusterFlow page

Fixes
2022-11-21 09:45:08 +01:00
Giuseppe Leo d2d4122bc0
Review HTML formatting rules (#6805)
* Prevent ESLint to format generated paths

* Add HTML ESLint Rules

* Format all the Vue HTML templates except Harvester

* Exclude Harvester package from linting HTML, keeping old formatting rules
2022-11-11 17:04:22 +01:00
Alexandre Alves 1e2baae84d
remove @input event from v-select (#7360)
* remove @input event from v-select as event is already sent by default by v-select

* adjust unit tests

Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
2022-11-09 17:40:43 +00:00
Sean 41ba49b6c2 Adds in UI-side validation for Ingress Form plus additional fixes.
Fixes #4575 Add in validator injection to form-validation mixin, add in "allTabsExtraContent" slot to "tabbed" for messaging that should span all tabs, Error component optionally displays as banner, InputWithSelect can now show validationMessage on text-box without a label, LabeledSelect can now show tooltip and validationMessage at the same time, Select component can now show validation message, adding and removing rules and rulepaths displays correct content, removing does not reload page (fixes #6319), ingress form shows proper validation messages for the following states: invalid "name" field, invalid request host, invalid rule path, invalid rule target service, invalid rule port, invalid default backend target service, invalid default backend port, either rules or default backend must be present. Ingress form is validated and "Create" button is disabled if payload is not validated as correct.
2022-07-21 13:55:38 -04:00
Giuseppe Leo 6422c1de77
Fix issue with inputs not updating data inside multiple forms while typing (#6070)
* Use plugins globally in Jest configuration over single statements

* Add checkspell terms

* Add test id and cleanup code for Upgrading

* Create test for Upgrading input actually updating values while typing

* Handle missing terminationGracePeriodSeconds value in the spec qhile hanfling Upgrade value

* Replace Deployment Upgrading input event strategy with blur

* Remove container input listener, over single input emitters, to avoid issues in case of blur

* Extend tests to all the inputs to update the data in the Upgrading tab

* Removed deprecated components

* Correct vue-select import in Vue within Jest setup

* Add vue-select type

* Create form tests sample for input with custom select component

* Create unit tests for all the forms

* Create test for Upgrading without verify value

* Changed from component to query selectors in select input unit tests

* Prevent multiple events due inconsistent event input pattern in network update for Harvester

* Correct TS complain about Vue logic

* Add issue number to TODO
2022-06-20 11:25:49 +02:00
Phillip Rak 3c23d90b0d
Port rancher components to TypeScript (#6073)
Summary

This ports the components under pkg/rancher-components to TypeScript. Take note that this change also touches some areas outside of pkg/rancher-components, including

    shell/mixins/labeled-form-element.ts
    shell/mixins/compact-input.ts
    shell/components/form/LabeledSelect.vue
    shell/components/form/Select.vue

Making changes to these components was required to properly work with the mixins used for pkg/rancher-components/src/components/Form/LabeledInput/LabeledInput.vue. Perhaps these would be good candidates to port to Rancher Components next..

Fixes #5932
Areas or cases that should be tested

We'll need to review a good range of usages for the modified components to check for regressions. I'm mostly concerned about type errors or warnings that might be raised during runtime.
2022-06-07 10:36:37 -07:00
Phillip Rak 72b36cb360
Create Rancher Component Library (#5504)
This adds a new project for Rancher Components under `pkg/rancher-components` and replaces components used throughout dashboard with the versions used here. All imports for the following components have been updated:

```
  |- BadgeState.vue
  |- Banner.vue
  |- Card.vue
  |- Form
    |- Checkbox.vue
    |- LabeledInput.vue
    |- LabeledTooltip.vue
    |- RadioButton.vue
    |- RadioGroup.vue
    |- TextAreaAutoGrow.vue
```
2022-05-24 15:09:53 -07:00
Richard Cox 25acc1f8eb Plugins: Rejig files to new shell locations (#5623)
* Doc

* v0.7.0

* v0.7.1

* v0.7.2

* Add creators

* v0.1.14

* v0.1.17

* Add Yarn link

* Tidy ups and typos

* Allow models to be loaded from plugins

* v0.1.15

* v0.1.18

* v0.6.6

* Improve readme, fix cyperss log msg

* v0.1.17

* v0.1.19

* v0.6.7

* v0.6.8

* Fix logo ref when in shell

* Fix lint issues

* Fix error in example

* Fix script to work on linux

* Add ability to revert moves without losing changes

* Fix bug with custom models in a plugin

* Fix build of UI packages

* Add dist-pkg to .eslintignore

* Pull out util from extend-router to prevent router being pulled in UI packages

* Update PLUGINS.md

* Remove duplicate dependency

* Reduce size of built UI packages

* Share codemirror. Other tidy ups

* Further improvements

* Tidy ups to support i18n in plugins

* Clen up add comments

* More clean-ups and comments added

* Rename from extension to plugin

* Missed file in rename

* v0.6.9

* TIdy ups following rename

* v0.1.20

* v0.1.21

* More refactor and tidy up

* v0.1.22

* v0.1.18

* v0.1.19

* v0.1.23

* v0.6.10

* Version Packages. Improve naming. Unload.

* v0.6.11

* v0.1.20

* v0.1.21

* v0.1.24

* v0.6.12

* v0.1.25

* v0.1.22

* v0.6.13

* Fix issues when plugin is builtin

* Add missing files

* Fix lint issues and watcher ignores

* Fixes following review

* v0.1.28

* v0.1.31

* v0.6.20

* Fix coer.js version

* Fix bug where plugins included via npm don't work

* Changes post merge

* Move plugins doc to dev guide, add note at top of README

* Update cypress version

* Add note about the reset --hard in rejig -d

* Fixes post merge

* Rename @ranch to @rancher and ad plugins

* Improve routes support, add package assets support

* Add uninstall hooks and pass interal opts

* Fix rejig script

* Minor fixes

* Routing tweaks
- attempted to improve `addRoutes` typing, failed a lot
- improved typings in plugins.ts
- added "@pkg/*" entry and vue-shim (for importing components) to the pkg creator
- fixed some linting
- safely fail when Verdaccio isn't running
- fixed some typos

* Remove frontmatter-markdown-loader reference from nuxt-config

* Revert "Remove frontmatter-markdown-loader reference from nuxt-config"

This reverts commit 29ef6f2f7b.

* Exclude creators from dashboard build

* Revert "Exclude creators from dashboard build"

This reverts commit 8ede93ee7c.

* Ingore creators via tsconfig
- We're still susceptible with vue shims in multiple packages
- Need to determine why packages can't use shim from route
- Probably need to move `./vue-shim.d.ts` in to `./shell`. Needs testing with a pkg that imports a component

* After rejig

Co-authored-by: Neil MacDougall <nmacdougall@suse.com>
Co-authored-by: Neil MacDougall <nwmac@users.noreply.github.com>
2022-05-10 10:04:02 +01:00