Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

formatters: Add formatters-custom for overrides #448

Merged
merged 1 commit into from
Nov 4, 2020

Conversation

creotutar
Copy link
Contributor

Previously, in order for HHs to override formatters, they would need to
theme override the formatters.js class /and/ reference any new
formatters from some new javascript class. We standardize this process
with the formatters-custom.js file. This new file will be moved to the
top-level static/js where HHs can change it without overriding files.

This file allows a HH to override current formatters as well as define
new ones.

J=SLAP-810
TEST=manual

Tested that with a formatters-custom in js/static of a HH theme
repository, you can write

export function address(profile) {
  return `111 Yext Street`;
}
export function newFunction(profile) {
  return 'helllllooooo';
}

and you can expect, after a jambo build that the addresses all
return the 111 Yext Street string and you can go into the command line
and write HitchhikerJS.Formatteres.newFunction() and get the hello
string.

Previously, in order for HHs to override formatters, they would need to
theme override the formatters.js class /and/ reference any new
formatters from some new javascript class. We standardize this process
with the formatters-custom.js file. This new file will be moved to the
top-level static/js where HHs can change it without overriding files.

This file allows a HH to override current formatters as well as define
new ones.

J=SLAP-810
TEST=manual

Tested that with a formatters-custom in js/static of a HH theme
repository, you can write

```
export function address(profile) {
  return `111 Yext Street`;
}
export function newFunction(profile) {
  return 'helllllooooo';
}
```

and you can expect, after a `jambo build` that the addresses all
return the 111 Yext Street string and you can go into the command line
and write HitchhikerJS.Formatteres.newFunction() and get the hello
string.
Copy link
Member

@cea2aj cea2aj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎃 💀 👻

Copy link
Collaborator

@tmeyer2115 tmeyer2115 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Once tree shaking is working, we'll want to test that if I have a custom override of a formatter, the built-in formatter, and it's dependencies, are shaken out. As a contrived example, if I overwrote nationalizedPhoneDisplay without libphonenumber, then libphonenumber would not be part of bundle.js.

@creotutar creotutar merged commit 736766e into develop Nov 4, 2020
@tmeyer2115 tmeyer2115 mentioned this pull request Dec 1, 2020
tmeyer2115 added a commit that referenced this pull request Dec 1, 2020
## Version 1.17.0
Version 1.17.0 of the Theme supports the new Overlay integration. It also has a number of changes to support the new, built-in Product entity type.
### Changes
- A new file, static/js/formatters-custom.js was added to the Theme. This file is where any custom formatters or overrides of built-in formatters, should live. (#448)
- Single language cards now use the `toLocalizedDistance` formatter to properly format entity distance. (#449)
- To better support WCAG, the iFrame integration now has a `title` attribute on the iFrame. (#451)
- The Theme now allows a new type of Answers integration: the Overlay. This is one of the simplest integrations offered. Additional documentation on it can be found in the Hitchhiker training.
- We upgraded the Theme to use Webpack v5. This will enable proper tree-shaking of bundle.js. (#463, #470)
- A new card type was added: `product-prominentimage-clickable`. The card itself is clickable. (#466)
- A new formatter was added: `Formatter.hoursList`. This formatter lists the hours for an entity for every day of the week. (#467)
- To improve site performance, the `defer` attribute was added to all the SDK JS assets. (#473, #474)
- Small updates were made to all the product cards to support the new, built-in Product entity type. (#411, #476)
- A new formatter was added for prices: `Formatter.price`. (#472)
- The `JAMBO_INJECTED_DATA` environment variable now includes the label of an experience's vertical. This label is used as the default vertical name in navigation, no results, and universal section title. (#490, 493)
### Bug Fixes
- The post upgrade script now works correctly when the Theme has been imported as a submodule. (#441)
- The `LocationStandard` card's styling was updated to be fully compatible with IE11. (#455)
- A bug was fixed that caused the Theme's inline Javascript to be minified twice. By removing this bug, Webpack builds were made considerably more performant. (#461)
- Fixes were made to ensure the `View Results` button for `CollapsibleFilters` is sticky. (#468, #469)
- The logic for identifying absolute URLs in the HBS templates was corrected (#475)
- The thumbnail selection logic in `Formatter.image` was incorrect. It was not properly selecting the smallest thumbnail greater than the provided threshold. This has been corrected. Note that this bug had an impact on page performance as unnecessarily large images were loaded on the page. (#471)
- The `relativePath` computed by Jambo is now properly passed along to the Theme's cards. (#499)
@tmeyer2115 tmeyer2115 mentioned this pull request Dec 1, 2020
tmeyer2115 added a commit that referenced this pull request Dec 1, 2020
## Version 1.17.0
Version 1.17.0 of the Theme supports the new Overlay integration. It also has a number of changes to support the new, built-in Product entity type.
### Changes
- A new file, static/js/formatters-custom.js was added to the Theme. This file is where any custom formatters or overrides of built-in formatters, should live. (#448)
- Single language cards now use the `toLocalizedDistance` formatter to properly format entity distance. (#449)
- To better support WCAG, the iFrame integration now has a `title` attribute on the iFrame. (#451)
- The Theme now allows a new type of Answers integration: the Overlay. This is one of the simplest integrations offered. Additional documentation on it can be found in the Hitchhiker training.
- We upgraded the Theme to use Webpack v5. This will enable proper tree-shaking of bundle.js. (#463, #470)
- A new card type was added: `product-prominentimage-clickable`. The card itself is clickable. (#466)
- A new formatter was added: `Formatter.hoursList`. This formatter lists the hours for an entity for every day of the week. (#467)
- To improve site performance, the `defer` attribute was added to all the SDK JS assets. (#473, #474)
- Small updates were made to all the product cards to support the new, built-in Product entity type. (#411, #476)
- A new formatter was added for prices: `Formatter.price`. (#472)
- The `JAMBO_INJECTED_DATA` environment variable now includes the label of an experience's vertical. This label is used as the default vertical name in navigation, no results, and universal section title. (#490, 493)
### Bug Fixes
- The post upgrade script now works correctly when the Theme has been imported as a submodule. (#441)
- The `LocationStandard` card's styling was updated to be fully compatible with IE11. (#455)
- A bug was fixed that caused the Theme's inline Javascript to be minified twice. By removing this bug, Webpack builds were made considerably more performant. (#461)
- Fixes were made to ensure the `View Results` button for `CollapsibleFilters` is sticky. (#468, #469)
- The logic for identifying absolute URLs in the HBS templates was corrected (#475)
- The thumbnail selection logic in `Formatter.image` was incorrect. It was not properly selecting the smallest thumbnail greater than the provided threshold. This has been corrected. Note that this bug had an impact on page performance as unnecessarily large images were loaded on the page. (#471)
- The `relativePath` computed by Jambo is now properly passed along to the Theme's cards. (#499)
@creotutar creotutar deleted the feature/custom-formatters branch March 10, 2021 12:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants