Commit Graph

53 Commits

Author SHA1 Message Date
Aaron Dodson
3e26b00038 fix: Correct the alignment of narrow text in input fields. (#9327)
* fix: Correct the alignment of narrow text in input fields.

* chore: Clarify purpose of first argument to positionTextElement_().
2025-08-21 11:05:43 -07:00
Aaron Dodson
c9a8221a2d fix: Fix displaying HTML elements in FieldDropdown. (#9258) 2025-07-28 13:33:52 -07:00
Aaron Dodson
4a2b743f10 fix: Fix bug when referencing HTMLElement in non-browser environments. (#9050) 2025-05-14 14:50:23 -07:00
Maribeth Moffatt
523dca92bd fix: fieldDropdown.getText works in node (#9048)
* fix: dropdown getText works in node

* chore: comment
2025-05-14 12:22:09 -07:00
Aaron Dodson
ae22165cbe refactor: Remove INavigable in favor of IFocusableNode. (#9037)
* refactor: Remove INavigable in favor of IFocusableNode.

* chore: Fix JSDoc.

* chore: Address review feedback.
2025-05-13 15:04:49 -07:00
Aaron Dodson
acdad98653 refactor!: Use navigation rulesets instead of ASTNode to control keyboard navigation. (#8992)
* feat: Add interfaces for keyboard navigation.

* feat: Add the Navigator.

* feat: Make core types conform to INavigable.

* feat: Require FlyoutItems elements to be INavigable.

* feat: Add navigation policies for built-in types.

* refactor: Convert Marker and LineCursor to operate on INavigables instead of ASTNodes.

* chore: Delete dead code in ASTNode.

* fix: Fix the tests.

* chore: Assuage the linter.

* fix: Fix advanced build/tests.

* chore: Restore ASTNode tests.

* refactor: Move isNavigable() validation into Navigator.

* refactor: Exercise navigation instead of ASTNode.

* chore: Rename astnode_test.js to navigation_test.js.

* chore: Enable the navigation tests.

* fix: Fix bug when retrieving the first child of an empty workspace.
2025-05-07 08:47:52 -07:00
Christopher Allen
6b695414d3 chore: Merge branch 'develop' into rc/v12.0.0 2025-05-03 02:00:27 +01:00
RoboErikG
a2d76216b2 Feature: Add a dropdown options setter (#8833)
* Feature: Add a setOptions method to field_dropdown

* add test for changing droopdown options

* split out setOptions tests into their own test suite

* Add additional tests

* auto format files
2025-04-17 12:03:35 -07:00
Aaron Dodson
fd9263ac51 feat: Allow for HTML elements in dropdown field menus. (#8889)
* feat: Allow for HTML elements in dropdown field menus.

* refactor: Use dot access.
2025-04-15 14:34:38 -07:00
Aaron Dodson
e45471d6f4 fix: Fix menu scrolling. (#8881) 2025-04-14 13:56:46 -07:00
Aaron Dodson
b8f71b83b7 Merge branch 'rc/v12.0.0' into develop-v12-merge 2025-03-11 09:42:25 -07:00
Aaron Dodson
fa4fce5c12 feat!: Added support for separators in menus. (#8767)
* feat!: Added support for separators in menus.

* chore: Do English gooder.

* fix: Remove menu separators from the DOM during dispose.
2025-02-27 14:00:40 -08:00
Aaron Dodson
58406af64f fix: Fix menu scrolling. (#8765)
* Revert "fix: Fix bug that preventing scrolling menu items into view. (#8726)"

This reverts commit f166b677c0.

* fix: Fix menu scrolling.
2025-02-12 11:53:16 -08:00
Aaron Dodson
bcdb65c623 release: Merge branch 'develop' into rc/v12.0.0 2025-01-10 10:53:09 -08:00
Aaron Dodson
0c20129a26 fix: Fix bug that preventing scrolling menu items into view. (#8726)
* fix: Fix bug that preventing scrolling menu items into view.

* chore: Deprecate now-unused-in-core functions in style.
2025-01-10 10:38:30 -08:00
Aaron Dodson
a42c2d1508 feat: Add a BlockSvg.getStyle() method. (#8722)
* feat: Add a BlockSvg.getStyle() method.

* refactor: Remove direct field access to BlockSvg.style.
2025-01-07 14:44:48 -08:00
Aaron Dodson
9fcd5a3037 release: Merge branch 'rc/v11.2.0' into rc/v12.0.0 2024-12-04 12:06:12 -08:00
Aaron Dodson
7bbbb959f0 feat!: Use CSS to specify field cursors. (#8648) 2024-11-11 07:54:17 -08:00
Aaron Dodson
f1cbaab6ef refactor: Move functions into FieldDropdown. (#8634)
* refactor: Move functions into FieldDropdown.

* refactor: Make dropdown field image metrics static.

* refactor: Use template literals in FieldDropdown validator.
2024-11-08 14:21:16 -08:00
Christopher Allen
ce22f42868 chore: Organise imports (#8527)
* chore(deps): Add pretter-plugin-organize-imports

* chore: Remove insignificant blank lines in import sections

  Since prettier-plugin-organize-imports sorts imports within
  sections separated by blank lines, but preserves the section
  divisions, remove any blank lines that are not dividing imports
  into meaningful sections.

  Do not remove blank lines separating side-effect-only imports
  from main imports.

* chore: Remove unneded eslint-disable directives

* chore: Organise imports
2024-08-15 03:16:14 +01:00
Gabriel Fleury
58abf6ef89 fix: Remove references to getFastTextWidth (#8277) (#8307)
* feat: Remove references to getFastTextWidth (#8277)

* format
2024-07-22 15:14:17 -07:00
Maribeth Bottorff
28ac0c4473 fix: improve types in FieldRegistry (#8062)
* fix: improve types in FieldRegistry

* chore: tsdoc
2024-05-10 14:14:50 -07:00
Mike Harvey
e2df0fc288 fix: correct dropdown arrow placement for Thrasos on Safari (#8017) 2024-04-08 14:56:36 -07:00
Blake Thomas Williams
b6b57215a8 fix: updated field_dropdown to properly infer its Field type with TS 5.3.3 (#7939)
* fix: updated field_dropdown to properly infer its Field type with TS 5.3.3

* fix: removed undefined as an option as its not needed for the type fix

* fix: updated field_dropdown to allow |undefined class validation
2024-03-15 14:45:16 -07:00
Apoorv Garg
9d117674ce Fix: #7416 (#7628) 2023-11-02 08:31:17 -07:00
Christopher Allen
b0a7c004a9 refactor(build): Delete Closure Library (#7415)
* fix(build): Restore erroneously-deleted filter function

  This was deleted in PR #7406 as it was mainly being used to
  filter core/ vs. test/mocha/ deps into separate deps files -
  but it turns out also to be used for filtering error
  messages too.  Oops.

* refactor(tests): Migrate advanced compilation test to ES Modules

* refactor(build): Migrate main.js to TypeScript

  This turns out to be pretty straight forward, even if it would
  cause crashing if one actually tried to import this module
  instead of just feeding it to Closure Compiler.

* chore(build): Remove goog.declareModuleId calls

  Replace goog.declareModuleId calls with a comment recording the
  former module ID for posterity (or at least until we decide
  how to reformat the renamings file.

* chore(tests): Delete closure/goog/*

  For the moment we still need something to serve as base.js for
  the benefit of closure-make-deps, so we keep a vestigial
  base.js around, containing only the @provideGoog declaration.

* refactor(build): Remove vestigial base.js

  By changing slightly the command line arguments to
  closure-make-deps and closure-calculate-chunks the need to have
  any base.js is eliminated.

* chore: Typo fix for PR #7415
2023-08-31 00:24:47 +01:00
Maribeth Bottorff
a0b565724b feat: make field initView and initModel more accessible (#7345)
* chore: update loop style to remove any type

* feat: make initView protected and initModel public

* feat: make image element in image field protected
2023-08-08 10:18:51 -07:00
dependabot[bot]
2546b01d70 chore(deps): Bump prettier from 2.8.8 to 3.0.0 (#7322)
* chore(deps): Bump prettier from 2.8.8 to 3.0.0

Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.0.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.0.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: Reformat using Prettier v3.0 defaults

The main change is to add trailing commas to the last line of
block-formatted function calls.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Christopher Allen <cpcallen+git@google.com>
2023-07-25 14:56:10 +00:00
Maribeth Bottorff
88ff901a72 chore: use prettier instead of clang-format (#7014)
* chore: add and configure prettier

* chore: remove clang-format

* chore: remove clang-format config

* chore: lint additional ts files

* chore: fix lint errors in blocks

* chore: add prettier-ignore where needed

* chore: ignore js blocks when formatting

* chore: fix playground html syntax

* chore: fix yaml spacing from merge

* chore: convert text blocks to use arrow functions

* chore: format everything with prettier

* chore: fix lint unused imports in blocks
2023-05-10 16:01:39 -07:00
Maribeth Bottorff
bf8be1a4f9 fix: update applyColour documentation (#6998) 2023-04-24 10:23:16 -07:00
Rachel Fenichel
c458d63018 chore: remove underscores from private properties and methods in some fields (#6977)
* chore: remove private underscores in field_checkbox

* chore: remove private underscores from field_dropdown

* chore: remove private underscores in field_image

* chore: remove private underscores in field_label

* chore: remove private underscores in field_number

* chore: format
2023-04-13 14:59:43 -07:00
Christopher Allen
faa95d022d fix(fields): Make SKIP_SETUP a Symbol; remove Sentinel class (#6919)
We introduced the SKIP_SETUP sentinel value when converting
Field and its subclasses to ES6 class syntax, because super
must be called before any other code in a subclass
constructor, breaking the previous mechanism where subclasses
would set some properties before calling their superclass
constructor.

SKIP_SETUP was a singleton value of class Sentinel.

Recently, in PR #6639 @btw17 introduced the isSentinel type
predicate to improve the typing of Field.  Unfortunately, there
were some aspects of this change that were not very elegant:

- isSentinel was declared as a static method on Field (rather
  than on Sentinel itself).
- It only checks against the specific value SKIP_SETUP,
  rather than checking if the argument is instanceof Sentinel
  (though perhaps this is for efficiency?)

Additionally - as a result of the migration from ES6 to TS, and
predating PR #6639 - The signature for the Field constructor's
first argument was typed T|Sentinel, with subclass constructors
generally being <some type(s)>|Sentinel.

This creates a small problem when attempting to port Fields from
core to plugins, because Sentinel is not reexported by
core/utils.ts (and therefore not from core/blockly.ts either).

The latter problem could be solved simply by reexporting Sentinel,
or by having plugin constructors not accept SKIP_SETUP (though
this potentially makes them more difficult to subclass), but
neither is particularly desirable.

Instead, this PR proposes that we:

- Make Field.SKIP_SETUP a (unique) Symbol.
- Change the value argument to the Field constructor to accept
  T|typeof Field.SKIP_SETUP - where typeof Field.SKIP_SETUP is
  (like a literal type) a type that accepts just the single
  value SKIP_SETUP.
- Remove the Sentinel class and core/utils/sentinel.ts.

Not treating this as a breaking change:

- Removes Field.isSentinel - though this addition has not yet
  been published, so it can only break our own as-yet-unreleased
  code in samples.

- Changes the type of Field.SKIP_SETUP and the first argument
  of the Field constructor from Sentinel to typeof SKIP_SETUP
  (a unique Symbol) - but given that Sentinel has never been
  exported this should not break any actual external code.
2023-03-23 20:30:48 +00:00
Beka Westberg
252b204adb fix: scrolling dropdown items into view (#6912)
* fix: scrolling dropdown items into view

* chore: lint
2023-03-21 10:00:40 -07:00
Neil Fraser
42fde0f81b chore: Reduce delta on ports to blockly-samples (#6886)
* Reduce usage of obsolete .keyCode property.
* Rename private properties/methods which violate eslint rules.
* Use arrays of bound events rather than individual properties.
* Improve typing info.
* Also fix O(n^2) recursive performance issue in theme's getComponentStyle function.
* And replace String(...) with '${...}' (smaller, faster).
* .toString() is considered harmful.
2023-03-15 13:28:57 -07:00
Blake Thomas Williams
9e5bfc243e fix: export Field-related types from Blockly (#6877)
* chore: re-exported Field config types from Blockly

* mark `@internal` types, export field error, and add validator comments
2023-03-03 14:20:20 -08:00
Neil Fraser
1169b04a45 chore: Make dropdownDispose available for plugins. (#6826)
Specifically in Blockly Samples the field-grid-dropdown wants to call this inherited function.
2023-02-07 12:29:26 -08:00
Rachel Fenichel
1d1a927628 chore: remove alias comments (#6816)
* chore: remove alias comments

* chore: format

* chore: remove extra newlines

* chore: fix bad replaces
2023-02-06 10:08:55 -08:00
Blake Thomas Williams
0fb64a6772 fix: replace 'AnyDuringMigration' for core/field.ts value functions (#6639)
* chore: replace `AnyDuringMigration` for field value functions

* chore: removed unnecessary `KeyboardEvent` comments and `AnyDuringMigration` casts

* chore: cleaned up `doValueUpdate_` and `doClassValidation_` in `Field` subclasses

* fix: updated `FieldValidator` to allow returning `undefined` and restructured `setValue`

* fix: implemented initial `core/field_checkbox.ts` feedback

* fix: updated `Field` to accept `U` and `undefined` and reverted subclass constructor handling of the input value

* fix: reverted `getVars` to returning `string[]` and added related comment

* chore: removed unnecessary comment

* fix: updated `processValidation_` to no longer allow returning `undefined`

* fix: removed `Un` type alias for `undefined`

* chore: removed unnecessary string cast in `core/field_colour.ts`

* fix: updated `doClassValidation_` not to expect `null` since it will never come up in `setValue`

* fix: updated `doClassValidation_` to only allow `undefined` when the new value exists

* Updated `FieldValidator` type to expect `newValue` to exist

* cleanup: updated `picker` from type `Element` to type `HTMLElement`

* fix: updated `doValueInvalid_` type info in `core/field_input.ts` to handle `string` and `undefined`

* fix: reverted `getValue` in `core/field_checkbox.ts` to previous logic

* fix: updated the `Field` constructor to allow `value` to be optional

* chore: consolidated `Validation` with `FieldValidator` and `doClassValidation_`

* fix: reverted generic param `U` while handling diverging user input is being discussed

* fix: updated `doClassValidation_` return comment to work for TSDoc

* fix: misc keyboard event function tweaks
2023-01-10 14:13:49 -08:00
Blake Thomas Williams
79f620647f chore: add validator and field value types (#6603)
* chore: add validator and field value types

* chore/clean up unused default and unnecessary field type setting

* chore: removed IRegisterableField and updated various Field instances

* fix: remove unused field image validator function

* chore: added pass-through constructor to field_textinput
2022-11-11 08:54:57 -08:00
Blake Thomas Williams
f22303b91d chore: added type information to core/field_dropdown.ts (#6550)
* chore: added generator type to `core/field_dropdown.ts` and updated affected files

* chore: added type to ARROW_CHAR in `core/field_dropdown.ts`

* chore: cleaned up misc 'AnyDuringMigration' cases and related comments

* fix: misc adjustments from PR feedback

* Fix: simplified `getOptions`

* fix: removed outdated arrow and cleaned up formatting

* fix: cleanup format after rebase
2022-10-24 14:35:25 -07:00
Beka Westberg
df660af66c fix: make getSourceBlock nullable again (#6542)
* fix: make getSourceBlock nullable again

* chore: format

* chore: move to a specific error

* chore: also update procedures with new error

* chore: format
2022-10-18 12:57:44 -07:00
Beka Westberg
ca3b9bd079 fix: move Theme to use a Partial type for BlockStyle (#6532)
* fix: move theme to use Partial type

* chore: remove useless error throwing

* chore: format

* chore: update validatedBlockStyle_ to use Partial
2022-10-11 15:40:56 -07:00
Blake Thomas Williams
fa925e8c35 chore: cleaned up several type cases in core/field.ts and impacted files (#6363)
* chore: cleaned up several type cases in core/field.ts and impacted files

* chore: updated instances of `sourceBlock_!` to `getSourceBlock()`

* chore: updated instances of `fieldGroup_!` to `getSvgRoot()`

* chore: updated nullable variables in `field.ts` to use internal functions

* chore: updated getSourceBlock and getSvgRoot to handle nullability

* chore: updated comments to reference throwing an error

* fix: reverted `getSvgRoot` to `fieldGroup_` in null-accepting areas

* fix: updated `getSvgRoot` to allow null and added null handling methods

* fix: moved click target error handling to their specific cases

* fix: updated drawer.ts to handle cast svg group to defined
2022-09-30 08:53:19 -07:00
Beka Westberg
8530e6d537 fix: adding and removing css classes that contained spaces (#6455)
* fix: adding CSS classes

* fix: removing css classes

* fix: add a test for multiple icon classes

* chore: format
2022-09-28 15:51:17 -07:00
Beka Westberg
abad51fdb0 fix: theme types (#6423)
* chore: fix theme types

* chore: format
2022-09-26 12:52:46 -07:00
Neil Fraser
e5dcb766bd chore: Remove radix from parseInt, simplify Blockly.utils.dom methods, use Unicode characters. (#6441)
* chore: remove radix from parseInt

Previously any number starting with '0' would be parsed as octal if the radix was left blank.  But this was changed years ago.  It is no longer needed to specify a radix.

* chore: 'ID' is identification

'id' is a part of Freud's brain.

* Use Unicode characters instead of codes

This is in line with the current style guide.

* Simplify Blockly.utils.dom methods.

classList add/remove/has supports SVG elements in all browsers Blockly supports (i.e. not IE).
2022-09-22 06:59:24 -07:00
Neil Fraser
05b221b1d6 fix: Deep copy options used by dropdown fields (#6425)
This uncovered a broken test that was only passing because of a side effect of the dropdown option data getting modified.
2022-09-13 13:29:38 -07:00
Rachel Fenichel
e3fa43d861 feat: return element from menu.render (#6426)
* feat: return element from menu.render

* chore: format

* chore: add returns annotation
2022-09-13 13:29:18 -07:00
Rachel Fenichel
5f11f3449f fix: remove calls to removeClass and hasClass (#6413)
* fix: stop using dom.addClass in most cases

* chore: format

* fix: remove use of dom.addClass in toolbox

* chore: lint and format

* fix: add checks around non-constant class names

* fix: switch back to quoted access

* chore: format

* fix: remove calls to removeClass

* chore: format

* chore: remove unused deps

* fix: remove uses of hasClass

* chore: format and lint

* chore: format
2022-09-13 08:33:49 -07:00
Maribeth Bottorff
037eb59b89 chore: Lint TsDoc. (#6353)
* chore: add linting for tsdoc

* chore: don't require types on return

* chore: remove redundant fileoverview from ts

* chore: change return to returns and add some newlines

* chore: remove license tag

* chore: don't require params/return docs

* chore: remove spurious struct tags

* Revert "chore: change return to returns and add some newlines"

This reverts commit d6d8656a45.

* chore: don't auto-add param names

* chore: disable require-param bc it breaks on this

* return to returns and add line breaks

* chore: configure additional jsdoc rules

* chore: run format

* Revert "chore: remove license tag"

This reverts commit 173455588a.

* chore: allow license tag format

* chore: only require jsdoc on exported items

* chore: add missing jsdoc or silence where needed

* chore: run format

* chore: lint fixes
2022-08-23 14:27:22 -07:00