![Fluent Assertions Faces Backlash After Abandoning Open Source Licensing](https://cdn.sanity.io/images/cgdhsj6q/production/98cc622027c44eed628584f02cb3b6e79be011c7-1500x1500.webp?w=400&fit=max&auto=format)
Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
@shopify/theme-addresses
Advanced tools
A library that helps developers work with addresses within Shopify Themes
theme-addresses.js
helps localizing address forms.
Theme Scripts can be used in any theme project. To take advantage of semantic versioning and easy updates, we recommend using NPM or Yarn to include them in your project:
yarn add @shopify/theme-addresses
and then import the functions you wish to use through ES6 imports:
import {AddressForm} from '@shopify/theme-addresses`;
If you prefer not to use a package manager, you can download the latest version of Theme Addresses and include it in your project manually from the following links:
Theme Addresses uses two APIs not available to legacy browsers, Fetch and Promise. If you wish to support legacy browsers, make sure you add the following dependencies to your project:
yarn add unfetch es6-promise
and then import them before you import Theme Addresses:
// Only need to import these once
import 'unfetch/polyfill';
import 'es6-promise/auto';
// Import @shopify/theme-address anywhere you need it
import {AddressForm} from '@shopify/theme-addresses';
AddressForm(rootElement, locale, options)
Returns a Promise that will resolve when the loading is finished
// In addresses.js
import {AddressForm} from '@shopify/theme-addresses';
AddressForm(document.querySelector('[data-address=root]'), 'en');
Running AddressForm
will:
province
in Canada whereas they are called state
in the US.We expect every label
/ input
or label
/ select
to be wrapped by a div
and all div
be at the same level. See example below.
<form data-address="root">
<div>
<label for="AddressFirstName">{{ 'customer.addresses.first_name' | t }}</label>
<input type="text" id="AddressFirstName" name="address[first_name]" value="{{ form.first_name }}">
</div>
<div>
<label for="AddressLastName">{{ 'customer.addresses.last_name' | t }}</label>
<input type="text" id="AddressLastName" name="address[last_name]" value="{{ form.last_name }}">
</div>
<div>
<label for="AddressCompany">{{ 'customer.addresses.company' | t }}</label>
<input type="text" id="AddressCompany" name="address[company]" value="{{ form.company }}">
</div>
<div>
<label for="AddressAddress1">{{ 'customer.addresses.address1' | t }}</label>
<input type="text" id="AddressAddress1" name="address[address1]" value="{{ form.address1 }}">
</div>
<div>
<label for="AddressAddress2">{{ 'customer.addresses.address2' | t }}</label>
<input type="text" id="AddressAddress2" name="address[address2]" value="{{ form.address2 }}">
</div>
<div>
<label for="AddressCity">{{ 'customer.addresses.city' | t }}</label>
<input type="text" id="AddressCity" name="address[city]" value="{{ form.city }}">
</div>
<div>
<label for="AddressCountry">{{ 'customer.addresses.country' | t }}</label>
<select id="AddressCountry" name="address[country]" data-default="{{ form.country }}"></select>
</div>
<div>
<label for="AddressProvince">{{ 'customer.addresses.province' | t }}</label>
<select id="AddressProvince" name="address[province]" data-default="{{ form.province }}"></select>
</div>
<div>
<label for="AddressZip">{{ 'customer.addresses.zip' | t }}</label>
<input type="text" id="AddressZip" name="address[zip]" value="{{ form.zip }}" autocapitalize="characters">
</div>
<div>
<label for="AddressPhone">{{ 'customer.addresses.phone' | t }}</label>
<input type="tel" id="AddressPhone" name="address[phone]" value="{{ form.phone }}">
</div>
</form>
[data-address='root'] [data-aria-hidden='true'] {
display: none;
}
[data-address='root'] {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
}
[data-line-count='1'] {
flex-basis: 100%;
}
[data-line-count='2'] {
flex-basis: 49%;
}
[data-line-count='3'] {
flex-basis: 32%;
}
FAQs
A library that helps developers work with addresses within Shopify Themes
We found that @shopify/theme-addresses demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 20 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.