diff --git a/.eslintrc.json b/.eslintrc.json
index 83b09c60c24..50373dc6e95 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -10,7 +10,7 @@
"plugin:jsdoc/recommended",
"prettier"
],
- "ignorePatterns": ["dist", "docs", "www"],
+ "ignorePatterns": ["dist", "docs", "hydrate", "www"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig-eslint.json",
diff --git a/.github/ISSUE_TEMPLATE/accessibility.yml b/.github/ISSUE_TEMPLATE/accessibility.yml
index 137539851fa..ea9483d34eb 100644
--- a/.github/ISSUE_TEMPLATE/accessibility.yml
+++ b/.github/ISSUE_TEMPLATE/accessibility.yml
@@ -109,6 +109,7 @@ body:
- ArcGIS Map Viewer
- ArcGIS Marketplace
- ArcGIS Mission
+ - ArcGIS Monitor
- ArcGIS Network Analyst
- ArcGIS Online
- ArcGIS Scene Viewer
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 3f8a22cdfc2..5b5d6aaa3e1 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -103,6 +103,7 @@ body:
- ArcGIS Map Viewer
- ArcGIS Marketplace
- ArcGIS Mission
+ - ArcGIS Monitor
- ArcGIS Network Analyst
- ArcGIS Online
- ArcGIS Scene Viewer
diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml
index 50465591f73..10392fa43d6 100644
--- a/.github/ISSUE_TEMPLATE/enhancement.yml
+++ b/.github/ISSUE_TEMPLATE/enhancement.yml
@@ -70,6 +70,7 @@ body:
- ArcGIS Map Viewer
- ArcGIS Marketplace
- ArcGIS Mission
+ - ArcGIS Monitor
- ArcGIS Network Analyst
- ArcGIS Online
- ArcGIS Scene Viewer
diff --git a/.github/ISSUE_TEMPLATE/new-component.yml b/.github/ISSUE_TEMPLATE/new-component.yml
index cd3d230f9db..c579e10c33e 100644
--- a/.github/ISSUE_TEMPLATE/new-component.yml
+++ b/.github/ISSUE_TEMPLATE/new-component.yml
@@ -71,6 +71,7 @@ body:
- ArcGIS Map Viewer
- ArcGIS Marketplace
- ArcGIS Mission
+ - ArcGIS Monitor
- ArcGIS Network Analyst
- ArcGIS Online
- ArcGIS Scene Viewer
diff --git a/.github/workflows/add-esri-product-label.yml b/.github/workflows/add-esri-product-label.yml
index 53a4e236eba..f41f83ce83a 100644
--- a/.github/workflows/add-esri-product-label.yml
+++ b/.github/workflows/add-esri-product-label.yml
@@ -57,16 +57,23 @@ jobs:
}
/** remove any existing product label(s) */
- const labels = currentLabels
- .filter((l) => !/Issues logged by/.test(l.description))
- .map((l) => l.name);
+ const existingProductLabels = currentLabels
+ .filter((l) => /Issues logged by/.test(l.description) && l.name !== product)
+ .forEach(
+ async (l) =>
+ await github.rest.issues.removeLabel({
+ issue_number,
+ owner,
+ repo,
+ name: l.name,
+ })
+ );
- labels.push(product);
-
- await github.rest.issues.setLabels({
+ /** add new product label */
+ await github.rest.issues.addLabels({
issue_number,
owner,
repo,
- labels,
+ labels: [product],
});
}
diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml
index 0abfc47ec1b..84d5e14bf8a 100644
--- a/.github/workflows/chromatic.yml
+++ b/.github/workflows/chromatic.yml
@@ -50,6 +50,7 @@ jobs:
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
exitOnceUploaded: true
+ autoAcceptChanges: master
env:
STORYBOOK_SCREENSHOT_TEST_BUILD: true
CHROMATIC_DIFF_THRESHOLD: ${{ secrets.CHROMATIC_DIFF_THRESHOLD }}
diff --git a/.github/workflows/need-info-verify.yml b/.github/workflows/need-info-verify.yml
index 69cc667a7aa..9281efbe316 100644
--- a/.github/workflows/need-info-verify.yml
+++ b/.github/workflows/need-info-verify.yml
@@ -2,12 +2,10 @@ name: "Need Info - Verify"
on:
issues:
types: [labeled, edited]
- branches: [master]
issue_comment:
types: [created, edited]
- branches: [master]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- - uses: benelan/need-info-action@v1.3.1
+ - uses: benelan/need-info-action@v2.0.0
diff --git a/.github/workflows/pr-milestone.yml b/.github/workflows/pr-milestone.yml
index 1cfcd4384f0..e05fb2e1b2e 100644
--- a/.github/workflows/pr-milestone.yml
+++ b/.github/workflows/pr-milestone.yml
@@ -8,4 +8,4 @@ jobs:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- - uses: benelan/milestone-action@v1.3.1
+ - uses: benelan/milestone-action@v2.0.0
diff --git a/.github/workflows/pr-semantic.yml b/.github/workflows/pr-semantic.yml
index c3bd6cc16f2..91669c47b24 100644
--- a/.github/workflows/pr-semantic.yml
+++ b/.github/workflows/pr-semantic.yml
@@ -4,7 +4,7 @@ jobs:
semantic:
runs-on: ubuntu-latest
steps:
- - uses: amannn/action-semantic-pull-request@v3.4.6
+ - uses: amannn/action-semantic-pull-request@v5.0.2
with:
validateSingleCommit: true
env:
diff --git a/.lintstagedrc.json b/.lintstagedrc.json
index f41d8413e3a..eb83494a570 100644
--- a/.lintstagedrc.json
+++ b/.lintstagedrc.json
@@ -2,5 +2,5 @@
"*.{json,md,html,yml}": ["prettier --write"],
"*.js": ["eslint --ext .js --fix", "prettier --write"],
"*.scss": ["stylelint --fix", "prettier --write"],
- "*.{ts,tsx}": ["eslint --ext .ts,.tsx --fix", "prettier --write"]
+ "*/!(assets)/*.{ts,tsx}": ["eslint --ext .ts,.tsx --fix", "prettier --write"]
}
diff --git a/.storybook/helpers.ts b/.storybook/helpers.ts
index ec98187a49d..486869421c5 100644
--- a/.storybook/helpers.ts
+++ b/.storybook/helpers.ts
@@ -1,8 +1,8 @@
import * as icons from "@esri/calcite-ui-icons";
import { boolean as booleanKnob } from "@storybook/addon-knobs";
-import { THEMES } from "../src/utils/resources";
-import { ThemeName } from "../src/components/interfaces";
import { Parameters } from "@storybook/api";
+import { ModeName } from "../src/components/interfaces";
+import { MODES } from "../src/utils/resources";
// we can get all unique icon names from all size 16 non-filled icons.
export const iconNames = Object.keys(icons)
@@ -30,8 +30,8 @@ export const setKnobs = ({ story, knobs }: { story: string; knobs: { name: strin
.join("")}"`;
};
-export const setTheme = (value: ThemeName) => `${THEMES.map(
- (theme) => `document.body.classList.toggle('${theme.className}', ${(theme.name === value).toString()});`
+export const setMode = (value: ModeName) => `${MODES.map(
+ (mode) => `document.body.classList.toggle('${mode.className}', ${(mode.name === value).toString()});`
).join("")}
`;
diff --git a/.storybook/preview.ts b/.storybook/preview.ts
index f56065c5460..c6d94020c14 100644
--- a/.storybook/preview.ts
+++ b/.storybook/preview.ts
@@ -1,27 +1,27 @@
-import { themes, globalDocsPage, parseReadme } from "./utils";
+import { Theme as Mode } from "storybook-addon-themes/dist/models/Theme";
import { withDirection } from "storybook-rtl-addon";
-import { Theme } from "storybook-addon-themes/dist/models/Theme";
+import { globalDocsPage, modes, parseReadme } from "./utils";
declare global {
interface Window {}
}
-const themeBodyClassDecorator = (Story: () => any, context: any) => {
- const themes = context.parameters.themes;
+const modeBodyClassDecorator = (Story: () => any, context: any) => {
+ const modes = context.parameters.modes;
- themes?.list?.forEach((theme: Theme) => {
- const isDefault = theme.name === themes.default;
- if (Array.isArray(theme.class)) {
- theme.class.forEach((className) => document.body.classList.toggle(className, isDefault));
+ modes?.list?.forEach((mode: Mode) => {
+ const isDefault = mode.name === modes.default;
+ if (Array.isArray(mode.class)) {
+ mode.class.forEach((className) => document.body.classList.toggle(className, isDefault));
} else {
- theme.class && document.body.classList.toggle(theme.class, isDefault);
+ mode.class && document.body.classList.toggle(mode.class, isDefault);
}
});
return Story();
};
-export const decorators = [withDirection, themeBodyClassDecorator];
+export const decorators = [withDirection, modeBodyClassDecorator];
export const parameters = {
a11y: {
element: "#root",
@@ -29,7 +29,7 @@ export const parameters = {
options: {},
manual: false
},
- themes,
+ modes,
docs: {
extractComponentDescription: (_component, { notes }) => {
if (notes) {
diff --git a/.storybook/utils.tsx b/.storybook/utils.tsx
index fd1cd641788..c52442db313 100644
--- a/.storybook/utils.tsx
+++ b/.storybook/utils.tsx
@@ -18,7 +18,7 @@ import { CSS_UTILITY } from "../src/utils/resources";
import { colors } from "../node_modules/@esri/calcite-colors/dist/colors";
import { Description, DocsPage } from "@storybook/addon-docs";
-import { Theme } from "storybook-addon-themes/dist/models/Theme";
+import { Theme as Mode } from "storybook-addon-themes/dist/models/Theme";
import React from "react";
const autoValue = {
@@ -36,30 +36,30 @@ const darkValue = {
value: colors["blk-210"]
};
-const list: Theme[] = [
+const list: Mode[] = [
{
name: lightValue.name,
- class: CSS_UTILITY.lightTheme,
+ class: CSS_UTILITY.lightMode,
color: lightValue.value
},
{
name: darkValue.name,
- class: CSS_UTILITY.darkTheme,
+ class: CSS_UTILITY.darkMode,
color: darkValue.value
},
{
name: autoValue.name,
- class: CSS_UTILITY.autoTheme,
+ class: CSS_UTILITY.autoMode,
color: autoValue.value
}
];
-export const themes = {
+export const modes = {
default: lightValue.name,
list
};
-export const themesDarkDefault = {
+export const modesDarkDefault = {
default: darkValue.name,
list
};
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3a0da5996d9..679cf7a44bb 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -6,5 +6,9 @@
"editor.formatOnSave": true,
"editor.quickSuggestions": {
"strings": true
- }
+ },
+ "html.customData": [
+ "./dist/extras/vscode-data.json",
+ "./node_modules/@esri/calcite-components/dist/extras/vscode-data.json"
+ ]
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3d90818e282..fd20d5880cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,199 +9,260 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
### ⚠ BREAKING CHANGES
-- **modal:** Renamed `color` property and updated values.
+- **styles:** Use "mode" nomenclature instead of "theme"
-* Renamed the property `color`, use `kind` instead.
-* Updated the accepted values of `kind` to `brand`, `danger`, `info`,
- `success`, and `warning`.
+ - `.calcite-theme-auto`, `.calcite-theme-dark`, and
+ `.calcite-theme-light` CSS classes have been replaced with
+ `.calcite-mode-auto`, `.calcite-mode-dark`, and `.calcite-mode-light `
-* **tab-nav, tab-title:** Removed `event.detail` payload from events.
+- **modal, panel, popover**: Removed `focusId` parameter from `setFocus` methods.
+ When the `setFocus` method is called the first focusable element will be
+ focused.
-- TabNav
-- Removed the `event.detail` property on the event `calciteTabChange`,
- use `event.target` instead.
-- TabTitle
-- Removed the `event.detail` property on the event
- `calciteTabsActivate`, use `event.target` instead.
+- **panel, shell-panel, flow-item:** Update available css variables.
-* **tree:** Removed `event.detail` payload from events and added
- `selectedItems` property.
+ - Removes `heightScale` and `widthScale` properties from Panel and Flow
+ Item.
+ - Removes css variables for Panel - the component will now fill
+ available width of parent component.
+ - Documents public css variables for Shell Panel.
-- Added property `selectedItems`.
-- Removed the `event.detail` property on the event `calciteTreeSelect`,
- use `event.target` instead.
+- **accordion:**
-- **pagination:** Removed `event.detail` payload from events.
+ - Removed `"default"` value for the `appearance` property, use `"solid"`
+ instead.
+ - Removed `"minimal"` value for the `appearance` property.
- - Removed the `event.detail` property on the event
- `calcitePaginationChange`, use `event.target` instead.
+- **card:**
+
+ - Removed `footer-leading` and `footer-trailing` slots, use
+ `footer-start` and `footer-end` instead.
+
+* **color-picker:**
+
+ - Removed `appearance` property, use `--calcite-ui-border-1:transparent`
+ to remove the border instead of the `"minimal"` value
+
+- **combobox-item:**
+
+ - Removed `toggleSelected` method, use the `selected` property instead.
+
+- **date-picker:**
+
+ - Removed the property `startAsDate`, use `valueAsDate` instead.
+ - Removed the property `endAsDate`, use `valueAsDate` instead.
+
+* **input-time-picker:**
-- **dropdown:** Removed `event.detail` payload from events.
+ - Removed the event payload from `calciteInputTimePickerChange` event.
+* **modal:**
+
+ - The `width` property no longer accepts a custom width. Accepted values
+ are `s`, `m`, `l`.
+ - Adds `--calcite-modal-width` and `--calcite-modal-height` css
+ variables.
+
+- **pagination:**
+
+ - Removed the `--calcite-pagination-spacing` css variable
+
+- **popover:**
+
+ - Removed the `toggle` method, use the `open` property instead.
+
+- **radio-button-group:**
+
+ - Added property `selectedItem`.
- Removed the `event.detail` property on the event
- `calciteDropdownSelect`, use `event.target` instead.
+ `calciteRadioButtonGroupChange`, use `event.target` and the property
+ `selectedItem` instead.
+
+- **radio-group, radio-group-item:** Renames components.
+
+ - `calcite-radio-group` has been renamed to `calcite-segmented-control`.
+ - `calcite-radio-group-item` has been renamed to
+ `calcite-segmented-control-item`.
+
+- **segmented-control:**
+
+ - Updates `segmented-control` event to `calciteSegmentedControlChange`.
-- **rating:** Removed `event.detail` payload from events.
+- **stepper:**
+ - Added property `selectedItem`.
- Removed the `event.detail` property on the event
- `calciteRatingChange`, use `event.target` instead.
+ `calciteStepperItemChange`, use `event.target` and the property
+ `selectedItem` instead.
-- **inline-editable,input,input-text,input-number:** Removed deprecated `intl\*` & accessible label properties.
+* **tip:**
-- **inline-editable:**
+ - Rename `dismissed` prop to `closed.
- - Removed the property` intlEnableEditing`, use `messsageOverrides.enableEditing` instead.
- - Removed the property `intlCancelEditing`, use `messageOverrides.cancelEditing` instead.
- - Removed the property `intlConfirmChanges`, use `messageOverrides.confirmChanges` instead.
+### Features
-- **input-number:**
+- **modal:** Updates accepted `width` values, adds css variables for width and height ([#6166](https://github.com/Esri/calcite-components/issues/6166)) ([de11401](https://github.com/Esri/calcite-components/commit/de11401acf69cc7c3c0ef3362975af3c5365b618))
- - Removed the property `intlClear`, use `messsageOverrides.clear` instead.
- - Removed the property `intlLoading`, use `messsageOverrides.loading` instead.
+* **date-picker:** Update border color ([#6273](https://github.com/Esri/calcite-components/issues/6273)) ([1bdb9c1](https://github.com/Esri/calcite-components/commit/1bdb9c11b52a2f5de06d963def7d2e469343ea07))
-- **input-text:**
+- **panel:** Allow Panel to fill height of parent ([#6256](https://github.com/Esri/calcite-components/issues/6256)) ([f556efc](https://github.com/Esri/calcite-components/commit/f556efc8ee8c02da7fb73208bc8fde0f28ef88d3))
- - Removed the property `intlClear`, use `messsageOverrides.clear` instead.
- - Removed the property `intlLoading`, use `messsageOverrides.loading` instead.
+- **tab-nav:** Add `selectedTitle` property ([#6149](https://github.com/Esri/calcite-components/issues/6149)) ([e48096c](https://github.com/Esri/calcite-components/commit/e48096cf361d0efb292849e10040f6f0e61f8bbc))
-- **input:**
+- **popover, modal:** Add the ability to update focus trap elements after initialization ([#6141](https://github.com/Esri/calcite-components/issues/6141)) ([806ca32](https://github.com/Esri/calcite-components/commit/806ca32788d2960df97ad18efcb731633f133fcb))
- - Removed the property `intlClear`, use `messsageOverrides.clear` instead.
- - Removed the property `intlLoading`, use `messsageOverrides.loading` instead.
+### Bug Fixes
-- **scrim,rating,time-picker,input-time-picker,value-list:** Removed deprecated `intl\*` & accessible label properties.
+- **date-picker:** end-range is now rounded and has the correct box-shadow ([#6216](https://github.com/Esri/calcite-components/issues/6216)) ([ed30588](https://github.com/Esri/calcite-components/commit/ed305889912dbc6643e2d956956b8539581e6c6f)), closes [#5544](https://github.com/Esri/calcite-components/issues/5544)
-- **rating:**
+* **date-picker:** range value property updates correctly ([#6289](https://github.com/Esri/calcite-components/issues/6289)) ([7ff1c7d](https://github.com/Esri/calcite-components/commit/7ff1c7d88d7075416556cc6a53957750f96d618a))
- - Removed the property `intlStars` , use `messsageOverrides.stars` instead.
- - Removed the property `intlRating` , use `messsageOverrides.rating` instead.
+- **dropdown-item:** bumping the scale of icon to M when parent dropdown is scale L ([#6254](https://github.com/Esri/calcite-components/issues/6254)) ([8957e8d](https://github.com/Esri/calcite-components/commit/8957e8d3aa22862ef4c1535d4928dc0ace965d9d)), closes [#5698](https://github.com/Esri/calcite-components/issues/5698)
-- **scrim:**
+* **tab, tabs, tab-title, input, input-number, input-text, input-date-picker, input-time-picker:** bumping the scale of icon to M when parent is scale L ([#6267](https://github.com/Esri/calcite-components/issues/6267)) ([e8edf6b](https://github.com/Esri/calcite-components/commit/e8edf6b666a585330b2b7c00a7dfde8449bc54f8)), closes [#5698](https://github.com/Esri/calcite-components/issues/5698)
- - Removed the property `intlLoading` , use `messsageOverrides.loading` instead.
+- **accordion-item:** bumping the scale of icon to M when parent accordion is scale L ([#6252](https://github.com/Esri/calcite-components/issues/6252)) ([a6bb7da](https://github.com/Esri/calcite-components/commit/a6bb7da936014b0f5514dea8951ff6cde0d7a604)), closes [#5698](https://github.com/Esri/calcite-components/issues/5698)
-- **time-picker:**
+* **combobox-item:** bumping the scale of icon to M when parent combobox is scale L ([#6253](https://github.com/Esri/calcite-components/issues/6253)) ([051cb3f](https://github.com/Esri/calcite-components/commit/051cb3f498b2f43339aa2d973dcd257098d84fd6)), closes [#5698](https://github.com/Esri/calcite-components/issues/5698)
- - Removed the property `intlHour`, use `messsageOverrides.hour` instead.
- - Removed the property `intlHourDown`, use `messsageOverrides.hourDown` instead.
- - Removed the property `intlHourUp`, use `messsageOverrides.hourUp` instead.
- - Removed the property `intlMeridiem`, use `messsageOverrides.meridiem` instead.
- - Removed the property `intlMeridiemDown`, use `messsageOverrides.meridiemDown` instead.
- - Removed the property `intlMeridiemUp`, use `messsageOverrides.meridiemUp` instead.
- - Removed the property `intlMinute`, use `messsageOverrides.minute` instead.
- - Removed the property `intlMinuteUp`, use `messsageOverrides.minuteUp` instead.
- - Removed the property `intlMinuteDown`, use `messsageOverrides.minuteDown` instead.
- - Removed the property `intlSecond`, use `messsageOverrides.second` instead.
- - Removed the property `intlSecondUp`, use `messsageOverrides.secondUp` instead.
- - Removed the property `intlSecondDown`, use `messsageOverrides.secondDown` instead.
+* **button:** neutral and outline button now has correct border color ([#6269](https://github.com/Esri/calcite-components/issues/6269)) ([24e6d32](https://github.com/Esri/calcite-components/commit/24e6d3268855bd5f00f04b5c52bc62c8cb6724e0)), closes [#5331](https://github.com/Esri/calcite-components/issues/5331)
-- **input-time-picker:**
+* **input, input-number, input-text:** allow slotted action to be independently disabled ([#6250](https://github.com/Esri/calcite-components/issues/6250)) ([8197c18](https://github.com/Esri/calcite-components/commit/8197c185c1fb23ebc5e7b0ff3bb6594c445d8736)), closes [#6241](https://github.com/Esri/calcite-components/issues/6241)
- - Removed the property `intlHour`, use `messsageOverrides.hour` instead.
- - Removed the property `intlHourDown`, use `messsageOverrides.hourDown` instead.
- - Removed the property `intlHourUp`, use `messsageOverrides.hourUp` instead.
- - Removed the property `intlMeridiem`, use `messsageOverrides.meridiem` instead.
- - Removed the property `intlMeridiemDown`, use`messsageOverrides.meridiemDown` instead.
- - Removed the property `intlMeridiemUp`, use `messsageOverrides.meridiemUp` instead.
- - Removed the property `intlMinute`, use `messsageOverrides.minute` instead.
- - Removed the property `intlMinuteUp`, use `messsageOverrides.minuteUp` instead.
- - Removed the property `intlMinuteDown`, use `messsageOverrides.minuteDown` instead.
- - Removed the property `intlSecond`, use `messsageOverrides.second` instead.
- - Removed the property `intlSecondUp`, use `messsageOverrides.secondUp` instead.
- - Removed the property `intlSecondDown`, use `messsageOverrides.secondDown` instead.
+* **input, input-number:** nudge buttons increment/decrement once per interaction ([#6240](https://github.com/Esri/calcite-components/issues/6240)) ([fd10ac5](https://github.com/Esri/calcite-components/commit/fd10ac5976e00c30b9acbbe9ea19b2ab284eac6d)), closes [#5785](https://github.com/Esri/calcite-components/issues/5785)
-- **value-list:**
+* **tree-item:** overflow slotted elements are no longer hidden ([#5261](https://github.com/Esri/calcite-components/issues/5261)) ([4aa1f7e](https://github.com/Esri/calcite-components/commit/4aa1f7eaa437f7bf25c5bbced8559b41944e32fb)), closes [#5168](https://github.com/Esri/calcite-components/issues/5168)
- - Removed the property `intlDragHandleActive`, use `messsageOverrides.dragHandleActive` instead.
- - Removed the property `intlDragHandleChange`, use `messsageOverrides.dragHandleChange` instead.
- - Removed the property `intlDragHandleCommit`, use `messsageOverrides.dragHandleCommit` instead.
- - Removed the property `intlDragHandleIdle`, use `messsageOverrides.dragHandleIdle` instead.
+* **list-item:** use pointer cursor when selection mode is none ([#6213](https://github.com/Esri/calcite-components/issues/6213)) ([6b43b91](https://github.com/Esri/calcite-components/commit/6b43b916a1ee3908635ab0b682d7a2d209545b22)), closes [#6123](https://github.com/Esri/calcite-components/issues/6123)
-- **chip,card,combobox,date-picker,flow,flow-item,filter, input-date-picker:** Removed deprecated `intl\*` & accessible label properties.
+* **alert:** Correctly dismiss after hovering ([#6228](https://github.com/Esri/calcite-components/issues/6228)) ([66dd692](https://github.com/Esri/calcite-components/commit/66dd692d6030b2e6957603101a78f728ff31c6e2)), closes [#6222](https://github.com/Esri/calcite-components/issues/6222)
-- **card**:
+* **input, input-number:** increment/decrement to the min/max when value is below/above ([#6207](https://github.com/Esri/calcite-components/issues/6207)) ([d9eb215](https://github.com/Esri/calcite-components/commit/d9eb215f423f68dfa67d9a69b38d7328a8580b86)), closes [#6201](https://github.com/Esri/calcite-components/issues/6201)
- - Removed the property `intlLoading` , use `messsageOverrides.loading`
- instead.
- - Removed the property `intlSelect` use `messageOverrides.select`
- instead.
- - Removed the property `intlDeselect` use `messageOverrides.deselect`
- instead.
+* **modal:** close button does not change header height ([#6205](https://github.com/Esri/calcite-components/issues/6205)) ([f1d73a8](https://github.com/Esri/calcite-components/commit/f1d73a8c92678f3429fe2ac7215a15cf45c87692)), closes [#1707](https://github.com/Esri/calcite-components/issues/1707) [#5210](https://github.com/Esri/calcite-components/issues/5210)
-- **chip**:
+* **input-date-picker:** update input value when changing locale ([#6197](https://github.com/Esri/calcite-components/issues/6197)) ([65478be](https://github.com/Esri/calcite-components/commit/65478be957a20cc4bbc36d52c166c132467e57e4)), closes [#5886](https://github.com/Esri/calcite-components/issues/5886) [#5969](https://github.com/Esri/calcite-components/issues/5969)
- - Removed the property `dismissLabel` , use
- `messsageOverrides.dismissLabel ` instead.
+* **date-picker:** modify weekStart value for ar locale ([#6154](https://github.com/Esri/calcite-components/issues/6154)) ([f9fe230](https://github.com/Esri/calcite-components/commit/f9fe230ba07d4c581993efacff04303700c07106))
-- **color-picker:**
+* **time-picker:** high contrast visibility of outlines in focus and hover states ([#6129](https://github.com/Esri/calcite-components/issues/6129)) ([90ddff1](https://github.com/Esri/calcite-components/commit/90ddff10b712758bd4c60b8279b45e4c9997748d))
- - Removed the property `intlB` , use `messsageOverrides.b` instead.
- - Removed the property `intlBlue` , use `messsageOverrides.blue`
- instead.
- - Removed the property `intlDeleteColor` , use
- `messsageOverrides.deleteColor` instead.
- - Removed the property `intlG` , use `messsageOverrides.g` instead.
- - Removed the property `intlGreen` , use `messsageOverrides.green`
- instead.
- - Removed the property `intlH` , use `messsageOverrides.h` instead.
- - Removed the property `intlHsv` , use `messsageOverrides.hsv` instead.
- - Removed the property `intlHex` , use `messsageOverrides.hex` instead.
- - Removed the property `intlHue` , use `messsageOverrides.hue` instead.
- - Removed the property `intlNoColor` , use `messsageOverrides.noColor`
- instead.
- - Removed the property `intlR` , use `messsageOverrides.r` instead.
- - Removed the property `intlRed` , use `messsageOverrides.red` instead.
- - Removed the property `intlRgb` , use `messsageOverrides.rgb` instead.
- - Removed the property `intlS` , use `messsageOverrides.s` instead.
- - Removed the property `intlSaturation` , use
- `messsageOverrides.saturation` instead.
- - Removed the property `intlSaveColor` , use
- `messsageOverrides.saveColor` instead.
- - Removed the property `intlSaved` , use `messsageOverrides.saved`
- instead.
- - Removed the property `intlV` , use `messsageOverrides.v` instead.
- - Removed the property `intlValue` , use `messsageOverrides.value`
- instead.
+* **tooltip:** Fix hover logic for elements within shadowRoot. ([#6119](https://github.com/Esri/calcite-components/issues/6119)) ([f490e5e](https://github.com/Esri/calcite-components/commit/f490e5ee0a4ae75f0e3b727f4ce0f7925bc8e53c))
-- **combobox:**
+
- - Removed the property `intlRemoveTag` , use
- `messsageOverrides.removeTag` instead.
+## [1.0.0-beta.99](https://github.com/Esri/calcite-components/compare/v1.0.0-beta.98...1.0.0-beta.99) (2022-12-19)
-- **date-picker:**
+### ⚠ BREAKING CHANGES
- - Removed the property `intlNextMonth`, use `messageOverrides.nextMonth`
- instead.
- - Removed the property `intlPrevMonth`, use `messageOverrides.prevMonth`
+- **accordion, combobox, dropdown, list, tree:** Removes `multi` value of `selection-mode`.
+
+ - Removed the `multi` value for `selection-mode` property, use `multiple`
instead.
- - Removed the property `intlYear`, use `messageOverrides.year` instead.
-- **flow-item:**
+- **action,action-bar,action-group,action-pad,alert,block-section,block,button:** Removed deprecated `intl*` properties , use
+ `messageOverrides` property instead.
- - Removed the property `intlBack` , use `messsageOverrides.back`
- instead.
- - Removed the property `intlClose`, use `messageOverrides.close`
- instead.
- - Removed the property `intlOptions` , use `messsageOverrides.options`
- instead.
+- **action-bar, action-pad:** Removed `focusId` paramter `setFocus`
+ method, focus is delegated to the first focusable element.
-- **filter:**
+- **alert, notice:** Renamed `color` properties and updated values.
- - Removed the property `intlClear`, use `messsageOverrides.clear`
- instead.
- - Removed the property `intlLabel`, use `messageOverrides.label`
+ - Renamed the property `color`, use `kind` instead.
+ - Updated the accepted values of `kind` to `brand`, `danger`, `info`,
+ `success`, and `warning`.
+
+- **block, date-picker, list-item-group, panel, pick-list-group, popover, tip, tip-manager:** Sets internal heading HTML element to be a div by default. If users would like to retain an internal H1-H6 HTML element, they will need to set the headingLevel property on the component. Users already setting the headingLevel property are not affected. ([#5728](https://github.com/Esri/calcite-components/pull/5728)) ([38ca639](https://github.com/Esri/calcite-components/commit/38ca639010b8bd1d1fe32c9cf9b54dfc38cf9877)), closes [5099](https://github.com/Esri/calcite-components/issues/5099)
+
+- **button, fab, split-button:** Removed deprecated properties and values.
+
+ - `button`: Removed the property `form`, this property is no longer
+ needed if the component is placed inside a form.
+ - `button`, `fab`, `split-button`: Renamed the property `color`, use
+ `kind` instead.
+ - `button`, `fab`, `split-button`: Updated the accepted values of `kind`
+ to `brand` (default), `danger`, `inverse`, and `neutral`.
+ - `button`, `split-button`: Updated the accepted values of `appearance`
+ to `outline`, `outline-fill` and `solid` (default).
+ - `fab`: Updated the accepted values of `appearance` to `outline-fill`
+ and `solid` (default).
+
+- **chip,card,combobox,date-picker,flow,flow-item,filter, input-date-picker:** Removed deprecated `intl\*` & accessible label properties.
+
+- **chip,combobox-item:** Removed deprecated event payload.
+
+ - Removed the `event.detail` property on the event `calciteChipDismiss`,
+ use `event.target` instead.
+ - Removed the `event.detail` property on the event
+ `calciteComboboxChipDismiss`, use `event.target` instead.
+
+- **dropdown, dropdown-item:** Removed deprecated properties.
+
+ - Removed the property `active` on `calcite-dropdown-item`, use
+ `selected` instead.
+ - Removed the property `active`, on `calcite-dropdown`, use `open`
instead.
-- **input-date-picker:**
+- **flow, flow-item:** Removed the `calciteFlowItemBackClick` event and
+ support for slotting `calcite-panel`s.
- - Removed the property `intlNextMonth`, use `messageOverrides.nextMonth`
+ - Removed support for slotting `calcite-panel` components, use the
+ `calcite-flow-item` component instead.
+ - Removed the event `calciteFlowItemBackClick`, use
+ `calciteFlowItemBack` instead.
+
+- **inline-editable,input,input-text,input-number:** Removed deprecated `intl\*` & accessible label properties.
+
+- **list, list-item, list-item-group:** To know when `calcite-list-item` content is selected, listen to the event `calciteListItemSelect` instead of `click`.
+
+ - `headingLevel` property on the `list` and `list-item-group` are no
+ longer necessary.
+ - `nonInteractive` property on the `list-item` is no longer necessary.
+
+ - **list:**
+
+ - Adds `label` property to specify an accessible name for the component.
+ - Adds `loading` property to show a busy indicator.
+ - Adds `selectionMode` and `selectionAppearance` properties to handle configuration of selection.
+ - Adds `filterEnabled`, `filteredData`, `filteredItems`, `filterText`, and `filterPlaceholder` properties to support filtering.
+ - Adds `calciteListFilter` event to notify when a filter has changed.
+ - Deprecates `headingLevel` property.
+
+ - **list-item-group:**
+
+ - Adds `disabled` property to prevent user interaction.
+ - Deprecates `headingLevel` property.
+
+ - **list-item:**
+ - Adds `calciteListItemSelect` event to notify when list item content is selected.
+ - Adds `selected` and `value` properties to handle selection.
+ - Adds `open` property to show child components.
+ - Deprecates `nonInteractive` property.
+
+- **loader, input-message:** use hidden native global attribute to toggle visibility on the components instead of the deprecated active prop.
+
+- **popover, dropdown, modal, pick-list-item, popover, value-list-item:** Renamed `disable*` properties.
+
+- **scrim,rating,time-picker,input-time-picker,value-list:** Removed deprecated `intl\*` & accessible label properties.
+
+- **tabs, tab-nav, tab-title, tab:**
+
+ - Removed the property `active` from `calcite-tab-title`, use `selected`
instead.
- - Removed the property `intlPrevMonth`, use `messageOverrides.prevMonth`
+ - Removed the property `active` from `calcite-tab`, use `selected`
instead.
- - Removed the property `intlYear`, use `messageOverrides.year` instead.
+ - Removed the `above` value from the `position` property on
+ `calcite-tabs`, use `top` instead.
+ - Removed the `below` value from the `position` property on
+ `calcite-tabs`, use `bottom` instead.
-- **action,action-bar,action-group,action-pad,alert,block-section,block,button:** Removed deprecated `intl*` properties , use
- `messageOverrides` property instead.
+- **accordion-item:** Removed the properties `active`, `itemTitle`,
+ `itemSubtitle`, and `icon`.
+
+ - Removed the property `active`, use `expanded` instead.
+ - Removed the property `itemTitle`, use `heading` instead.
+ - Removed the property `itemSubtitle`, use `description` instead.
+ - Removed the property `icon`, use `iconStart` or `iconEnd` instead.
- **action:**
@@ -209,6 +270,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
instead.
- Removed the property `intlIndicator`, use `messageOverrides.indicator`
instead.
+ - Removed the `calciteActionClick` event and the `clear`
+ value for the `appearance` property. Listen to the `click` event instead of `calciteActionClick.
+ - Use the value `transparent` instead of `clear` for the property
+ `appearance`.
- **action-bar:**
@@ -222,6 +287,15 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Removed the property `intlMore` , use `messsageOverrides.more`
instead.
+- **action-menu:**
+
+ - Removed the event `calciteActionMenuOpenChange`, use
+ `calciteActionMenuOpen` instead.
+ - Removed the `event.detail` value from the
+ `calciteActionMenuOpenChange` event on the `action-menu` component.
+ - When listening to `calciteActionMenuOpenChange`, use the `open`
+ property on the `event.target` instead of `event.detail`.
+
- **action-pad**:
- Removed the property `intlExpand` , use `messsageOverrides.expand`
@@ -233,6 +307,14 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Removed the property `intlClose`, use `messageOverrides.close`
instead.
+ - Renamed the property `autoDismiss`, use `autoClose` instead.
+ - Renamed the property `autoDismissDuration`, use `autoCloseDuration`
+ instead.
+ - Removed the property `active`, use `open` instead.
+ - Removed the `*-leading` and `*-trailing` values for
+ component `placement` properties.
+ - There is no need for "_-leading" and "_-trailing" values anymore since
+ `*-start` and `*-end` are already flipped in right-to-left direction.
- **block**:
@@ -244,6 +326,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
instead.
- Removed the property `intlOptions`, use `messageOverrides.options`
instead.
+ - Removed the property `summary`, use `description` instead.
+ - Removed the property `disablePadding`, use the CSS variable
+ `--calcite-block-padding` instead.
- **block-section:**
@@ -257,126 +342,79 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Removed the property `intlLoading` , use `messsageOverrides.loading`
instead.
-- **popover, dropdown, modal, pick-list-item, value-list-item:** Renamed `disable*` properties.
-
-- **dropdown:**
-
- - Renamed the property `disableCloseOnSelect`, use
- `closeOnSelectDisabled` instead.
-
-- **modal:**
+- **card**:
- - Renamed the property `disableCloseButton`, use `closeButtonDisabled`
+ - Removed the property `intlLoading` , use `messsageOverrides.loading`
instead.
- - Renamed the property `disableFocusTrap`, use `focusTrapDisabled`
+ - Removed the property `intlSelect` use `messageOverrides.select`
instead.
- - Renamed the property `disableOutsideClose`, use `outsideCloseDisabled`
+ - Removed the property `intlDeselect` use `messageOverrides.deselect`
instead.
- - Renamed the property `disableEscape`, use `escapeDisabled` instead.
-- **pick-list-item:**
+- **chip:**
- - Renamed the property `disableDeselect`, use `deselectDisabled`
+ - Renamed the property `color`, use `kind` instead.
+ - Updated the accepted values of `kind` to `brand`, `inverse`, and
+ `neutral` (default).
+ - Updated the accepted values of `appearance` to , `outline`,
+ `outline-fill` and `solid` (default).
+ - Removed the property `dismissLabel` , use
+ `messsageOverrides.dismissLabel ` instead.
+ - Renamed the event `calciteChipDismiss`, use `calciteChipClose`
instead.
+ - Removed the property `dismissible`, use `closable` instead.
+ - Use the value `transparent` instead of `clear` for `appearance`
+ property.
-- **popover:**
-
- - Renamed the property `disableFlip`, use `flipDisabled` instead.
- - Renamed the property `disableFocusTrap`, use `focusTrapDisabled`
- instead.
- - Renamed the property `disablePointer`, use `pointerDisabled` instead.
+- **color-picker-hex-input:**
-- **value-list-item:**
+ - Removed, `intlHex` property, aria-label of color-picker-hex-input is
+ set to `hex` by default.
+ - Removed ,`intlNoColor` property.
- - Renamed the property `disableDeselect`, use `deselectDisabled`
- instead.
+ _note: color-picker-hex-input is `internal` component._
-- **input-date-picker:** Removed the `calciteDatePickerChange` event, use
- `calciteInputDatePickerChange` instead.
+- **color-picker:**
-- **date-picker:** Removed the `start` and `end` properties, set `value`
- as an array with the start as the first value and the end as the second
- value instead.
+ - Removed the property `intlB` , use `messsageOverrides.b` instead.
+ - Removed the property `intlBlue` , use `messsageOverrides.blue`
+ instead.
+ - Removed the property `intlDeleteColor` , use
+ `messsageOverrides.deleteColor` instead.
+ - Removed the property `intlG` , use `messsageOverrides.g` instead.
+ - Removed the property `intlGreen` , use `messsageOverrides.green`
+ instead.
+ - Removed the property `intlH` , use `messsageOverrides.h` instead.
+ - Removed the property `intlHsv` , use `messsageOverrides.hsv` instead.
+ - Removed the property `intlHex` , use `messsageOverrides.hex` instead.
+ - Removed the property `intlHue` , use `messsageOverrides.hue` instead.
+ - Removed the property `intlNoColor` , use `messsageOverrides.noColor`
+ instead.
+ - Removed the property `intlR` , use `messsageOverrides.r` instead.
+ - Removed the property `intlRed` , use `messsageOverrides.red` instead.
+ - Removed the property `intlRgb` , use `messsageOverrides.rgb` instead.
+ - Removed the property `intlS` , use `messsageOverrides.s` instead.
+ - Removed the property `intlSaturation` , use
+ `messsageOverrides.saturation` instead.
+ - Removed the property `intlSaveColor` , use
+ `messsageOverrides.saveColor` instead.
+ - Removed the property `intlSaved` , use `messsageOverrides.saved`
+ instead.
+ - Removed the property `intlV` , use `messsageOverrides.v` instead.
+ - Removed the property `intlValue` , use `messsageOverrides.value`
+ instead.
-- **combobox:** Renamed event.
+- **combobox:**
+ - Removed the property `intlRemoveTag` , use
+ `messsageOverrides.removeTag` instead.
- Renamed the event `calciteComboboxChipDismiss`, use
`calciteComboboxChipClose` instead.
-
-- **alert:** Renamed properties.
-
- - Renamed the property `autoDismiss`, use `autoClose` instead.
- - Renamed the property `autoDismissDuration`, use `autoCloseDuration`
- instead.
-
-- **combobox:** Removed `event.detail` payload from events and added
- properties `selectedItems` and `filteredItems`.
-
- Removed the `event.detail` property on the event
`calciteComboboxChange`, use `event.target.selectedItems` instead.
- Removed the `event.detail` property on the event
`calciteComboboxFilterChange`, use `event.target.filteredItems` or
`event.target.value` instead.
-
-- **chip:** Renamed event.
-
- - Renamed the event `calciteChipDismiss`, use `calciteChipClose`
- instead.
-
-- **tip:** Renamed property.
-
- - Renamed the property `nonDismissible`, use `closeDisabled` instead.
-
-- **date-picker:** Removed `event.detail` payload from events.
-
- - Removed the `event.detail` property on the event
- `calciteDatePickerChange`, use `event.target` instead.
- - Removed the `event.detail` property on the event
- `calciteDatePickerRangeChange`, use `event.target` instead.
-
-- **modal:** Removed deprecated properties and method.
-
- - Removed the property `active`, use `open` instead.
- - Removed the property noPadding, use `--calcite-modal-padding` CSS
- property instead.
- - Removed the method `focusElement`, use `setFocus` method instead.
- - Removed the CSS property ` --calcite-modal-content-text`.
- - Removed the CSS property `--calcite-modal-padding-large`.
- - Removed the CSS property `--calcite-modal-title-text`.
-
-- **pagination:** Removed deprecated event.
-
- - Removed the event `calcitePaginationUpdate` event, use
- `calcitePaginationChange` event instead.
-
-- **loader:** Removed deprecated properties.
-
- - Removed the property `active`, use global attribute `hidden` instead.
- - Removed the property `noPadding`, use `--calcite-loader-padding` CSS
- property instead.
-
-- **label:** The default display for label is now `flex` instead of
- `inline`.
-
- - Use `--calcite-label-margin-bottom` CSS variable to disable space when
- in `layout` is `inline`.
-
-- **tabs:** Removed slot.
-
- - Removed the slot `tab-nav`, use `title-group` instead.
-
-- **dropdown:** Removed slot.
-
- - Removed the slot `dropdown-trigger`, use `trigger` instead.
-
-- **action-menu:** Removed event.
-
- - Removed the event `calciteActionMenuOpenChange`, use
- `calciteActionMenuOpen` instead.
-
-- **combobox:** Removed deprecated properties, events, and event
- payload.
-
- Removed the property `active`, use `open` instead.
- Removed the event`calciteLookupChange`, use `calciteComboboxChange`
event instead.
@@ -388,74 +426,137 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Removed the property `constant`, use `filterDisable` instead.
-- **action-menu:** Removed event.
+- **date-picker:**
- - Removed the event `calciteActionMenuOpenChange`, use
- `calciteActionMenuOpen` instead.
+ - Removed `endAsDate` and `startAsDate` properties, use `valueAsDate`
+ instead.
+ - Removed the property `intlNextMonth`, use `messageOverrides.nextMonth`
+ instead.
+ - Removed the property `intlPrevMonth`, use `messageOverrides.prevMonth`
+ instead.
+ - Removed the property `intlYear`, use `messageOverrides.year` instead.
+ - Removed the `start` and `end` properties, set `value`
+ as an array with the start as the first value and the end as the second
+ value instead.
+ - Removed the `event.detail` property on the event
+ `calciteDatePickerChange`, use `event.target` instead.
+ - Removed the `event.detail` property on the event
+ `calciteDatePickerRangeChange`, use `event.target` instead.
+ - Removed the `locale` property, use `lang` instead.
-- **input-message:** removed deprecated properties
+- **date-picker-month, date-picker-month-header:**
- - Removed `active` property, use the global `hidden` attribute instead.
- - Removed `type` property, "floating" is no longer supported.
+ - Removed the event `calciteDatePickerSelect` on
+ `CalciteDatePickerMonthHeader`
+ - Removed the event `calciteDatePickerSelect` on
+ `CalciteDatePickerMonth`
+ - Removed the event `calciteDatePickerActiveDateChange` on
+ `CalciteDatePickerMonth`
-- **input-text:** remove deprecated event payload
+- **dropdown:**
- - Removed `calciteInputTextInput` event payload, use the event's
- `target`/`currentTarget` instead.
+ - Removed the `event.detail` property on the event
+ `calciteDropdownSelect`, use `event.target` instead. To get the selected `dropdown-item`, use the `calciteDropdownItemSelect` event.
+ - Renamed the property `disableCloseOnSelect`, use
+ `closeOnSelectDisabled` instead.
+ - Removed the slot `dropdown-trigger`, use `trigger` instead.
-- **date-picker:** Removed deprecated properties
+- **filter:**
- - Removed the `locale` property, use `lang` instead.
+ - Removed the property `intlClear`, use `messsageOverrides.clear`
+ instead.
+ - Removed the property `intlLabel`, use `messageOverrides.label`
+ instead.
-- **input-date-picker:** Removed deprecated properties
+- **flow-item:**
- - Removed the `active` property, use `open` instead.
- - Removed the `locale` property, use `lang` instead.
+ - Removed the property `intlBack` , use `messsageOverrides.back`
+ instead.
+ - Removed the property `intlClose`, use `messageOverrides.close`
+ instead.
+ - Removed the property `intlOptions` , use `messsageOverrides.options`
+ instead.
-- **input-time-picker:** Removed deprecated property
+- **handle:**
- - Removed the `active` property, use `open` instead.
+ - Removed the `event.detail.handle` property on the event `calciteHandleNudge`, use `event.target` instead.
-- **time-picker:** Removed deprecated property
+- **inline-editable:**
- Removed the `locale` property, use `lang` instead.
+ - Removed the property` intlEnableEditing`, use `messsageOverrides.enableEditing` instead.
+ - Removed the property `intlCancelEditing`, use `messageOverrides.cancelEditing` instead.
+ - Removed the property `intlConfirmChanges`, use `messageOverrides.confirmChanges` instead.
-- **input:** remove deprecated properties and event payload.
+- **input:**
+ - Removed the `nativeEvent` payload property which was being used
+ internally.
+ - Removed the property `intlClear`, use `messsageOverrides.clear` instead.
+ - Removed the property `intlLoading`, use `messsageOverrides.loading` instead.
- Removed `maxlength` property, use `maxLength` instead.
- Removed `locale` property, use `lang` instead.
- Removed `calciteInputInput`'s `el`/`value` event payload properties, use the event's `target`/`currentTarget` instead.
-- **handle:** Removed deprecated event payload property on `calciteHandleNudge`.
-
- - Removed the `event.detail.handle` property on the event `calciteHandleNudge`, use `event.target` instead.
-
-- **tabs, tab-nav, tab-title, tab:** Removed deprecated properties and values.
+- **input-date-picker:**
- - Removed the property `active` from `calcite-tab-title`, use `selected`
+ - Removed `calciteDatePickerRangeChange` event, use
+ `calciteInputDatePickerChange` instead.
+ - Removed the property `start`, use `value` instead.
+ - Removed the property `end`, use `value` instead.
+ - Removed the property `startAsDate`, use `valueAsDate` instead.
+ - Removed the property `endAsDate`, use `valueAsDate` instead.
+ - Removed the property `intlNextMonth`, use `messageOverrides.nextMonth`
instead.
- - Removed the property `active` from `calcite-tab`, use `selected`
+ - Removed the property `intlPrevMonth`, use `messageOverrides.prevMonth`
instead.
- - Removed the `above` value from the `position` property on
- `calcite-tabs`, use `top` instead.
- - Removed the `below` value from the `position` property on
- `calcite-tabs`, use `bottom` instead.
+ - Removed the property `intlYear`, use `messageOverrides.year` instead.
+ - Removed the `calciteDatePickerChange` event, use
+ `calciteInputDatePickerChange` instead.
+ - Removed the `active` property, use `open` instead.
+ - Removed the `locale` property, use `lang` instead.
-- **switch:** Removed deprecated `switched` property and
- `calciteSwitchChange` event payload.
+- **input-message:**
- - Removed the property `switched`, use `checked` instead.
- - Removed the `event.detail` from `calciteSwitchChange`, use
- `event.target.checked` instead.
+ - Removed `active` property, use the global `hidden` attribute instead.
+ - Removed `type` property, "floating" is no longer supported.
-- **input-number:** remove deprecated property and event payload
+- **input-number:**
+ - Removed the property `intlClear`, use `messsageOverrides.clear` instead.
+ - Removed the property `intlLoading`, use `messsageOverrides.loading` instead.
- Removed `locale` property, use `lang` instead.
- Removed `calciteInputNumberInput` event payload properties, use the
event's `target`/`currentTarget` instead.
-- **label:** Removed deprecated properties.
+- **input-text:**
+
+ - Removed the property `intlClear`, use `messsageOverrides.clear` instead.
+ - Removed the property `intlLoading`, use `messsageOverrides.loading` instead.
+ - Removed `calciteInputTextInput` event payload, use the event's
+ `target`/`currentTarget` instead.
+
+- **input-time-picker:**
+
+ - Removed the `active` property, use `open` instead.
+ - Removed the property `locale`, use `lang` instead.
+ - Removed the property `intlHour`, use `messsageOverrides.hour` instead.
+ - Removed the property `intlHourDown`, use `messsageOverrides.hourDown` instead.
+ - Removed the property `intlHourUp`, use `messsageOverrides.hourUp` instead.
+ - Removed the property `intlMeridiem`, use `messsageOverrides.meridiem` instead.
+ - Removed the property `intlMeridiemDown`, use`messsageOverrides.meridiemDown` instead.
+ - Removed the property `intlMeridiemUp`, use `messsageOverrides.meridiemUp` instead.
+ - Removed the property `intlMinute`, use `messsageOverrides.minute` instead.
+ - Removed the property `intlMinuteUp`, use `messsageOverrides.minuteUp` instead.
+ - Removed the property `intlMinuteDown`, use `messsageOverrides.minuteDown` instead.
+ - Removed the property `intlSecond`, use `messsageOverrides.second` instead.
+ - Removed the property `intlSecondUp`, use `messsageOverrides.secondUp` instead.
+ - Removed the property `intlSecondDown`, use `messsageOverrides.secondDown` instead.
+
+- **label:**
+ - The default display for label is now `flex` instead of
+ `inline`. Use `--calcite-label-margin-bottom` CSS variable to disable space when
+ in `layout` is `inline`.
- Removed the property `status`, set the `status` property on the
component the label is bound to instead.
- Removed the property `disabled`, set the `disabled` property on the
@@ -463,73 +564,62 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Removed the property `disableSpacing`, use the CSS variable
`--calcite-label-margin-bottom` instead.
-- **stepper-item:** Removed deprecated properties.
+- **loader:**
- - Removed the property `active`, use `selected` instead.
- - Removed the property `itemTitle`, use `heading` instead.
- - Removed the property `itemSubtitle`, use `description` instead.
+ - Removed the property `active`, use global attribute `hidden` instead.
+ - Removed the property `noPadding`, use `--calcite-loader-padding` CSS
+ property instead.
-- **radio-group-item:** Removed deprecated properties.
+- **modal:**
- - Removed the property `icon`, use either `iconStart` or `iconEnd`
+ - Removed the property `backgroundColor`, use the CSS variable
+ `--calcite-modal-content-background` instead.
+ - Removed the `--calcite-modal-padding` CSS variable, use the
+ `--calcite-modal-content-padding` CSS variable instead.
+ - Removed the property `intlClose`, use `messsageOverrides.close`
instead.
- - Removed the property `iconPosition`, use either `iconStart` or
- `iconEnd` instead.
-
-- **split-button:** Removed the `event.detail` payload from the events
- `calciteSplitButtonPrimaryClick` and `calciteSplitButtonSecondaryClick`.
- Use separate mouse event listeners to get information about `click`
- events.
-
-- **slider:** Removed deprecated event.
-
- - Removed the event `calciteSliderUpdate`, use `calciteSliderInput`
+ - Renamed the property `color`, use `kind` instead.
+ - Updated the accepted values of `kind` to `brand`, `danger`, `info`,
+ `success`, and `warning`.
+ - Removed the property `active`, use `open` instead.
+ - Removed the property noPadding, use `--calcite-modal-padding` CSS
+ property instead.
+ - Removed the method `focusElement`, use `setFocus` method instead.
+ - Removed the CSS property ` --calcite-modal-content-text`.
+ - Removed the CSS property `--calcite-modal-padding-large`.
+ - Removed the CSS property `--calcite-modal-title-text`.
+ - Renamed the property `disableCloseButton`, use `closeButtonDisabled`
instead.
-
-- **dropdown, dropdown-item:** Removed deprecated properties.
-
- - Removed the property `active` on `calcite-dropdown-item`, use
- `selected` instead.
- - Removed the property `active`, on `calcite-dropdown`, use `open`
+ - Renamed the property `disableFocusTrap`, use `focusTrapDisabled`
instead.
-
-- **tree:** Removed the `inputEnabled` property.
-
- - Removed the property `inputEnabled`, use `selectionMode="ancestors"`
+ - Renamed the property `disableOutsideClose`, use `outsideCloseDisabled`
instead.
+ - Renamed the property `disableEscape`, use `escapeDisabled` instead.
-- **chip:** Removed the `dismissible` property and the `clear`
- value for the `appearance` property.
-
- - Removed the property `dismissible`, use `closable` instead.
- - Use the value `transparent` instead of `clear` for `appearance`
- property.
-
-- **action-menu:** Removed the `event.detail` value from the
- `calciteActionMenuOpenChange` event on the `action-menu` component.
-
- - When listening to `calciteActionMenuOpenChange`, use the `open`
- property on the `event.target` instead of `event.detail`.
-
-- **block:** Removed the `summary` and `disablePadding` properties.
-
- - Removed the property `summary`, use `description` instead.
- - Removed the property `disablePadding`, use the CSS variable
- `--calcite-block-padding` instead.
+- **notice:**
-- **popover-manager:** Removed the `calcite-popover-manager` component. This
- component is no longer necessary for `calcite-popover`s.
+ - Removed the property `active`, use `open` instead.
+ - Removed the property `dimissible`, use `closable` property instead.
+ - Removed the property `intlClose`, use `messsageOverrides.close`
+ instead.
-- **accordion-item:** Removed the properties `active`, `itemTitle`,
- `itemSubtitle`, and `icon`.
+- **pagination**:
- - Removed the property `active`, use `expanded` instead.
- - Removed the property `itemTitle`, use `heading` instead.
- - Removed the property `itemSubtitle`, use `description` instead.
- - Removed the property `icon`, use `iconStart` or `iconEnd` instead.
+ - Removed the property `textLabelNext` , use `messsageOverrides.next`
+ instead.
+ - Removed the property `textLabelPrevious` , use
+ `messsageOverrides.previous` instead.
+ - Removed the event `calcitePaginationUpdate` event, use
+ `calcitePaginationChange` event instead.
+ - Removed the `event.detail` property on the event
+ `calcitePaginationChange`, use `event.target` instead.
-- **panel:** Removed deprecated events and properties.
+- **panel**:
+ - Removed the property `intlClose` , use `messsageOverrides.close`
+ instead.
+ - Removed the property `intlOptions`, use `messsageOverrides.options`
+ instead.
- Removed the property `dismissed`, use `closed` instead.
- Removed the property `dismissible`, use `closable` instead.
- Removed the property `summary`, use `description` instead.
@@ -546,117 +636,201 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Removed the event `calcitePanelBackClick`, use the `calcite-flow-item`
component instead.
-- **popover:** Removed the `closeButton` and `dismissible` properties.
+- **pick-list-item**:
+
+ - Removed the property `intlRemove`, use `messsageOverrides.remove`
+ instead.
+ - Renamed the property `disableDeselect`, use `deselectDisabled`
+ instead.
+
+- **popover**:
+ - Removed the property `intlClose` , use `messsageOverrides.close`
+ instead.
+ - Renamed the property `disableFlip`, use `flipDisabled` instead.
+ - Renamed the property `disableFocusTrap`, use `focusTrapDisabled`
+ instead.
+ - Renamed the property `disablePointer`, use `pointerDisabled` instead.
- Removed the property `closeButton`, use `closable` instead.
- Removed the property `dismissible`, use `closable` instead.
-- **tooltip-manager:** Removed the `calcite-tooltip-manager` component. This
- component is no longer necessary for `calcite-tooltip`s.
-- **alert:** Removed the deprecated `active` property.
+- **popover-manager:** Removed the `calcite-popover-manager` component. This
+ component is no longer necessary for `calcite-popover`s.
- - Removed the property `active`, use `open` instead.
+- **radio-group:**
- - Removed the `*-leading` and `*-trailing` values for
- component `placement` properties.
+ - Removed `minimal` appearance value, use `outline` instead.
+ - Removed the `event.detail` property on the event
+ `calciteRadioGroupChange`, use `event.target` instead.
- - There is no need for "_-leading" and "_-trailing" values anymore since
- `*-start` and `*-end` are already flipped in right-to-left direction.
+- **radio-group-item:**
- - **list, list-item, list-item-group:** Removed the `headingLevel` and `nonInteractive`
- properties.
+ - Removed the property `icon`, use either `iconStart` or `iconEnd`
+ instead.
+ - Removed the property `iconPosition`, use either `iconStart` or
+ `iconEnd` instead.
- - `headingLevel` property on the `list` and `list-item-group` is no
- longer necessary.
- - `nonInteractive` property on the `list-item` is no longer necessary.
+- **rating:**
+
+ - Removed the `event.detail` property on the event
+ `calciteRatingChange`, use `event.target` instead.
+ - Removed the property `intlStars` , use `messsageOverrides.stars` instead.
+ - Removed the property `intlRating` , use `messsageOverrides.rating` instead.
+
+- **scrim:**
+
+ - Removed the property `intlLoading` , use `messsageOverrides.loading` instead.
-- **shell:** Removed the `primary-panel` and `contextual-panel`
- slots.
+- **shell:**
- Removed the slot `primary-panel`, use `panel-start` instead.
- Removed the slot `contextual-panel`, use `panel-end` instead.
-- **shell-panel:** Removed the `calciteShellPanelToggle` event.
+- **shell-panel:**
- - Use a `ResizeObserver` on the component to listen for changes to its
- size. (https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)
+ - Removed the property `intlResize`, use `messagesOverrides.resize`
+ instead.
+ - Removed the `calciteShellPanelToggle` event. Use a `ResizeObserver` on the component to listen for changes to its size. (https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).
-- **flow, flow-item:** Removed the `calciteFlowItemBackClick` event and
- support for slotting `calcite-panel`s.
+- **slider:**
- - Removed support for slotting `calcite-panel` components, use the
- `calcite-flow-item` component instead.
- - Removed the event `calciteFlowItemBackClick`, use
- `calciteFlowItemBack` instead.
+ - Removed the event `calciteSliderUpdate`, use `calciteSliderInput`
+ instead.
-- **tip-manager:** Removed the `calciteTipManagerToggle` event, use
- `calciteTipManagerClose` instead.
+- **split-button:**
-- **action:** Removed the `calciteActionClick` event and the `clear`
- value for the `appearance` property.
+ - Removed the `event.detail` payload from the events
+ `calciteSplitButtonPrimaryClick` and `calciteSplitButtonSecondaryClick`.
+ Use separate mouse event listeners to get information about `click`
+ events.
- - Listen to the `click` event instead of `calciteActionClick.
- - Use the value `transparent` instead of `clear` for the property
- `appearance`.
+- **stepper-item:**
-- **list, list-item, list-item-group:** To know when `calcite-list-item` content is selected, listen to the event `calciteListItemSelect` instead of `click`.
+ - Removed the property `active`, use `selected` instead.
+ - Removed the property `itemTitle`, use `heading` instead.
+ - Removed the property `itemSubtitle`, use `description` instead.
- - `List`
- - Adds `label` property to specify an accessible name for the component.
- - Adds `loading` property to show a busy indicator.
- - Adds `selectionMode` and `selectionAppearance` properties to handle configuration of selection.
- - Adds `filterEnabled`, `filteredData`, `filteredItems`, `filterText`, and `filterPlaceholder` properties to support filtering.
- - Adds `calciteListFilter` event to notify when a filter has changed.
- - Deprecates `headingLevel` property.
- - `ListItemGroup`
- - Adds `disabled` property to prevent user interaction.
- - Deprecates `headingLevel` property.
- - `ListItem`
- - Adds `calciteListItemSelect` event to notify when list item content is selected.
- - Adds `selected` and `value` properties to handle selection.
- - Adds `open` property to show child components.
- - Deprecates `nonInteractive` property.
+- **switch:**
-- **calcite-loader, calcite-input-message:** use hidden native global attribute to toggle visibility on the components instead of the deprecated active prop.
-- **block, date-picker, list-item-group, panel, pick-list-group, popover, tip, tip-manager:** Sets internal heading HTML element to be a div by default. If users would like to retain an internal H1-H6 HTML element, they will need to set the headingLevel property on the component. Users already setting the headingLevel property are not affected. ([#5728](https://github.com/Esri/calcite-components/pull/5728)) ([38ca639](https://github.com/Esri/calcite-components/commit/38ca639010b8bd1d1fe32c9cf9b54dfc38cf9877)), closes [5099](https://github.com/Esri/calcite-components/issues/5099)
+ - Removed the property `switched`, use `checked` instead.
+ - Removed the `event.detail` from `calciteSwitchChange`, use
+ `event.target.checked` instead.
+
+- **tab-nav**:
+
+ - Removed the `event.detail` property on the event `calciteTabChange`,
+ use `event.target` and the `selectedTitle` property instead.
+
+- **tab-title**:
+
+ - Removed the `event.detail` property on the event
+ `calciteTabsActivate`, use `event.target` instead.
+
+- **tabs:**
+
+ - Removed the slot `tab-nav`, use `title-group` instead.
+
+- **time-picker:**
+
+ - Removed `target` parameter from `setFocus()`, focus will be delegated
+ to the first focusable element instead.
+ - Removed the property `intlHour`, use `messsageOverrides.hour` instead.
+ - Removed the property `intlHourDown`, use `messsageOverrides.hourDown` instead.
+ - Removed the property `intlHourUp`, use `messsageOverrides.hourUp` instead.
+ - Removed the property `intlMeridiem`, use `messsageOverrides.meridiem` instead.
+ - Removed the property `intlMeridiemDown`, use `messsageOverrides.meridiemDown` instead.
+ - Removed the property `intlMeridiemUp`, use `messsageOverrides.meridiemUp` instead.
+ - Removed the property `intlMinute`, use `messsageOverrides.minute` instead.
+ - Removed the property `intlMinuteUp`, use `messsageOverrides.minuteUp` instead.
+ - Removed the property `intlMinuteDown`, use `messsageOverrides.minuteDown` instead.
+ - Removed the property `intlSecond`, use `messsageOverrides.second` instead.
+ - Removed the property `intlSecondUp`, use `messsageOverrides.secondUp` instead.
+ - Removed the property `intlSecondDown`, use `messsageOverrides.secondDown` instead.
+ - Removed the `locale` property, use `lang` instead.
+
+- **tip:**
+
+ - Renamed the property `nonDismissible`, use `closeDisabled` instead.
+
+- **tip-manager:**
+
+ - Removed the `calciteTipManagerToggle` event, use
+ `calciteTipManagerClose` instead.
+
+- **tooltip-manager:** Removed the `calcite-tooltip-manager` component. This
+ component is no longer necessary for `calcite-tooltip`s.
+
+- **tree:**
+
+ - Added property `selectedItems`.
+ - Removed the `event.detail` property on the event `calciteTreeSelect`,
+ use `event.target` instead.
+ - Removed the property `inputEnabled`, use `selectionMode="ancestors"`
+ instead.
+
+- **value-list:**
+
+ - Removed the property `intlDragHandleActive`, use `messsageOverrides.dragHandleActive` instead.
+ - Removed the property `intlDragHandleChange`, use `messsageOverrides.dragHandleChange` instead.
+ - Removed the property `intlDragHandleCommit`, use `messsageOverrides.dragHandleCommit` instead.
+ - Removed the property `intlDragHandleIdle`, use `messsageOverrides.dragHandleIdle` instead.
+
+- **value-list-item:**
+
+ - Renamed the property `disableDeselect`, use `deselectDisabled`
+ instead.
### Features
-- add built-in translations ([#5471](https://github.com/Esri/calcite-components/issues/5471)) ([d754b29](https://github.com/Esri/calcite-components/commit/d754b29467d40f8081eb7793fb13c1b4de9f7ebf)), closes [#4961](https://github.com/Esri/calcite-components/issues/4961)
+- **shell-panel:** Add built-in translations ([#6079](https://github.com/Esri/calcite-components/issues/6079)) ([1c7ff2b](https://github.com/Esri/calcite-components/commit/1c7ff2b232bf19c160602371d96af253e0cf5a66)), closes [#6066](https://github.com/Esri/calcite-components/issues/6066)
+
+- **tip,tip-manager:** Add built-in translations ([#6074](https://github.com/Esri/calcite-components/issues/6074)) ([683cf07](https://github.com/Esri/calcite-components/commit/683cf07a916e6e9aa93fea8b7a2869fa0c531667)), closes [#6066](https://github.com/Esri/calcite-components/issues/6066)
-* **dropdown-item:** Add `calciteDropdownItemSelect` event ([#6015](https://github.com/Esri/calcite-components/issues/6015)) ([b565ac9](https://github.com/Esri/calcite-components/commit/b565ac97e0d8b63527767fa10a75dce78d7f5a4b)), closes [#5940](https://github.com/Esri/calcite-components/issues/5940) [#5940](https://github.com/Esri/calcite-components/issues/5940)
+- **shell:** Add slots for Modal and Alert ([#5983](https://github.com/Esri/calcite-components/issues/5983)) ([d824bf7](https://github.com/Esri/calcite-components/commit/d824bf74cbda49c9796e090c04d0f7db0d772f8b))
-* **input, input-number, input-text:** add inputMode and enterKeyHint properties ([#5976](https://github.com/Esri/calcite-components/issues/5976)) ([d567a9f](https://github.com/Esri/calcite-components/commit/d567a9fde5b3619f308133555ba0bae20ca85168)), closes [#5917](https://github.com/Esri/calcite-components/issues/5917)
+- Add `iconFlipRtl` prop to all components with a convenience icon prop [#5496](https://github.com/Esri/calcite-components/issues/5496) ([#5878](https://github.com/Esri/calcite-components/issues/5878)) ([30a080b](https://github.com/Esri/calcite-components/commit/30a080b81d20163eba7e65e481ba3701b2bd39a1))
-* **action:** add built-in translation support for indicator text ([#5895](https://github.com/Esri/calcite-components/issues/5895)) ([704db6d](https://github.com/Esri/calcite-components/commit/704db6dfbe3a875fbd5b20c9b0eb0975aca24258)), closes [#4813](https://github.com/Esri/calcite-components/issues/4813)
+- Add built-in translations ([#5471](https://github.com/Esri/calcite-components/issues/5471)) ([d754b29](https://github.com/Esri/calcite-components/commit/d754b29467d40f8081eb7793fb13c1b4de9f7ebf)), closes [#4961](https://github.com/Esri/calcite-components/issues/4961)
-* **list-item:** Add content slot for specialized content ([#5876](https://github.com/Esri/calcite-components/issues/5876)) ([a510773](https://github.com/Esri/calcite-components/commit/a510773ba87994010e84184f7709c84ce40f2d2c)), closes [#3032](https://github.com/Esri/calcite-components/issues/3032) [#3032](https://github.com/Esri/calcite-components/issues/3032)
+- **dropdown-item:** Adds the `calciteDropdownItemSelect` event on any parent element to listen for items when selected ([#6015](https://github.com/Esri/calcite-components/issues/6015)) ([b565ac9](https://github.com/Esri/calcite-components/commit/b565ac97e0d8b63527767fa10a75dce78d7f5a4b)), closes [#5940](https://github.com/Esri/calcite-components/issues/5940) [#5940](https://github.com/Esri/calcite-components/issues/5940)
-* **textarea:** add default message bundle ([#5870](https://github.com/Esri/calcite-components/issues/5870)) ([c7a8495](https://github.com/Esri/calcite-components/commit/c7a84955b4f3cd09dbf7315ea59e0edaa7be2a6c)), closes [#863](https://github.com/Esri/calcite-components/issues/863)
+- **input, input-number, input-text:** Add inputMode and enterKeyHint properties ([#5976](https://github.com/Esri/calcite-components/issues/5976)) ([d567a9f](https://github.com/Esri/calcite-components/commit/d567a9fde5b3619f308133555ba0bae20ca85168)), closes [#5917](https://github.com/Esri/calcite-components/issues/5917)
-* **input, input-text, input-number:** add attributes autocomplete, accept, multiple, pattern ([#5807](https://github.com/Esri/calcite-components/issues/5807)) ([feb4fce](https://github.com/Esri/calcite-components/commit/feb4fce9528920041d836446ef437f0f1c0e8ce2)), closes [#4079](https://github.com/Esri/calcite-components/issues/4079)
+- **action:** Add built-in translation support for indicator text ([#5895](https://github.com/Esri/calcite-components/issues/5895)) ([704db6d](https://github.com/Esri/calcite-components/commit/704db6dfbe3a875fbd5b20c9b0eb0975aca24258)), closes [#4813](https://github.com/Esri/calcite-components/issues/4813)
-* **alert:** support actions-end ([#5750](https://github.com/Esri/calcite-components/issues/5750)) ([2447e16](https://github.com/Esri/calcite-components/commit/2447e167eb731f3a59775a5692530137bf9a70fd))
-* **list, list-item, list-item-group:** Adds support for selecting and filtering list items. Improves accessibility by using aria "treegrid" role. ([#4527](https://github.com/Esri/calcite-components/issues/4527)) ([f489c57](https://github.com/Esri/calcite-components/commit/f489c57095ec21df1f427176d2d635675eea95d3))
-* **pick-list, value-list:** Add calciteListFilter event, filteredItems prop, filterText prop and filteredData prop. ([#5681](https://github.com/Esri/calcite-components/issues/5681)) ([943d208](https://github.com/Esri/calcite-components/commit/943d2088b7cf447a12ebcd0babab145f543538a2)), closes [#4333](https://github.com/Esri/calcite-components/issues/4333)
-* **popover:** Add focus-trap to popover and disableFocusTrap property. ([#5725](https://github.com/Esri/calcite-components/issues/5725)) ([a8ef353](https://github.com/Esri/calcite-components/commit/a8ef353bc031630b373f2bdd1bdc1cafd7e35be9)), closes [#2133](https://github.com/Esri/calcite-components/issues/2133)
-* **popover:** Escape key should close open popovers. ([#5726](https://github.com/Esri/calcite-components/issues/5726)) ([2e2621d](https://github.com/Esri/calcite-components/commit/2e2621d57c4701f7a7e84f74d801c543ad4f45c0))
-* **tabs:** Add support for navigating with Home and End keys ([#5727](https://github.com/Esri/calcite-components/issues/5727)) ([823c429](https://github.com/Esri/calcite-components/commit/823c429439ec9f8cd1d6a1ff2aedf0b2da9c741b)), closes [#5661](https://github.com/Esri/calcite-components/issues/5661)
-* **tooltip:** Add tooltip open, close, beforeOpen, and beforeClose events ([#5772](https://github.com/Esri/calcite-components/issues/5772)) ([64b5675](https://github.com/Esri/calcite-components/commit/64b56751d68f69d31ea943415f5d0d08bae634cc)), closes [#5734](https://github.com/Esri/calcite-components/issues/5734)
+- **list-item:** Add content slot for specialized content ([#5876](https://github.com/Esri/calcite-components/issues/5876)) ([a510773](https://github.com/Esri/calcite-components/commit/a510773ba87994010e84184f7709c84ce40f2d2c)), closes [#3032](https://github.com/Esri/calcite-components/issues/3032) [#3032](https://github.com/Esri/calcite-components/issues/3032)
+
+- **textarea:** Add default message bundle ([#5870](https://github.com/Esri/calcite-components/issues/5870)) ([c7a8495](https://github.com/Esri/calcite-components/commit/c7a84955b4f3cd09dbf7315ea59e0edaa7be2a6c)), closes [#863](https://github.com/Esri/calcite-components/issues/863)
+
+- **input, input-text, input-number:** Add attributes `autocomplete`, `accept`, `multiple`, `pattern` ([#5807](https://github.com/Esri/calcite-components/issues/5807)) ([feb4fce](https://github.com/Esri/calcite-components/commit/feb4fce9528920041d836446ef437f0f1c0e8ce2)), closes [#4079](https://github.com/Esri/calcite-components/issues/4079)
+
+- **alert:** Support `actions-end` ([#5750](https://github.com/Esri/calcite-components/issues/5750)) ([2447e16](https://github.com/Esri/calcite-components/commit/2447e167eb731f3a59775a5692530137bf9a70fd))
+- **list, list-item, list-item-group:** Adds support for selecting and filtering list items. Improves accessibility by using aria "treegrid" role. ([#4527](https://github.com/Esri/calcite-components/issues/4527)) ([f489c57](https://github.com/Esri/calcite-components/commit/f489c57095ec21df1f427176d2d635675eea95d3))
+- **pick-list, value-list:** Add `calciteListFilter` event, `filteredItems` prop, `filterText` prop and `filteredData` prop. ([#5681](https://github.com/Esri/calcite-components/issues/5681)) ([943d208](https://github.com/Esri/calcite-components/commit/943d2088b7cf447a12ebcd0babab145f543538a2)), closes [#4333](https://github.com/Esri/calcite-components/issues/4333)
+- **popover:** Add focus-trap to popover and `disableFocusTrap` property. ([#5725](https://github.com/Esri/calcite-components/issues/5725)) ([a8ef353](https://github.com/Esri/calcite-components/commit/a8ef353bc031630b373f2bdd1bdc1cafd7e35be9)), closes [#2133](https://github.com/Esri/calcite-components/issues/2133)
+- **popover:** Escape key should close open popovers. ([#5726](https://github.com/Esri/calcite-components/issues/5726)) ([2e2621d](https://github.com/Esri/calcite-components/commit/2e2621d57c4701f7a7e84f74d801c543ad4f45c0))
+- **tabs:** Add support for navigating with Home and End keys ([#5727](https://github.com/Esri/calcite-components/issues/5727)) ([823c429](https://github.com/Esri/calcite-components/commit/823c429439ec9f8cd1d6a1ff2aedf0b2da9c741b)), closes [#5661](https://github.com/Esri/calcite-components/issues/5661)
+- **tooltip:** Add tooltip open, close, beforeOpen, and beforeClose events ([#5772](https://github.com/Esri/calcite-components/issues/5772)) ([64b5675](https://github.com/Esri/calcite-components/commit/64b56751d68f69d31ea943415f5d0d08bae634cc)), closes [#5734](https://github.com/Esri/calcite-components/issues/5734)
### Bug Fixes
+- **icon, graphic, loader:** Set aria-hidden on internal svg elements ([#6069](https://github.com/Esri/calcite-components/issues/6069)) ([4ed3ca0](https://github.com/Esri/calcite-components/commit/4ed3ca02d535245df65fa64ee5e7d5cb8ef11914)), closes [#5616](https://github.com/Esri/calcite-components/issues/5616)
+
+- **combobox:** Fix error when typing a custom value ([#6071](https://github.com/Esri/calcite-components/issues/6071)) ([246de97](https://github.com/Esri/calcite-components/commit/246de9751f4baf2f26734fa08c379c4715b711dd)), closes [#5109](https://github.com/Esri/calcite-components/issues/5109) [#5109](https://github.com/Esri/calcite-components/issues/5109)
+
+- **rating:** 5312 improve user interface ([#5948](https://github.com/Esri/calcite-components/issues/5948)) ([a9724dd](https://github.com/Esri/calcite-components/commit/a9724dd471a69391b3c6e6d25e0f255b41b1ff74)), closes [#5312](https://github.com/Esri/calcite-components/issues/5312)
+
- **loader:** Do not modify display when inline ([#6013](https://github.com/Esri/calcite-components/issues/6013)) ([2d91c89](https://github.com/Esri/calcite-components/commit/2d91c89778fd71f9492d3caad0750f779488d2cf)), closes [#5900](https://github.com/Esri/calcite-components/issues/5900) [#5900](https://github.com/Esri/calcite-components/issues/5900)
-- **popover, modal:** deactivate focus trap on outside click ([#5994](https://github.com/Esri/calcite-components/issues/5994)) ([2a66134](https://github.com/Esri/calcite-components/commit/2a661343f1ee9fc9afda347990f40d33ad41295d)), closes [#5993](https://github.com/Esri/calcite-components/issues/5993)
+- **popover, modal:** Deactivate focus trap on outside click ([#5994](https://github.com/Esri/calcite-components/issues/5994)) ([2a66134](https://github.com/Esri/calcite-components/commit/2a661343f1ee9fc9afda347990f40d33ad41295d)), closes [#5993](https://github.com/Esri/calcite-components/issues/5993)
-- **loader:** no longer animates when reduced motion is enabled ([#5981](https://github.com/Esri/calcite-components/issues/5981)) ([4d994e5](https://github.com/Esri/calcite-components/commit/4d994e5f845b828df8f37b61923fc5cceed3819a)), closes [#3489](https://github.com/Esri/calcite-components/issues/3489)
+- **loader:** No longer animates when reduced motion is enabled ([#5981](https://github.com/Esri/calcite-components/issues/5981)) ([4d994e5](https://github.com/Esri/calcite-components/commit/4d994e5f845b828df8f37b61923fc5cceed3819a)), closes [#3489](https://github.com/Esri/calcite-components/issues/3489)
- **modal, popover:** Add `disableFocusTrap` property to toggle focus trapping. ([#5965](https://github.com/Esri/calcite-components/issues/5965)) ([7ee9e16](https://github.com/Esri/calcite-components/commit/7ee9e16fbc5a12c82f85a5e2fb07c0d1137d03ce))
- **input, input-number, input-text:** Fix infinite loop crashing browser. [#5882](https://github.com/Esri/calcite-components/issues/5882) ([#5961](https://github.com/Esri/calcite-components/issues/5961)) ([190cfac](https://github.com/Esri/calcite-components/commit/190cfac2dbdc0c312ebf396d66894a07ae7086b9))
-- **alert:** auto-dismissible retains close button and dismisses timer while a user is hovering over ([#5872](https://github.com/Esri/calcite-components/issues/5872)) ([274b104](https://github.com/Esri/calcite-components/commit/274b10477f6aaf822d3cf2894b7848e36b36b057)), closes [#3338](https://github.com/Esri/calcite-components/issues/3338)
+- **alert:** Auto-dismissible retains close button and dismisses timer while a user is hovering over ([#5872](https://github.com/Esri/calcite-components/issues/5872)) ([274b104](https://github.com/Esri/calcite-components/commit/274b10477f6aaf822d3cf2894b7848e36b36b057)), closes [#3338](https://github.com/Esri/calcite-components/issues/3338)
- **action:** Add screen reader support for `active` and `indicator` props ([#5875](https://github.com/Esri/calcite-components/issues/5875)) ([b6bcfa0](https://github.com/Esri/calcite-components/commit/b6bcfa03c9a20ae156634b14b2d8dd2834f29c40)), closes [#4813](https://github.com/Esri/calcite-components/issues/4813) [#4813](https://github.com/Esri/calcite-components/issues/4813)
- **block:** Fix content spacing. [#5898](https://github.com/Esri/calcite-components/issues/5898) ([#5918](https://github.com/Esri/calcite-components/issues/5918)) ([f32ddaa](https://github.com/Esri/calcite-components/commit/f32ddaad88060cbeff60f87499a26560adeee66a))
@@ -669,38 +843,36 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- **list-item:** Add hover styling ([#5891](https://github.com/Esri/calcite-components/issues/5891)) ([063d6e9](https://github.com/Esri/calcite-components/commit/063d6e955eddb82a5b3ea2e93eca3aa03feef2ae)), closes [#5880](https://github.com/Esri/calcite-components/issues/5880)
-- **input-time-picker, input-date-picker:** internal pickers update when changing locales ([#5887](https://github.com/Esri/calcite-components/issues/5887)) ([9c2dc42](https://github.com/Esri/calcite-components/commit/9c2dc42e581b6399b909d41ce6ae5b77ffa12831)), closes [#5855](https://github.com/Esri/calcite-components/issues/5855)
+- **input-time-picker, input-date-picker:** Internal pickers update when changing locales ([#5887](https://github.com/Esri/calcite-components/issues/5887)) ([9c2dc42](https://github.com/Esri/calcite-components/commit/9c2dc42e581b6399b909d41ce6ae5b77ffa12831)), closes [#5855](https://github.com/Esri/calcite-components/issues/5855)
-- **modal:** restore deprecated scrim background css property ([#5868](https://github.com/Esri/calcite-components/issues/5868)) ([7717127](https://github.com/Esri/calcite-components/commit/7717127fd25510126ad7d2b3def2c9d00753d60f)), closes [#5866](https://github.com/Esri/calcite-components/issues/5866)
+- **modal:** Restore deprecated scrim background css property ([#5868](https://github.com/Esri/calcite-components/issues/5868)) ([7717127](https://github.com/Esri/calcite-components/commit/7717127fd25510126ad7d2b3def2c9d00753d60f)), closes [#5866](https://github.com/Esri/calcite-components/issues/5866)
-- **alert:** placement of link consistent with notice ([#5852](https://github.com/Esri/calcite-components/issues/5852)) ([56e35ab](https://github.com/Esri/calcite-components/commit/56e35ab3e07c9562d83eee04559a1e8b15662b3d)), closes [#5254](https://github.com/Esri/calcite-components/issues/5254)
+- **alert:** Placement of link consistent with notice ([#5852](https://github.com/Esri/calcite-components/issues/5852)) ([56e35ab](https://github.com/Esri/calcite-components/commit/56e35ab3e07c9562d83eee04559a1e8b15662b3d)), closes [#5254](https://github.com/Esri/calcite-components/issues/5254)
-- **pagination:** numberingSystem and lang properties work without groupSeparator ([#5828](https://github.com/Esri/calcite-components/issues/5828)) ([b21c5d0](https://github.com/Esri/calcite-components/commit/b21c5d02be14a6551af3a3381b9ca48dfd50c395)), closes [#5648](https://github.com/Esri/calcite-components/issues/5648)
+- **pagination:** `numberingSystem` and `lang` properties work without `groupSeparator` ([#5828](https://github.com/Esri/calcite-components/issues/5828)) ([b21c5d0](https://github.com/Esri/calcite-components/commit/b21c5d02be14a6551af3a3381b9ca48dfd50c395)), closes [#5648](https://github.com/Esri/calcite-components/issues/5648)
- **combobox:** 5540 - handle focus ([#5774](https://github.com/Esri/calcite-components/issues/5774)) ([6a114b6](https://github.com/Esri/calcite-components/commit/6a114b6c614509ff774f30bf1a238758439127d6)), closes [#5540](https://github.com/Esri/calcite-components/issues/5540)
- **tree-item:** Allow space and enter key events when selectionMode is "none" ([#5800](https://github.com/Esri/calcite-components/issues/5800)) ([2fa483b](https://github.com/Esri/calcite-components/commit/2fa483b64844b5046a9d60e66b5d6f187ab1d98e)), closes [#5735](https://github.com/Esri/calcite-components/issues/5735) [#5735](https://github.com/Esri/calcite-components/issues/5735)
-- **input-date-picker:** display updated valueAsDate in the two range inputs ([#5758](https://github.com/Esri/calcite-components/issues/5758)) ([ea93555](https://github.com/Esri/calcite-components/commit/ea93555c3e9a78b1ff3efb2865e1821a4d340f6d)), closes [#5207](https://github.com/Esri/calcite-components/issues/5207)
+- **input-date-picker:** Display updated valueAsDate in the two range inputs ([#5758](https://github.com/Esri/calcite-components/issues/5758)) ([ea93555](https://github.com/Esri/calcite-components/commit/ea93555c3e9a78b1ff3efb2865e1821a4d340f6d)), closes [#5207](https://github.com/Esri/calcite-components/issues/5207)
-- **block:** slow down loading icon spin ([#5778](https://github.com/Esri/calcite-components/issues/5778)) ([7b990dc](https://github.com/Esri/calcite-components/commit/7b990dc350b5b8a2fb5cea8a049e904761eec167)), closes [#5776](https://github.com/Esri/calcite-components/issues/5776)
+- **block:** Slow down loading icon spin ([#5778](https://github.com/Esri/calcite-components/issues/5778)) ([7b990dc](https://github.com/Esri/calcite-components/commit/7b990dc350b5b8a2fb5cea8a049e904761eec167)), closes [#5776](https://github.com/Esri/calcite-components/issues/5776)
- setFocus methods should wait for the component to be loaded ([#5749](https://github.com/Esri/calcite-components/issues/5749)) ([06d4767](https://github.com/Esri/calcite-components/commit/06d4767dad8918e7677b9754f6ff26312d07cb96))
- **block, date-picker, list-item-group, panel, pick-list-group, popover, tip, tip-manager:** Set default internal heading to a div. ([#5728](https://github.com/Esri/calcite-components/issues/5728)) ([38ca639](https://github.com/Esri/calcite-components/commit/38ca639010b8bd1d1fe32c9cf9b54dfc38cf9877)), closes [#5099](https://github.com/Esri/calcite-components/issues/5099)
- **button, fab:** adjust padding on 'l' scale button to accommodate 'm' scale icon without change in height ([#5659](https://github.com/Esri/calcite-components/issues/5659)) ([d68d95c](https://github.com/Esri/calcite-components/commit/d68d95cda10ad819e52b048479780590f21ac479))
-- **calcite-loader, calcite-input-message:** drop active in favor of hidden ([#5761](https://github.com/Esri/calcite-components/issues/5761)) ([c2e05d1](https://github.com/Esri/calcite-components/commit/c2e05d149bfa3d0f7b81eff2b55405f792cab16c))
+- **calcite-loader, calcite-input-message:** Drop `active` in favor of `hidden` ([#5761](https://github.com/Esri/calcite-components/issues/5761)) ([c2e05d1](https://github.com/Esri/calcite-components/commit/c2e05d149bfa3d0f7b81eff2b55405f792cab16c))
- **combobox:** Wrap and break text on long items ([#5672](https://github.com/Esri/calcite-components/issues/5672)) ([4a4d776](https://github.com/Esri/calcite-components/commit/4a4d7767e7cc39cc1561432c74d99d0783d3997a)), closes [#5419](https://github.com/Esri/calcite-components/issues/5419)
- **flow-item:** Position back tooltip above ([#5688](https://github.com/Esri/calcite-components/issues/5688)) ([bb67992](https://github.com/Esri/calcite-components/commit/bb67992fa9f113709482a69fff0f36032dbfad35))
- **inline-editable:** Add text-ellipsis when not editing ([#5679](https://github.com/Esri/calcite-components/issues/5679)) ([2524e6f](https://github.com/Esri/calcite-components/commit/2524e6f6a8cbc7c2a35c635ce34ad0c9dbc6874f)), closes [#5489](https://github.com/Esri/calcite-components/issues/5489)
-- **input-date-picker:** restores mouse clicks on date-picker popup ([#5760](https://github.com/Esri/calcite-components/issues/5760)) ([98f28c6](https://github.com/Esri/calcite-components/commit/98f28c6a9ae48b12bee7fc78fb7cdc4ceb456d3e))
-- **input, input-number:** decimals no longer contain groupSeparators and remove leading zeros ([#5490](https://github.com/Esri/calcite-components/issues/5490)) ([07142f3](https://github.com/Esri/calcite-components/commit/07142f35d1d6678bc28101245638046658922c22))
+- **input-date-picker:** Restores mouse clicks on date-picker popup ([#5760](https://github.com/Esri/calcite-components/issues/5760)) ([98f28c6](https://github.com/Esri/calcite-components/commit/98f28c6a9ae48b12bee7fc78fb7cdc4ceb456d3e))
+- **input, input-number:** Decimals no longer contain groupSeparators and remove leading zeros ([#5490](https://github.com/Esri/calcite-components/issues/5490)) ([07142f3](https://github.com/Esri/calcite-components/commit/07142f35d1d6678bc28101245638046658922c22))
- **value-list-item:** Prevent scrolling when space is pressed on drag button ([#5709](https://github.com/Esri/calcite-components/issues/5709)) ([81d4c71](https://github.com/Esri/calcite-components/commit/81d4c71a815ff66ef540a77f223c2ffa31cc2899))
### Reverts
- bump semver-regex and screener-storybook ([#5741](https://github.com/Esri/calcite-components/issues/5741)) ([#5742](https://github.com/Esri/calcite-components/issues/5742)) ([5718b8d](https://github.com/Esri/calcite-components/commit/5718b8d3551426bcbec3d3c289dd04cddf1e1e34))
-
-
## [1.0.0-beta.98](https://github.com/Esri/calcite-components/compare/v1.0.0-beta.97...v1.0.0-beta.98) (2022-11-09)
### Features
@@ -1618,7 +1790,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
### ⚠ BREAKING CHANGES
-**button**: `calcite-button` no longer passes down all of its attributes to its own `button` element. To set an `aria-label` on `calcite-button`'s `button` element, use the `label` attribute now instead of `aria-label`.
+- **button**: `calcite-button` no longer passes down all of its attributes to its own `button` element. To set an `aria-label` on `calcite-button`'s `button` element, use the `label` attribute now instead of `aria-label`.
### Features
diff --git a/FAQ.md b/FAQ.md
index 9fcab4797b5..685916fd8cd 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -61,14 +61,14 @@ The `option` elements are placed in `select`'s _default slot_. Additionally, the
The `calcite-dropdown-item`s are placed in `calcite-dropdown`'s default slot. In many cases a default slot is all that is needed. However, as components become more complicated, the need arises to position and style child components differently. This is where _named slots_ come into play. In the example above, we are passing `calcite-button` into the dropdown's `trigger` slot. This informs the dropdown that the `calcite-button` component should be handled differently than the components in the default slot. If a Calcite Component has slots, they will be listed in the documentation. For example, [here are the slots](https://developers.arcgis.com/calcite-design-system/components/card/#component-api-slots) for `calcite-card`. For a more detailed explanation, I suggest reading the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots#adding_flexibility_with_slots) about slots.
-### How do I change themes?
+### How do I change modes?
-Calcite Components provide light and dark themes which can be changed using CSS classes: `calcite-theme-light` and `calcite-theme-dark`. There is also a `calcite-theme-auto` class which defers to the browser's CSS "prefers-color-scheme" media query to decide whether the light or dark theme will be used.
+Calcite Components provide light and dark modes which can be changed using CSS classes: `calcite-mode-light` and `calcite-mode-dark`. There is also a `calcite-mode-auto` class which defers to the browser's CSS "prefers-color-scheme" media query to decide whether the light or dark mode will be used.
-Setting the theme class on an element changes all of their child nodes as well. Therefore, to switch the whole app from light to dark, we can do the following:
+Setting the mode class on an element changes all of their child nodes as well. Therefore, to switch the whole app from light to dark, we can do the following:
```html
-
+
+## Renderring SVG elements within components
+
+SVGs are visual elements. When rendering them in a component, assess if the SVG has semantic meaning that needs to be described.
+
+If the SVG has no semantic meaning or the semantic meaning is described elsewhere, make sure to set `aria-hidden="true"` on it so that screen readers can ignore it.
+
+If the SVG has some semantic meaning that needs to be described to an end user, set the role to `img` and ensure that it has an `aria-label` or `aria-lablledby`.
+
+More information can be found here: https://www.deque.com/blog/creating-accessible-svgs/
diff --git a/conventions/Accessibility/AccessibilityRoles.md b/conventions/Accessibility/AccessibilityRoles.md
index ac0fe98764e..9c766eb7251 100644
--- a/conventions/Accessibility/AccessibilityRoles.md
+++ b/conventions/Accessibility/AccessibilityRoles.md
@@ -381,12 +381,12 @@ Learn more about the radiogroup role on [W3C](https://www.w3.org/TR/wai-aria-1.1
```html
-What is the study of physical features on Earth?
+What is the study of physical features on Earth?
diff --git a/conventions/Documentation.md b/conventions/Documentation.md
index ff2ca97ca48..ce48d3386a1 100644
--- a/conventions/Documentation.md
+++ b/conventions/Documentation.md
@@ -43,7 +43,7 @@ Each component should use the [Component Story Format (CSF)](https://storybook.j
```ts
import { boolean } from "@storybook/addon-knobs";
-import { themesDarkDefault } from "../../../.storybook/utils";
+import { modesDarkDefault } from "../../../.storybook/utils";
import { storyFilters } from "../../../.storybook/helpers";
import { html } from "../../../support/formatting";
import notes from "./readme.md";
@@ -56,10 +56,10 @@ export default {
export const simple = (): string => html``;
-export const darkThemeRTL_TestOnly = (): string =>
- html``;
+export const darkModeRTL_TestOnly = (): string =>
+ html``;
-darkThemeRTL_TestOnly.parameters = { themes: themesDarkDefault };
+darkModeRTL_TestOnly.parameters = { modes: modesDarkDefault };
```
Make sure to import the README generated by Stencil so that it can be viewed in Storybook. Parent components should also import the READMEs for their children:
@@ -102,8 +102,8 @@ export default {
- Should not have knobs since screenshot tests cannot interact with them
- Stories that are only meant for testing should use the `_TestOnly` suffix, which ensures it is only used for the screenshot test build. For example, if a snapshot with specific properties is needed for testing, it wouldn't need to be included in the playground where knobs can be used to display the state in the `simple` story.
- Stories that are not meant for testing should use the `_NoTest` suffix, which ensures it is only used for the internal playground build. For example, stories that requires interaction not supported by the screenshot test environment, such as changing knobs.
-- The `simple` story and any other significant configuration should have a matching `darkThemeRTL_TestOnly` story
- - In order to reduce snapshot count, dark theme and RTL visual tests have been combined
+- The `simple` story and any other significant configuration should have a matching `darkModeRTL_TestOnly` story
+ - In order to reduce snapshot count, dark mode and RTL visual tests have been combined
### Using utilities
diff --git a/conventions/README.md b/conventions/README.md
index 9c4c66f7d55..4c7012663c2 100644
--- a/conventions/README.md
+++ b/conventions/README.md
@@ -188,7 +188,7 @@ Notice `.card` does not appear anywhere. We would then apply styles to the host
Modifier classes on the "block" (host element) can often be written by reflecting the prop and selecting it directly via an attribute selector:
```scss
-:host([color="blue"]) {
+:host([kind="success"]) {
}
```
diff --git a/conventions/Styling.md b/conventions/Styling.md
index c419dceaa5c..07a398134c0 100644
--- a/conventions/Styling.md
+++ b/conventions/Styling.md
@@ -30,59 +30,18 @@ Add a class to handle the logic in the component class.
}
```
-## Color
+## Light Mode/Dark Mode
-If a component has multiple color themes (for example Blue, Red, Green, and Yellow) representing various state implement a `color` prop and reflect it to an attributes.
-
-```tsx
-enum Colors {
- red = "red",
- blue = "blue",
- green = "green",
- yellow = "yellow",
-}
-
-export class Component {
-
-// ...
-
-@Prop({ reflect: true }) color: Colors = 'blue'
-
-// ...
-```
-
-You can then use the `:host()` selector to define your custom colors:
-
-```scss
-:host([color="blue"]) {
- .something {
- // make it blue
- }
-}
-
-:host([color="red"]) {
- .something {
- // make it red
- }
-}
-```
-
-**Discussed In**:
-
-- https://github.com/Esri/calcite-components/pull/24/files/3446c89010e3ef0421803d68d627aba2e7c4bfa0#r289427838
-
-## Light Theme/Dark Theme
-
-In the [global CSS file](https://github.com/Esri/calcite-components/blob/master/src/assets/styles/global.scss), we specify the values of each color for both light and dark theme. This enables theming to be inherited throughout a component tree. Consider this valid example:
+In the [global CSS file](https://github.com/Esri/calcite-components/blob/master/src/assets/styles/global.scss), we specify the values of each color for both light and dark mode. This enables theming to be inherited throughout a component tree. Consider this valid example:
```html
-
Take action
diff --git a/src/components/alert/alert.tsx b/src/components/alert/alert.tsx
index 1f708610d67..6a566ce31d9 100644
--- a/src/components/alert/alert.tsx
+++ b/src/components/alert/alert.tsx
@@ -15,23 +15,27 @@ import {
import {
getSlotted,
setRequestedIcon,
- toAriaBoolean,
- slotChangeHasAssignedElement
+ slotChangeHasAssignedElement,
+ toAriaBoolean
} from "../../utils/dom";
-import { CSS, DURATIONS, SLOTS } from "./resources";
-import { Scale } from "../interfaces";
-import { AlertDuration, AlertPlacement, StatusColor, StatusIcons, Sync } from "./interfaces";
+import { MenuPlacement } from "../../utils/floating-ui";
import {
- OpenCloseComponent,
- connectOpenCloseComponent,
- disconnectOpenCloseComponent
-} from "../../utils/openCloseComponent";
+ componentLoaded,
+ LoadableComponent,
+ setComponentLoaded,
+ setUpLoadableComponent
+} from "../../utils/loadable";
import {
connectLocalized,
disconnectLocalized,
NumberingSystem,
numberStringFormatter
} from "../../utils/locale";
+import {
+ connectOpenCloseComponent,
+ disconnectOpenCloseComponent,
+ OpenCloseComponent
+} from "../../utils/openCloseComponent";
import {
connectMessages,
disconnectMessages,
@@ -39,13 +43,11 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
-import { Messages } from "./assets/alert/t9n";
-import {
- setUpLoadableComponent,
- setComponentLoaded,
- LoadableComponent,
- componentLoaded
-} from "../../utils/loadable";
+import { Kind, Scale } from "../interfaces";
+import { KindIcons } from "../resources";
+import { AlertMessages } from "./assets/alert/t9n";
+import { AlertDuration, Sync } from "./interfaces";
+import { CSS, DURATIONS, SLOTS } from "./resources";
/**
* Alerts are meant to provide a way to communicate urgent or important information to users, frequently as a result of an action they took in your app. Alerts are positioned
@@ -56,7 +58,7 @@ import {
* @slot title - A slot for adding a title to the component.
* @slot message - A slot for adding main text to the component.
* @slot link - A slot for adding a `calcite-action` to take from the component such as: "undo", "try again", "link to page", etc.
- * @slot actions-end - A slot for adding actions to the end of the component. It is recommended to use two or fewer actions.
+ * @slot actions-end - A slot for adding `calcite-action`s to the end of the component. It is recommended to use two or fewer actions.
*/
@Component({
@@ -100,8 +102,11 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
/** Specifies the duration before the component automatically closes (only use with `autoClose`). */
@Prop({ reflect: true }) autoCloseDuration: AlertDuration = this.autoClose ? "medium" : null;
- /** Specifies the color for the component (will apply to top border and icon). */
- @Prop({ reflect: true }) color: StatusColor = "blue";
+ /** Specifies the kind of the component (will apply to top border and icon). */
+ @Prop({ reflect: true }) kind: Extract<
+ "brand" | "danger" | "info" | "success" | "warning",
+ Kind
+ > = "brand";
/**
* When `true`, shows a default recommended icon. Alternatively,
@@ -109,6 +114,9 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
*/
@Prop({ reflect: true }) icon: string | boolean;
+ /** When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). */
+ @Prop({ reflect: true }) iconFlipRtl = false;
+
/** Specifies an accessible name for the component. */
@Prop() label!: string;
@@ -118,7 +126,7 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
@Prop({ reflect: true }) numberingSystem: NumberingSystem;
/** Specifies the placement of the component */
- @Prop({ reflect: true }) placement: AlertPlacement = "bottom";
+ @Prop({ reflect: true }) placement: MenuPlacement = "bottom";
/** Specifies the size of the component. */
@Prop({ reflect: true }) scale: Scale = "m";
@@ -128,22 +136,30 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: AlertMessages;
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
@Watch("messageOverrides")
onMessagesChange(): void {
/* wired up by t9n util */
}
+ /**
+ * This internal property, managed by a containing calcite-shell, is used
+ * to inform the component if special configuration or styles are needed
+ *
+ * @internal
+ */
+ @Prop({ mutable: true }) slottedInShell: boolean;
+
@Watch("icon")
- @Watch("color")
+ @Watch("kind")
updateRequestedIcon(): void {
- this.requestedIcon = setRequestedIcon(StatusIcons, this.icon, this.color);
+ this.requestedIcon = setRequestedIcon(KindIcons, this.icon, this.kind);
}
@Watch("autoCloseDuration")
@@ -152,7 +168,7 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
window.clearTimeout(this.autoCloseTimeoutId);
this.autoCloseTimeoutId = window.setTimeout(
() => this.closeAlert(),
- DURATIONS[this.autoCloseDuration] - (Date.now() - this.trackTimer)
+ DURATIONS[this.autoCloseDuration]
);
}
}
@@ -176,7 +192,7 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
async componentWillLoad(): Promise {
setUpLoadableComponent(this);
- this.requestedIcon = setRequestedIcon(StatusIcons, this.icon, this.color);
+ this.requestedIcon = setRequestedIcon(KindIcons, this.icon, this.kind);
await setUpMessages(this);
}
@@ -190,6 +206,7 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
disconnectOpenCloseComponent(this);
disconnectLocalized(this);
disconnectMessages(this);
+ this.slottedInShell = false;
}
render(): VNode {
@@ -223,7 +240,7 @@ export class Alert implements OpenCloseComponent, LoadableComponent, T9nComponen
`;
-export const darkThemeRTL_TestOnly = (): string => html`
+export const darkModeRTL_TestOnly = (): string => html`
html`
`;
-darkThemeRTL_TestOnly.parameters = { themes: themesDarkDefault };
+darkModeRTL_TestOnly.parameters = { modes: modesDarkDefault };
+
+export const outlineNeutralBorderColor_TestOnly = (): string =>
+ html`Test`;
diff --git a/src/components/button/button.tsx b/src/components/button/button.tsx
index 92bd41e8534..e3acfb5251d 100644
--- a/src/components/button/button.tsx
+++ b/src/components/button/button.tsx
@@ -1,14 +1,17 @@
+import { Build, Component, Element, h, Method, Prop, State, VNode, Watch } from "@stencil/core";
import "form-request-submit-polyfill/form-request-submit-polyfill";
-import { Component, Element, h, Method, Prop, Build, State, VNode, Watch } from "@stencil/core";
-import { CSS } from "./resources";
import { closestElementCrossShadowBoundary } from "../../utils/dom";
-import { ButtonAlignment, ButtonAppearance, ButtonColor } from "./interfaces";
-import { FlipContext, Scale, Width } from "../interfaces";
-import { LabelableComponent, connectLabel, disconnectLabel, getLabelText } from "../../utils/label";
-import { createObserver } from "../../utils/observers";
+import { FormOwner, resetForm, submitForm } from "../../utils/form";
import { InteractiveComponent, updateHostInteraction } from "../../utils/interactive";
-import { submitForm, resetForm, FormOwner } from "../../utils/form";
+import { connectLabel, disconnectLabel, getLabelText, LabelableComponent } from "../../utils/label";
+import {
+ componentLoaded,
+ LoadableComponent,
+ setComponentLoaded,
+ setUpLoadableComponent
+} from "../../utils/loadable";
import { connectLocalized, disconnectLocalized, LocalizedComponent } from "../../utils/locale";
+import { createObserver } from "../../utils/observers";
import {
connectMessages,
disconnectMessages,
@@ -16,13 +19,10 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
-import { Messages } from "./assets/button/t9n";
-import {
- setUpLoadableComponent,
- setComponentLoaded,
- LoadableComponent,
- componentLoaded
-} from "../../utils/loadable";
+import { Appearance, FlipContext, Kind, Scale, Width } from "../interfaces";
+import { ButtonMessages } from "./assets/button/t9n";
+import { ButtonAlignment } from "./interfaces";
+import { CSS } from "./resources";
/** Passing a 'href' will render an anchor link, instead of a button. Role will be set to link, or button, depending on this. */
/** It is the consumers responsibility to add aria information, rel, target, for links, and any button attributes for form submission */
@@ -61,13 +61,17 @@ export class Button
@Prop({ reflect: true }) alignment: ButtonAlignment = "center";
/** Specifies the appearance style of the component. */
- @Prop({ reflect: true }) appearance: ButtonAppearance = "solid";
+ @Prop({ reflect: true }) appearance: Extract<
+ "outline" | "outline-fill" | "solid" | "transparent",
+ Appearance
+ > = "solid";
/** Accessible name for the component. */
@Prop() label: string;
- /** Specifies the color of the component. */
- @Prop({ reflect: true }) color: ButtonColor = "blue";
+ /** Specifies the kind of the component (will apply to border and background if applicable). */
+ @Prop({ reflect: true }) kind: Extract<"brand" | "danger" | "inverse" | "neutral", Kind> =
+ "brand";
/** When `true`, interaction is prevented and the component is displayed with lower opacity. */
@Prop({ reflect: true }) disabled = false;
@@ -80,7 +84,7 @@ export class Button
/** Specifies an icon to display at the end of the component. */
@Prop({ reflect: true }) iconEnd: string;
- /** When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). */
+ /** Displays the `iconStart` and/or `iconEnd` as flipped when the element direction is right-to-left (`"rtl"`). */
@Prop({ reflect: true }) iconFlipRtl: FlipContext;
/** Specifies an icon to display at the start of the component. */
@@ -101,13 +105,6 @@ export class Button
*/
@Prop({ reflect: true }) rel: string;
- /**
- * The form ID to associate with the component.
- *
- * @deprecated – The property is no longer needed if the component is placed inside a form.
- */
- @Prop() form: string;
-
/** When `true`, adds a round style to the component. */
@Prop({ reflect: true }) round = false;
@@ -139,12 +136,12 @@ export class Button
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: ButtonMessages;
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
@Watch("loading")
loadingChanged(newValue: boolean, oldValue: boolean): void {
@@ -175,10 +172,7 @@ export class Button
this.hasLoader = this.loading;
this.setupTextContentObserver();
connectLabel(this);
- this.formEl = closestElementCrossShadowBoundary(
- this.el,
- this.form ? `#${this.form}` : "form"
- );
+ this.formEl = closestElementCrossShadowBoundary(this.el, "form");
}
disconnectedCallback(): void {
@@ -315,7 +309,7 @@ export class Button
updateMessages(this, this.effectiveLocale);
}
- @State() defaultMessages: Messages;
+ @State() defaultMessages: ButtonMessages;
private updateHasContent() {
const slottedContent = this.el.textContent.trim().length > 0 || this.el.childNodes.length > 0;
diff --git a/src/components/button/interfaces.ts b/src/components/button/interfaces.ts
index 400f21643fe..10642676f27 100644
--- a/src/components/button/interfaces.ts
+++ b/src/components/button/interfaces.ts
@@ -1,5 +1,3 @@
-export type ButtonColor = "blue" | "inverse" | "neutral" | "red";
-export type ButtonAppearance = "solid" | "outline" | "clear" | "transparent" | "minimal";
export type ButtonAlignment =
| "start"
| "end"
diff --git a/src/components/button/readme.md b/src/components/button/readme.md
index 2d635783c80..3903804e0ea 100644
--- a/src/components/button/readme.md
+++ b/src/components/button/readme.md
@@ -7,7 +7,7 @@
### Basic
```html
-Go!
+Go!
```
### Focusing
@@ -34,14 +34,14 @@ Any additional attributes set on `` are passed to the internal `
```html
Back
-Map Options
-Add to favorites
+Delete Map Options
+Add to favorites
```
### With-loader-disabled
```html
-Fetching data...
+Fetching data...Can't touch this
```
@@ -61,28 +61,27 @@ Any additional attributes set on `` are passed to the internal `
## Properties
-| Property | Attribute | Description | Type | Default |
-| ------------------ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------- |
-| `alignment` | `alignment` | Specifies the alignment of the component's elements. | `"center" \| "end" \| "icon-end-space-between" \| "icon-start-space-between" \| "space-between" \| "start"` | `"center"` |
-| `appearance` | `appearance` | Specifies the appearance style of the component. | `"clear" \| "minimal" \| "outline" \| "solid" \| "transparent"` | `"solid"` |
-| `color` | `color` | Specifies the color of the component. | `"blue" \| "inverse" \| "neutral" \| "red"` | `"blue"` |
-| `disabled` | `disabled` | When `true`, interaction is prevented and the component is displayed with lower opacity. | `boolean` | `false` |
-| `form` | `form` | **[DEPRECATED]** – The property is no longer needed if the component is placed inside a form.
The form ID to associate with the component. | `string` | `undefined` |
-| `href` | `href` | Specifies the URL of the linked resource, which can be set as an absolute or relative path. | `string` | `undefined` |
-| `iconEnd` | `icon-end` | Specifies an icon to display at the end of the component. | `string` | `undefined` |
-| `iconFlipRtl` | `icon-flip-rtl` | When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). | `"both" \| "end" \| "start"` | `undefined` |
-| `iconStart` | `icon-start` | Specifies an icon to display at the start of the component. | `string` | `undefined` |
-| `label` | `label` | Accessible name for the component. | `string` | `undefined` |
-| `loading` | `loading` | When `true`, a busy indicator is displayed and interaction is disabled. | `boolean` | `false` |
-| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `Messages` | `undefined` |
-| `name` | `name` | Specifies the name of the component on form submission. | `string` | `undefined` |
-| `rel` | `rel` | Defines the relationship between the `href` value and the current document. | `string` | `undefined` |
-| `round` | `round` | When `true`, adds a round style to the component. | `boolean` | `false` |
-| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
-| `splitChild` | `split-child` | Specifies if the component is a child of a `calcite-split-button`. | `"primary" \| "secondary" \| boolean` | `false` |
-| `target` | `target` | Specifies where to open the linked document defined in the `href` property. | `string` | `undefined` |
-| `type` | `type` | Specifies the default behavior of the button. | `string` | `"button"` |
-| `width` | `width` | Specifies the width of the component. | `"auto" \| "full" \| "half"` | `"auto"` |
+| Property | Attribute | Description | Type | Default |
+| ------------------ | ------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------- |
+| `alignment` | `alignment` | Specifies the alignment of the component's elements. | `"center" \| "end" \| "icon-end-space-between" \| "icon-start-space-between" \| "space-between" \| "start"` | `"center"` |
+| `appearance` | `appearance` | Specifies the appearance style of the component. | `"outline" \| "outline-fill" \| "solid" \| "transparent"` | `"solid"` |
+| `disabled` | `disabled` | When `true`, interaction is prevented and the component is displayed with lower opacity. | `boolean` | `false` |
+| `href` | `href` | Specifies the URL of the linked resource, which can be set as an absolute or relative path. | `string` | `undefined` |
+| `iconEnd` | `icon-end` | Specifies an icon to display at the end of the component. | `string` | `undefined` |
+| `iconFlipRtl` | `icon-flip-rtl` | Displays the `iconStart` and/or `iconEnd` as flipped when the element direction is right-to-left (`"rtl"`). | `"both" \| "end" \| "start"` | `undefined` |
+| `iconStart` | `icon-start` | Specifies an icon to display at the start of the component. | `string` | `undefined` |
+| `kind` | `kind` | Specifies the kind of the component (will apply to border and background if applicable). | `"brand" \| "danger" \| "inverse" \| "neutral"` | `"brand"` |
+| `label` | `label` | Accessible name for the component. | `string` | `undefined` |
+| `loading` | `loading` | When `true`, a busy indicator is displayed and interaction is disabled. | `boolean` | `false` |
+| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `ButtonMessages` | `undefined` |
+| `name` | `name` | Specifies the name of the component on form submission. | `string` | `undefined` |
+| `rel` | `rel` | Defines the relationship between the `href` value and the current document. | `string` | `undefined` |
+| `round` | `round` | When `true`, adds a round style to the component. | `boolean` | `false` |
+| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
+| `splitChild` | `split-child` | Specifies if the component is a child of a `calcite-split-button`. | `"primary" \| "secondary" \| boolean` | `false` |
+| `target` | `target` | Specifies where to open the linked document defined in the `href` property. | `string` | `undefined` |
+| `type` | `type` | Specifies the default behavior of the button. | `string` | `"button"` |
+| `width` | `width` | Specifies the width of the component. | `"auto" \| "full" \| "half"` | `"auto"` |
## Methods
diff --git a/src/components/button/usage/Basic.md b/src/components/button/usage/Basic.md
index d40e7c7072f..ef029cd8c2a 100644
--- a/src/components/button/usage/Basic.md
+++ b/src/components/button/usage/Basic.md
@@ -1,3 +1,3 @@
```html
-Go!
+Go!
```
diff --git a/src/components/button/usage/With-icons.md b/src/components/button/usage/With-icons.md
index 3c0f7fd029e..36eeef28dbb 100644
--- a/src/components/button/usage/With-icons.md
+++ b/src/components/button/usage/With-icons.md
@@ -1,5 +1,5 @@
```html
Back
-Map Options
-Add to favorites
+Delete Map Options
+Add to favorites
```
diff --git a/src/components/button/usage/With-loader-disabled.md b/src/components/button/usage/With-loader-disabled.md
index 3cdd7ff9a03..d2fdefc81b4 100644
--- a/src/components/button/usage/With-loader-disabled.md
+++ b/src/components/button/usage/With-loader-disabled.md
@@ -1,4 +1,4 @@
```html
-Fetching data...
+Fetching data...Can't touch this
```
diff --git a/src/components/card/card.scss b/src/components/card/card.scss
index 41944c0c78c..b608da04a31 100644
--- a/src/components/card/card.scss
+++ b/src/components/card/card.scss
@@ -88,11 +88,11 @@
@apply min-w-full max-w-full;
}
-@include slotted("footer-leading", "*") {
+@include slotted("footer-start", "*") {
@apply text-n2-wrap self-center;
margin-inline-end: auto;
}
-@include slotted("footer-trailing", "*") {
+@include slotted("footer-end", "*") {
@apply text-n2-wrap self-center;
}
@@ -121,7 +121,7 @@
}
}
-slot[name="footer-leading"]::slotted(*),
-slot[name="footer-trailing"]::slotted(*) {
+slot[name="footer-start"]::slotted(*),
+slot[name="footer-end"]::slotted(*) {
@apply flex gap-1;
}
diff --git a/src/components/card/card.stories.ts b/src/components/card/card.stories.ts
index afc97b03bc5..c45d4299b23 100644
--- a/src/components/card/card.stories.ts
+++ b/src/components/card/card.stories.ts
@@ -6,7 +6,7 @@ import {
Attribute,
Attributes,
filterComponentAttributes,
- themesDarkDefault,
+ modesDarkDefault,
createComponentHTML as create
} from "../../../.storybook/utils";
import { storyFilters } from "../../../.storybook/helpers";
@@ -68,13 +68,13 @@ const titleHtml = html`
`;
-const footerButtonHtml = html` Go `;
+const footerButtonHtml = html` Go `;
-const footerLeadingTextHtml = html`Nov 25, 2018`;
+const footerStartTextHtml = html`Nov 25, 2018`;
const footerLinksHtml = html`
- Lead footer
- Trail footer
+ Lead footer
+ Trail footer
`;
const thumbnailHtml = html` `;
-const footerTrailingButtonsHtml = html`
-
${create(
diff --git a/src/components/date-picker/date-picker.tsx b/src/components/date-picker/date-picker.tsx
index a1d74ab88da..98d556e913c 100644
--- a/src/components/date-picker/date-picker.tsx
+++ b/src/components/date-picker/date-picker.tsx
@@ -1,27 +1,31 @@
import {
+ Build,
Component,
- h,
- Prop,
- Event,
Element,
+ Event,
+ EventEmitter,
+ h,
Host,
+ Prop,
State,
- EventEmitter,
- Watch,
VNode,
- Build
+ Watch
} from "@stencil/core";
-import { getLocaleData, DateLocaleData, getValueAsDateRange } from "./utils";
import {
- dateFromRange,
dateFromISO,
+ dateFromRange,
dateToISO,
getDaysDiff,
HoverRange,
setEndOfDay
} from "../../utils/date";
-import { HeadingLevel } from "../functional/Heading";
-import { Messages } from "./assets/date-picker/t9n";
+import {
+ connectLocalized,
+ disconnectLocalized,
+ LocalizedComponent,
+ NumberingSystem,
+ numberStringFormatter
+} from "../../utils/locale";
import {
connectMessages,
disconnectMessages,
@@ -29,20 +33,18 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
+import { HeadingLevel } from "../functional/Heading";
+import { DatePickerMessages } from "./assets/date-picker/t9n";
import { HEADING_LEVEL } from "./resources";
-import {
- connectLocalized,
- disconnectLocalized,
- LocalizedComponent,
- NumberingSystem,
- numberStringFormatter
-} from "../../utils/locale";
+import { DateLocaleData, getLocaleData, getValueAsDateRange } from "./utils";
@Component({
assetsDirs: ["assets"],
tag: "calcite-date-picker",
styleUrl: "date-picker.scss",
- shadow: true
+ shadow: {
+ delegatesFocus: true
+ }
})
export class DatePicker implements LocalizedComponent, T9nComponent {
//--------------------------------------------------------------------------
@@ -87,41 +89,24 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
@Prop({ mutable: true }) valueAsDate: Date | Date[];
@Watch("valueAsDate")
- handleValueAsDate(date: Date | Date[]): void {
- if (!Array.isArray(date) && date && date !== this.activeDate) {
- this.activeDate = date;
+ valueAsDateWatcher(newValueAsDate: Date | Date[]): void {
+ if (this.range && Array.isArray(newValueAsDate)) {
+ const { activeStartDate, activeEndDate } = this;
+ const newActiveStartDate = newValueAsDate[0];
+ const newActiveEndDate = newValueAsDate[1];
+ this.activeStartDate = activeStartDate !== newActiveStartDate && newActiveStartDate;
+ this.activeEndDate = activeEndDate !== newActiveEndDate && newActiveEndDate;
+ } else if (newValueAsDate && newValueAsDate !== this.activeDate) {
+ this.activeDate = newValueAsDate as Date;
}
}
- /**
- * Specifies the selected start date as a full date object.
- *
- * @deprecated use `valueAsDate` instead.
- */
- @Prop({ mutable: true }) startAsDate: Date;
-
- /**
- * Specifies the selected end date as a full date object.
- *
- * @deprecated use `valueAsDate` instead.
- */
- @Prop({ mutable: true }) endAsDate: Date;
-
/** Specifies the earliest allowed date as a full date object (`new Date("yyyy-mm-dd")`). */
@Prop({ mutable: true }) minAsDate: Date;
/** Specifies the latest allowed date as a full date object (`new Date("yyyy-mm-dd")`). */
@Prop({ mutable: true }) maxAsDate: Date;
- @Watch("startAsDate")
- @Watch("endAsDate")
- handleRangeChange(): void {
- const { startAsDate: startDate, endAsDate: endDate } = this;
-
- this.activeEndDate = endDate;
- this.activeStartDate = startDate;
- }
-
/** Specifies the earliest allowed date (`"yyyy-mm-dd"`). */
@Prop({ mutable: true, reflect: true }) min: string;
@@ -160,14 +145,14 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
/**
* Made into a prop for testing purposes only
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: DatePickerMessages;
@Watch("messageOverrides")
onMessagesChange(): void {
@@ -186,8 +171,6 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
/**
* Emits when a user changes the component's date `range`. For components without `range` use `calciteDatePickerChange`.
- *
- * @see [DateRangeChange](https://github.com/Esri/calcite-components/blob/master/src/components/date-picker/interfaces.ts#L1)
*/
@Event({ cancelable: false }) calciteDatePickerRangeChange: EventEmitter;
@@ -201,6 +184,10 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
*/
@State() activeEndDate: Date;
+ @State() startAsDate: Date;
+
+ @State() endAsDate: Date;
+
// --------------------------------------------------------------------------
//
// Lifecycle
@@ -293,7 +280,7 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
updateMessages(this, this.effectiveLocale);
}
- @State() defaultMessages: Messages;
+ @State() defaultMessages: DatePickerMessages;
@State() private localeData: DateLocaleData;
@@ -366,20 +353,25 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
};
monthHoverChange = (event: CustomEvent): void => {
- if (!this.startAsDate) {
+ if (!this.range) {
this.hoverRange = undefined;
return;
}
+
+ const { valueAsDate } = this;
+ const start = Array.isArray(valueAsDate) && valueAsDate[0];
+ const end = Array.isArray(valueAsDate) && valueAsDate[1];
+
const date = new Date(event.detail);
this.hoverRange = {
focused: this.activeRange || "start",
- start: this.startAsDate,
- end: this.endAsDate
+ start,
+ end
};
if (!this.proximitySelectionDisabled) {
- if (this.endAsDate) {
- const startDiff = getDaysDiff(date, this.startAsDate);
- const endDiff = getDaysDiff(date, this.endAsDate);
+ if (end) {
+ const startDiff = getDaysDiff(date, start);
+ const endDiff = getDaysDiff(date, end);
if (endDiff > 0) {
this.hoverRange.end = date;
this.hoverRange.focused = "end";
@@ -394,11 +386,11 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
this.hoverRange.focused = "end";
}
} else {
- if (date < this.startAsDate) {
+ if (date < start) {
this.hoverRange = {
focused: "start",
start: date,
- end: this.startAsDate
+ end: start
};
} else {
this.hoverRange.end = date;
@@ -406,12 +398,12 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
}
}
} else {
- if (!this.endAsDate) {
- if (date < this.startAsDate) {
+ if (!end) {
+ if (date < start) {
this.hoverRange = {
focused: "start",
start: date,
- end: this.startAsDate
+ end: start
};
} else {
this.hoverRange.end = date;
@@ -455,7 +447,7 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
max={maxDate}
messages={this.messages}
min={minDate}
- onCalciteDatePickerSelect={this.monthHeaderSelectChange}
+ onCalciteInternalDatePickerSelect={this.monthHeaderSelectChange}
scale={this.scale}
selectedDate={this.activeRange === "end" ? endDate : date || new Date()}
/>,
@@ -466,10 +458,10 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
localeData={this.localeData}
max={maxDate}
min={minDate}
- onCalciteDatePickerActiveDateChange={this.monthActiveDateChange}
- onCalciteDatePickerSelect={this.monthDateChange}
+ onCalciteInternalDatePickerActiveDateChange={this.monthActiveDateChange}
onCalciteInternalDatePickerHover={this.monthHoverChange}
onCalciteInternalDatePickerMouseOut={this.monthMouseOutChange}
+ onCalciteInternalDatePickerSelect={this.monthDateChange}
scale={this.scale}
selectedDate={this.activeRange === "end" ? endDate : date}
startDate={this.range ? date : undefined}
@@ -478,60 +470,60 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
);
}
- /**
- * Update date instance of start if valid
- *
- * @param startDate
- * @param emit
- */
- private setStartAsDate(startDate: Date, emit?: boolean): void {
- this.startAsDate = startDate;
- this.mostRecentRangeValue = this.startAsDate;
- if (emit) {
- this.calciteDatePickerRangeChange.emit();
- }
- }
-
- /**
- * Update date instance of end if valid
- *
- * @param endDate
- * @param emit
- */
- private setEndAsDate(endDate: Date, emit?: boolean): void {
- this.endAsDate = endDate ? setEndOfDay(endDate) : endDate;
- this.mostRecentRangeValue = this.endAsDate;
- if (emit) {
- this.calciteDatePickerRangeChange.emit();
- }
- }
-
/**
* Reset active date and close
*/
reset = (): void => {
+ const { valueAsDate } = this;
if (
- !Array.isArray(this.valueAsDate) &&
- this.valueAsDate &&
- this.valueAsDate?.getTime() !== this.activeDate?.getTime()
+ !Array.isArray(valueAsDate) &&
+ valueAsDate &&
+ valueAsDate?.getTime() !== this.activeDate?.getTime()
) {
- this.activeDate = new Date(this.valueAsDate);
+ this.activeDate = new Date(valueAsDate);
}
- if (this.startAsDate && this.startAsDate?.getTime() !== this.activeStartDate?.getTime()) {
- this.activeStartDate = new Date(this.startAsDate);
- }
- if (this.endAsDate && this.endAsDate?.getTime() !== this.activeEndDate?.getTime()) {
- this.activeEndDate = new Date(this.endAsDate);
+ if (Array.isArray(valueAsDate)) {
+ if (
+ valueAsDate[0] &&
+ valueAsDate[0]?.getTime() !==
+ (this.activeStartDate instanceof Date && this.activeStartDate?.getTime())
+ ) {
+ this.activeStartDate = new Date(valueAsDate[0]);
+ }
+ if (
+ valueAsDate[1] &&
+ valueAsDate[1]?.getTime() !==
+ (this.activeStartDate instanceof Date && this.activeEndDate?.getTime())
+ ) {
+ this.activeEndDate = new Date(valueAsDate[1]);
+ }
}
};
+ private getEndDate(): Date {
+ return (Array.isArray(this.valueAsDate) && this.valueAsDate[1]) || undefined;
+ }
+
private setEndDate(date: Date): void {
- this.setEndAsDate(date, true);
+ const startDate = this.getStartDate();
+ const newEndDate = date ? setEndOfDay(date) : date;
+ this.value = [dateToISO(startDate), dateToISO(date)];
+ this.valueAsDate = [startDate, date];
+ this.mostRecentRangeValue = newEndDate;
+ this.calciteDatePickerRangeChange.emit();
this.activeEndDate = date || null;
}
+ private getStartDate(): Date {
+ return Array.isArray(this.valueAsDate) && this.valueAsDate[0];
+ }
+
private setStartDate(date: Date): void {
- this.setStartAsDate(date, true);
+ const endDate = this.getEndDate();
+ this.value = [dateToISO(date), dateToISO(endDate)];
+ this.valueAsDate = [date, endDate];
+ this.mostRecentRangeValue = date;
+ this.calciteDatePickerRangeChange.emit();
this.activeStartDate = date || null;
}
@@ -556,16 +548,19 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
return;
}
- if (!this.startAsDate || (!this.endAsDate && date < this.startAsDate)) {
- if (this.startAsDate) {
- this.setEndDate(new Date(this.startAsDate));
+ const start = this.getStartDate();
+ const end = this.getEndDate();
+
+ if (!start || (!end && date < start)) {
+ if (start) {
+ this.setEndDate(new Date(start));
}
if (this.activeRange == "end") {
this.setEndDate(date);
} else {
this.setStartDate(date);
}
- } else if (!this.endAsDate) {
+ } else if (!end) {
this.setEndDate(date);
} else {
if (!this.proximitySelectionDisabled) {
@@ -576,8 +571,8 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
this.setStartDate(date);
}
} else {
- const startDiff = getDaysDiff(date, this.startAsDate);
- const endDiff = getDaysDiff(date, this.endAsDate);
+ const startDiff = getDaysDiff(date, start);
+ const endDiff = getDaysDiff(date, end);
if (endDiff === 0 || startDiff < 0) {
this.setStartDate(date);
} else if (startDiff === 0 || endDiff < 0) {
@@ -590,7 +585,6 @@ export class DatePicker implements LocalizedComponent, T9nComponent {
}
} else {
this.setStartDate(date);
- this.endAsDate = this.activeEndDate = undefined;
}
}
this.calciteDatePickerChange.emit();
diff --git a/src/components/date-picker/interfaces.d.ts b/src/components/date-picker/interfaces.d.ts
deleted file mode 100644
index 2b3c1d29c8c..00000000000
--- a/src/components/date-picker/interfaces.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// @deprecated remove this file before 1.0
-export interface DateRangeChange {
- startDate: Date;
- endDate: Date;
-}
diff --git a/src/components/date-picker/readme.md b/src/components/date-picker/readme.md
index 3a64dab920f..2d9a4fefd58 100644
--- a/src/components/date-picker/readme.md
+++ b/src/components/date-picker/readme.md
@@ -28,18 +28,16 @@ You can also add range property to activate date range mode. In this mode, you w
| ---------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `activeDate` | -- | Specifies the component's active date. | `Date` | `undefined` |
| `activeRange` | `active-range` | When `range` is true, specifies the active `range`. Where `"start"` specifies the starting range date and `"end"` the ending range date. | `"end" \| "start"` | `undefined` |
-| `endAsDate` | -- | **[DEPRECATED]** use `valueAsDate` instead.
Specifies the selected end date as a full date object. | `Date` | `undefined` |
| `headingLevel` | `heading-level` | Specifies the number at which section headings should start. | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `undefined` |
| `max` | `max` | Specifies the latest allowed date (`"yyyy-mm-dd"`). | `string` | `undefined` |
| `maxAsDate` | -- | Specifies the latest allowed date as a full date object (`new Date("yyyy-mm-dd")`). | `Date` | `undefined` |
-| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `Messages` | `undefined` |
+| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `DatePickerMessages` | `undefined` |
| `min` | `min` | Specifies the earliest allowed date (`"yyyy-mm-dd"`). | `string` | `undefined` |
| `minAsDate` | -- | Specifies the earliest allowed date as a full date object (`new Date("yyyy-mm-dd")`). | `Date` | `undefined` |
| `numberingSystem` | `numbering-system` | Specifies the Unicode numeral system used by the component for localization. This property cannot be dynamically changed. | `"arab" \| "arabext" \| "bali" \| "beng" \| "deva" \| "fullwide" \| "gujr" \| "guru" \| "hanidec" \| "khmr" \| "knda" \| "laoo" \| "latn" \| "limb" \| "mlym" \| "mong" \| "mymr" \| "orya" \| "tamldec" \| "telu" \| "thai" \| "tibt"` | `undefined` |
| `proximitySelectionDisabled` | `proximity-selection-disabled` | When `true`, disables the default behavior on the third click of narrowing or extending the range and instead starts a new range. | `boolean` | `false` |
| `range` | `range` | When `true`, activates the component's range mode to allow a start and end date. | `boolean` | `false` |
| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
-| `startAsDate` | -- | **[DEPRECATED]** use `valueAsDate` instead.
`;
-darkThemeRTL_TestOnly.parameters = { themes: themesDarkDefault };
+darkModeRTL_TestOnly.parameters = { modes: modesDarkDefault };
diff --git a/src/components/notice/notice.tsx b/src/components/notice/notice.tsx
index e6ca678a38d..5dfc627488b 100644
--- a/src/components/notice/notice.tsx
+++ b/src/components/notice/notice.tsx
@@ -10,15 +10,18 @@ import {
VNode,
Watch
} from "@stencil/core";
-import { CSS, SLOTS } from "./resources";
-import { Scale, Width } from "../interfaces";
-import { StatusColor, StatusIcons } from "../alert/interfaces";
-import { getSlotted, setRequestedIcon } from "../../utils/dom";
import {
ConditionalSlotComponent,
connectConditionalSlotComponent,
disconnectConditionalSlotComponent
} from "../../utils/conditionalSlot";
+import { getSlotted, setRequestedIcon } from "../../utils/dom";
+import {
+ componentLoaded,
+ LoadableComponent,
+ setComponentLoaded,
+ setUpLoadableComponent
+} from "../../utils/loadable";
import { connectLocalized, disconnectLocalized, LocalizedComponent } from "../../utils/locale";
import {
connectMessages,
@@ -27,26 +30,23 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
-import { Messages } from "./assets/notice/t9n";
-import {
- setUpLoadableComponent,
- setComponentLoaded,
- LoadableComponent,
- componentLoaded
-} from "../../utils/loadable";
+import { Kind, Scale, Width } from "../interfaces";
+import { KindIcons } from "../resources";
+import { NoticeMessages } from "./assets/notice/t9n";
+import { CSS, SLOTS } from "./resources";
/**
* Notices are intended to be used to present users with important-but-not-crucial contextual tips or copy. Because
* notices are displayed inline, a common use case is displaying them on page-load to present users with short hints or contextual copy.
- * They are optionally dismissible - useful for keeping track of whether or not a user has dismissed the notice. You can also choose not
+ * They are optionally closable - useful for keeping track of whether or not a user has closed the notice. You can also choose not
* to display a notice on page load and set the "active" attribute as needed to contextually provide inline messaging to users.
*/
/**
* @slot title - A slot for adding the title.
* @slot message - A slot for adding the message.
- * @slot link - A slot for adding actions to take, such as: undo, try again, link to page, etc.
- * @slot actions-end - A slot for adding actions to the end of the component. It is recommended to use two or less actions.
+ * @slot link - A slot for adding a `calcite-action` to take, such as: "undo", "try again", "link to page", etc.
+ * @slot actions-end - A slot for adding `calcite-action`s to the end of the component. It is recommended to use two or less actions.
*/
@Component({
@@ -72,61 +72,25 @@ export class Notice
//
//---------------------------------------------------------------------------
- /**
- * When `true`, the component is active.
- *
- * @deprecated Use `open` instead.
- */
- @Prop({ reflect: true, mutable: true }) active = false;
-
- @Watch("active")
- activeHandler(value: boolean): void {
- this.open = value;
- }
-
/** When `true`, the component is visible. */
@Prop({ reflect: true, mutable: true }) open = false;
- @Watch("open")
- openHandler(value: boolean): void {
- this.active = value;
- }
-
- /** The color for the component's top border and icon. */
- @Prop({ reflect: true }) color: StatusColor = "blue";
-
- /**
- * When `true`, a close button is added to the component.
- *
- * @deprecated use `closable` instead.
- */
- @Prop({ reflect: true }) dismissible = false;
-
- @Watch("dismissible")
- handleDismissible(value: boolean): void {
- this.closable = value;
- }
+ /** Specifies the kind of the component (will apply to top border and icon). */
+ @Prop({ reflect: true }) kind: Extract<
+ "brand" | "danger" | "info" | "success" | "warning",
+ Kind
+ > = "brand";
/** When `true`, a close button is added to the component. */
@Prop({ reflect: true }) closable = false;
- @Watch("closable")
- handleClosable(value: boolean): void {
- this.dismissible = value;
- }
-
/**
* When `true`, shows a default recommended icon. Alternatively, pass a Calcite UI Icon name to display a specific icon.
*/
@Prop({ reflect: true }) icon: string | boolean;
- /**
- * Accessible name for the close button.
- *
- * @default "Close"
- * @deprecated – translations are now built-in, if you need to override a string, please use `messageOverrides`.
- */
- @Prop({ reflect: false }) intlClose: string;
+ /** When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). */
+ @Prop({ reflect: true }) iconFlipRtl = false;
/** Specifies the size of the component. */
@Prop({ reflect: true }) scale: Scale = "m";
@@ -139,23 +103,22 @@ export class Notice
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: NoticeMessages;
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
- @Watch("intlClose")
@Watch("messageOverrides")
onMessagesChange(): void {
/* wired up by t9n util */
}
@Watch("icon")
- @Watch("color")
+ @Watch("kind")
updateRequestedIcon(): void {
- this.requestedIcon = setRequestedIcon(StatusIcons, this.icon, this.color);
+ this.requestedIcon = setRequestedIcon(KindIcons, this.icon, this.kind);
}
//--------------------------------------------------------------------------
@@ -168,19 +131,6 @@ export class Notice
connectConditionalSlotComponent(this);
connectLocalized(this);
connectMessages(this);
-
- const isOpen = this.active || this.open;
-
- if (isOpen) {
- this.activeHandler(isOpen);
- this.openHandler(isOpen);
- }
- if (this.dismissible) {
- this.handleDismissible(this.dismissible);
- }
- if (this.closable) {
- this.handleClosable(this.closable);
- }
}
disconnectedCallback(): void {
@@ -191,7 +141,7 @@ export class Notice
async componentWillLoad(): Promise {
setUpLoadableComponent(this);
- this.requestedIcon = setRequestedIcon(StatusIcons, this.icon, this.color);
+ this.requestedIcon = setRequestedIcon(KindIcons, this.icon, this.kind);
await setUpMessages(this);
}
@@ -218,7 +168,11 @@ export class Notice
{this.requestedIcon ? (
-
+
) : null}
@@ -254,7 +208,7 @@ export class Notice
//
//--------------------------------------------------------------------------
- /** Sets focus on the component. */
+ /** Sets focus on the component's first focusable element. */
@Method()
async setFocus(): Promise {
await componentLoaded(this);
@@ -300,5 +254,5 @@ export class Notice
updateMessages(this, this.effectiveLocale);
}
- @State() defaultMessages: Messages;
+ @State() defaultMessages: NoticeMessages;
}
diff --git a/src/components/notice/readme.md b/src/components/notice/readme.md
index da487a76e4d..43e35ab6863 100644
--- a/src/components/notice/readme.md
+++ b/src/components/notice/readme.md
@@ -7,7 +7,7 @@
### Basic
```html
-
+
Something failed
That thing you wanted to do didn't work as expected
View details
@@ -25,18 +25,16 @@ You can programmatically focus the close button of a `dismissible` `calcite-noti
## Properties
-| Property | Attribute | Description | Type | Default |
-| ------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------- | ----------- |
-| `active` | `active` | **[DEPRECATED]** Use `open` instead.
When `true`, the component is active. | `boolean` | `false` |
-| `closable` | `closable` | When `true`, a close button is added to the component. | `boolean` | `false` |
-| `color` | `color` | The color for the component's top border and icon. | `"blue" \| "green" \| "red" \| "yellow"` | `"blue"` |
-| `dismissible` | `dismissible` | **[DEPRECATED]** use `closable` instead.
When `true`, a close button is added to the component. | `boolean` | `false` |
-| `icon` | `icon` | When `true`, shows a default recommended icon. Alternatively, pass a Calcite UI Icon name to display a specific icon. | `boolean \| string` | `undefined` |
-| `intlClose` | `intl-close` | **[DEPRECATED]** – translations are now built-in, if you need to override a string, please use `messageOverrides`.
Accessible name for the close button. | `string` | `undefined` |
-| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `Messages` | `undefined` |
-| `open` | `open` | When `true`, the component is visible. | `boolean` | `false` |
-| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
-| `width` | `width` | Specifies the width of the component. | `"auto" \| "full" \| "half"` | `"auto"` |
+| Property | Attribute | Description | Type | Default |
+| ------------------ | ------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ----------- |
+| `closable` | `closable` | When `true`, a close button is added to the component. | `boolean` | `false` |
+| `icon` | `icon` | When `true`, shows a default recommended icon. Alternatively, pass a Calcite UI Icon name to display a specific icon. | `boolean \| string` | `undefined` |
+| `iconFlipRtl` | `icon-flip-rtl` | When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). | `boolean` | `false` |
+| `kind` | `kind` | Specifies the kind of the component (will apply to top border and icon). | `"brand" \| "danger" \| "info" \| "success" \| "warning"` | `"brand"` |
+| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `NoticeMessages` | `undefined` |
+| `open` | `open` | When `true`, the component is visible. | `boolean` | `false` |
+| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
+| `width` | `width` | Specifies the width of the component. | `"auto" \| "full" \| "half"` | `"auto"` |
## Events
@@ -49,7 +47,7 @@ You can programmatically focus the close button of a `dismissible` `calcite-noti
### `setFocus() => Promise`
-Sets focus on the component.
+Sets focus on the component's first focusable element.
#### Returns
@@ -57,12 +55,12 @@ Type: `Promise`
## Slots
-| Slot | Description |
-| --------------- | ---------------------------------------------------------------------------------------------------- |
-| `"actions-end"` | A slot for adding actions to the end of the component. It is recommended to use two or less actions. |
-| `"link"` | A slot for adding actions to take, such as: undo, try again, link to page, etc. |
-| `"message"` | A slot for adding the message. |
-| `"title"` | A slot for adding the title. |
+| Slot | Description |
+| --------------- | -------------------------------------------------------------------------------------------------------------- |
+| `"actions-end"` | A slot for adding `calcite-action`s to the end of the component. It is recommended to use two or less actions. |
+| `"link"` | A slot for adding a `calcite-action` to take, such as: "undo", "try again", "link to page", etc. |
+| `"message"` | A slot for adding the message. |
+| `"title"` | A slot for adding the title. |
## CSS Custom Properties
diff --git a/src/components/notice/usage/Basic.md b/src/components/notice/usage/Basic.md
index 46da42ddc17..d629c1821ae 100644
--- a/src/components/notice/usage/Basic.md
+++ b/src/components/notice/usage/Basic.md
@@ -1,5 +1,5 @@
```html
-
+
Something failed
That thing you wanted to do didn't work as expected
View details
diff --git a/src/components/option-group/option-group.tsx b/src/components/option-group/option-group.tsx
index 73143440714..6eb031d36fb 100644
--- a/src/components/option-group/option-group.tsx
+++ b/src/components/option-group/option-group.tsx
@@ -1,4 +1,4 @@
-import { Component, h, Prop, VNode, Watch, Event, EventEmitter, Fragment } from "@stencil/core";
+import { Component, Event, EventEmitter, Fragment, h, Prop, VNode, Watch } from "@stencil/core";
/**
* @slot - A slot for adding `calcite-option`s.
diff --git a/src/components/option/option.tsx b/src/components/option/option.tsx
index bdafce03e4f..babd4824d4d 100644
--- a/src/components/option/option.tsx
+++ b/src/components/option/option.tsx
@@ -1,4 +1,4 @@
-import { Component, h, Prop, VNode, Element, EventEmitter, Event, Watch } from "@stencil/core";
+import { Component, Element, Event, EventEmitter, h, Prop, VNode, Watch } from "@stencil/core";
import { createObserver } from "../../utils/observers";
@Component({
diff --git a/src/components/pagination/pagination.scss b/src/components/pagination/pagination.scss
index 44f72027e69..470b76c09d6 100644
--- a/src/components/pagination/pagination.scss
+++ b/src/components/pagination/pagination.scss
@@ -1,14 +1,5 @@
-/**
- * CSS Custom Properties
- *
- * These properties can be overridden using the component's tag as selector.
- *
- * @prop --calcite-pagination-spacing: The amount of padding around each pagination item.
- */
-
-// explicit px values until we add a spacing unit and new font scale to base
:host([scale="s"]) {
- --calcite-pagination-spacing: theme("spacing.1") theme("spacing.2");
+ --calcite-pagination-spacing-internal: theme("spacing.1") theme("spacing.2");
& .previous,
& .next,
& .page {
@@ -21,7 +12,7 @@
}
:host([scale="m"]) {
- --calcite-pagination-spacing: theme("spacing.2") theme("spacing.3");
+ --calcite-pagination-spacing-internal: theme("spacing.2") theme("spacing.3");
& .previous,
& .next,
& .page {
@@ -34,7 +25,7 @@
}
:host([scale="l"]) {
- --calcite-pagination-spacing: theme("spacing.3") theme("spacing.4");
+ --calcite-pagination-spacing-internal: theme("spacing.3") theme("spacing.4");
& .previous,
& .next,
& .page {
@@ -106,7 +97,7 @@
}
.page,
.ellipsis {
- padding: var(--calcite-pagination-spacing);
+ padding: var(--calcite-pagination-spacing-internal);
}
.ellipsis {
@apply text-color-3 flex items-end;
diff --git a/src/components/pagination/pagination.stories.ts b/src/components/pagination/pagination.stories.ts
index 8ac4edcce2f..7e09d6ac074 100644
--- a/src/components/pagination/pagination.stories.ts
+++ b/src/components/pagination/pagination.stories.ts
@@ -1,6 +1,6 @@
import { number, select } from "@storybook/addon-knobs";
import { locales } from "../../utils/locale";
-import { themesDarkDefault } from "../../../.storybook/utils";
+import { modesDarkDefault } from "../../../.storybook/utils";
import readme from "./readme.md";
import { html } from "../../../support/formatting";
import { storyFilters } from "../../../.storybook/helpers";
@@ -27,8 +27,8 @@ export const simple = (): string => html`
`;
-export const darkThemeFrenchLocale_TestOnly = (): string => html` html` html``;
-darkThemeFrenchLocale_TestOnly.parameters = { themes: themesDarkDefault };
+darkModeFrenchLocale_TestOnly.parameters = { modes: modesDarkDefault };
export const arabicNumberingSystemAndRTL_TestOnly = (): string => html` html``;
+
+arabicNumberingSystemAndRTL_TestOnly.parameters = {
+ chromatic: { diffThreshold: 1 }
+};
diff --git a/src/components/pagination/pagination.tsx b/src/components/pagination/pagination.tsx
index 713f8cb201a..2d343ef5260 100644
--- a/src/components/pagination/pagination.tsx
+++ b/src/components/pagination/pagination.tsx
@@ -3,24 +3,21 @@ import {
Element,
Event,
EventEmitter,
+ Fragment,
h,
- Prop,
Method,
- VNode,
- Fragment,
+ Prop,
State,
+ VNode,
Watch
} from "@stencil/core";
-import { Scale } from "../interfaces";
import {
connectLocalized,
disconnectLocalized,
LocalizedComponent,
- numberStringFormatter,
- NumberingSystem
+ NumberingSystem,
+ numberStringFormatter
} from "../../utils/locale";
-import { CSS } from "./resources";
-import { Messages } from "./assets/pagination/t9n";
import {
connectMessages,
disconnectMessages,
@@ -28,6 +25,9 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
+import { Scale } from "../interfaces";
+import { PaginationMessages } from "./assets/pagination/t9n";
+import { CSS } from "./resources";
const maxPagesDisplayed = 5;
export interface PaginationDetail {
@@ -39,7 +39,9 @@ export interface PaginationDetail {
@Component({
tag: "calcite-pagination",
styleUrl: "pagination.scss",
- shadow: true,
+ shadow: {
+ delegatesFocus: true
+ },
assetsDirs: ["assets"]
})
export class Pagination implements LocalizedComponent, LocalizedComponent, T9nComponent {
@@ -57,29 +59,13 @@ export class Pagination implements LocalizedComponent, LocalizedComponent, T9nCo
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
- @Watch("textLabelNext")
- @Watch("textLabelPrevious")
@Watch("messageOverrides")
onMessagesChange(): void {
/* wired up by t9n util */
}
- getExtraMessageOverrides(): Partial {
- const extraOverrides: Partial = {};
-
- if (this.textLabelNext) {
- extraOverrides.next = this.textLabelNext;
- }
-
- if (this.textLabelPrevious) {
- extraOverrides.previous = this.textLabelPrevious;
- }
-
- return extraOverrides;
- }
-
/** Specifies the number of items per page. */
@Prop({ reflect: true }) num = 20;
@@ -94,20 +80,6 @@ export class Pagination implements LocalizedComponent, LocalizedComponent, T9nCo
/** Specifies the total number of items. */
@Prop({ reflect: true }) total = 0;
- /**
- * Accessible name for the component's next button.
- *
- * @deprecated – translations are now built-in, if you need to override a string, please use `messageOverrides`
- */
- @Prop() textLabelNext: string;
-
- /**
- * Accessible name for the component's previous button.
- *
- * @deprecated – translations are now built-in, if you need to override a string, please use `messageOverrides`
- */
- @Prop() textLabelPrevious: string;
-
/** Specifies the size of the component. */
@Prop({ reflect: true }) scale: Scale = "m";
@@ -124,7 +96,7 @@ export class Pagination implements LocalizedComponent, LocalizedComponent, T9nCo
//
//--------------------------------------------------------------------------
- @State() defaultMessages: Messages;
+ @State() defaultMessages: PaginationMessages;
@State() effectiveLocale = "";
@@ -147,7 +119,7 @@ export class Pagination implements LocalizedComponent, LocalizedComponent, T9nCo
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: PaginationMessages;
//--------------------------------------------------------------------------
//
diff --git a/src/components/pagination/readme.md b/src/components/pagination/readme.md
index 86d1fc37efe..83e039df786 100644
--- a/src/components/pagination/readme.md
+++ b/src/components/pagination/readme.md
@@ -27,23 +27,21 @@ For example, after querying the search API, you'll get back a response similar t
## Properties
-| Property | Attribute | Description | Type | Default |
-| ------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
-| `groupSeparator` | `group-separator` | When `true`, number values are displayed with a group separator corresponding to the language and country format. | `boolean` | `false` |
-| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `Messages` | `undefined` |
-| `num` | `num` | Specifies the number of items per page. | `number` | `20` |
-| `numberingSystem` | `numbering-system` | Specifies the Unicode numeral system used by the component for localization. | `"arab" \| "arabext" \| "bali" \| "beng" \| "deva" \| "fullwide" \| "gujr" \| "guru" \| "hanidec" \| "khmr" \| "knda" \| "laoo" \| "latn" \| "limb" \| "mlym" \| "mong" \| "mymr" \| "orya" \| "tamldec" \| "telu" \| "thai" \| "tibt"` | `undefined` |
-| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
-| `start` | `start` | Specifies the starting item number. | `number` | `1` |
-| `textLabelNext` | `text-label-next` | **[DEPRECATED]** – translations are now built-in, if you need to override a string, please use `messageOverrides`
Accessible name for the component's next button. | `string` | `undefined` |
-| `textLabelPrevious` | `text-label-previous` | **[DEPRECATED]** – translations are now built-in, if you need to override a string, please use `messageOverrides`
Accessible name for the component's previous button. | `string` | `undefined` |
-| `total` | `total` | Specifies the total number of items. | `number` | `0` |
+| Property | Attribute | Description | Type | Default |
+| ------------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
+| `groupSeparator` | `group-separator` | When `true`, number values are displayed with a group separator corresponding to the language and country format. | `boolean` | `false` |
+| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `PaginationMessages` | `undefined` |
+| `num` | `num` | Specifies the number of items per page. | `number` | `20` |
+| `numberingSystem` | `numbering-system` | Specifies the Unicode numeral system used by the component for localization. | `"arab" \| "arabext" \| "bali" \| "beng" \| "deva" \| "fullwide" \| "gujr" \| "guru" \| "hanidec" \| "khmr" \| "knda" \| "laoo" \| "latn" \| "limb" \| "mlym" \| "mong" \| "mymr" \| "orya" \| "tamldec" \| "telu" \| "thai" \| "tibt"` | `undefined` |
+| `scale` | `scale` | Specifies the size of the component. | `"l" \| "m" \| "s"` | `"m"` |
+| `start` | `start` | Specifies the starting item number. | `number` | `1` |
+| `total` | `total` | Specifies the total number of items. | `number` | `0` |
## Events
-| Event | Description | Type |
-| ------------------------- | ------------------------------------- | ------------------------------- |
-| `calcitePaginationChange` | Emits when the selected page changes. | `CustomEvent` |
+| Event | Description | Type |
+| ------------------------- | ------------------------------------- | ------------------- |
+| `calcitePaginationChange` | Emits when the selected page changes. | `CustomEvent` |
## Methods
@@ -63,12 +61,6 @@ Go to the previous page of results.
Type: `Promise`
-## CSS Custom Properties
-
-| Name | Description |
-| ------------------------------ | -------------------------------------------------- |
-| `--calcite-pagination-spacing` | The amount of padding around each pagination item. |
-
## Dependencies
### Depends on
diff --git a/src/components/panel/panel.e2e.ts b/src/components/panel/panel.e2e.ts
index 0175ce19d1b..08e3494d827 100644
--- a/src/components/panel/panel.e2e.ts
+++ b/src/components/panel/panel.e2e.ts
@@ -1,6 +1,6 @@
import { newE2EPage } from "@stencil/core/testing";
-import { accessible, defaults, disabled, focusable, hidden, renders, slots, t9n } from "../../tests/commonTests";
import { html } from "../../../support/formatting";
+import { accessible, defaults, disabled, focusable, hidden, renders, slots, t9n } from "../../tests/commonTests";
import { CSS, SLOTS } from "./resources";
const panelTemplate = (scrollable = false) => html`
@@ -213,47 +213,6 @@ describe("calcite-panel", () => {
expect(await footer.isVisible()).toBe(false);
});
- it("should update width based on the multipier CSS variable", async () => {
- const multipier = 2;
-
- const page = await newE2EPage();
- await page.setViewport({ width: 1600, height: 1200 });
-
- await page.setContent(`
-
- test
-
- `);
-
- await page.waitForChanges();
-
- const content = await page.find(`calcite-panel >>> .${CSS.container}`);
- const style = await content.getComputedStyle("width");
- const widthDefault = parseFloat(style["width"]);
-
- const page2 = await newE2EPage();
- await page2.setViewport({ width: 1600, height: 1200 });
-
- await page2.setContent(`
-
-
- test multiplied
-
- `);
-
- await page2.waitForChanges();
-
- const content2 = await page2.find(`calcite-panel >>> .${CSS.container}`);
- const style2 = await content2.getComputedStyle("width");
- const width2 = parseFloat(style2["width"]);
-
- expect(width2).toEqual(widthDefault * multipier);
- });
-
it("should set tabIndex of -1 on a non-scrollable panel", async () => {
const page = await newE2EPage();
diff --git a/src/components/panel/panel.scss b/src/components/panel/panel.scss
index 610470e0cc7..55276ee0418 100644
--- a/src/components/panel/panel.scss
+++ b/src/components/panel/panel.scss
@@ -1,22 +1,8 @@
-/**
- * CSS Custom Properties
- *
- * These properties can be overridden using the component's tag as selector.
- *
- * @prop --calcite-panel-max-height: The maximum height of the component.
- * @prop --calcite-panel-max-width: The maximum width of the component.
- * @prop --calcite-panel-min-width: The minimum width of the component.
- */
-
:host {
@extend %component-host;
- @apply relative flex w-full flex-auto overflow-hidden;
+ @apply relative flex w-full h-full flex-auto overflow-hidden;
--calcite-min-header-height: calc(var(--calcite-icon-size) * 3);
- --calcite-panel-max-height: unset;
- --calcite-panel-width: 100%;
- --calcite-panel-min-width: unset;
- --calcite-panel-max-width: unset;
}
@include disabled();
@@ -26,43 +12,9 @@
.container {
@apply bg-background m-0 flex w-full flex-auto flex-col items-stretch p-0;
- max-block-size: var(--calcite-panel-max-height);
- inline-size: var(--calcite-panel-width);
- max-inline-size: var(--calcite-panel-max-width);
- min-inline-size: var(--calcite-panel-min-width);
transition: max-block-size var(--calcite-animation-timing), inline-size var(--calcite-animation-timing);
}
-:host([height-scale="s"]) {
- --calcite-panel-max-height: 40vh;
-}
-
-:host([height-scale="m"]) {
- --calcite-panel-max-height: 60vh;
-}
-
-:host([height-scale="l"]) {
- --calcite-panel-max-height: 80vh;
-}
-
-:host([width-scale="s"]) {
- --calcite-panel-width: calc(var(--calcite-panel-width-multiplier) * 12vw);
- --calcite-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 300px);
- --calcite-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 150px);
-}
-
-:host([width-scale="m"]) {
- --calcite-panel-width: calc(var(--calcite-panel-width-multiplier) * 20vw);
- --calcite-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 420px);
- --calcite-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 240px);
-}
-
-:host([width-scale="l"]) {
- --calcite-panel-width: calc(var(--calcite-panel-width-multiplier) * 45vw);
- --calcite-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 680px);
- --calcite-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 340px);
-}
-
.container[hidden] {
@apply hidden;
}
diff --git a/src/components/panel/panel.stories.ts b/src/components/panel/panel.stories.ts
index a18a8160ff5..7e5108dcfad 100644
--- a/src/components/panel/panel.stories.ts
+++ b/src/components/panel/panel.stories.ts
@@ -1,16 +1,16 @@
import { boolean, select, text } from "@storybook/addon-knobs";
+import { storyFilters } from "../../../.storybook/helpers";
+import { ATTRIBUTES } from "../../../.storybook/resources";
import {
+ Attribute,
Attributes,
createComponentHTML as create,
- Attribute,
filterComponentAttributes,
- themesDarkDefault
+ modesDarkDefault
} from "../../../.storybook/utils";
-import { ATTRIBUTES } from "../../../.storybook/resources";
+import { html } from "../../../support/formatting";
import readme from "./readme.md";
import { SLOTS } from "./resources";
-import { html } from "../../../support/formatting";
-import { storyFilters } from "../../../.storybook/helpers";
export default {
title: "Components/Panel",
@@ -98,7 +98,7 @@ const contentHTML = html`
`;
const footerHTML = html`
- Naw.
+ Naw.Yeah!
`;
@@ -145,7 +145,7 @@ export const disabledWithStyledSlot_TestOnly = (): string => html`
`;
-export const darkThemeRTL_TestOnly = (): string =>
+export const darkModeRTL_TestOnly = (): string =>
create(
"calcite-panel",
createAttributes({ exceptions: ["dir", "class"] }).concat([
@@ -155,10 +155,10 @@ export const darkThemeRTL_TestOnly = (): string =>
},
{
name: "class",
- value: "calcite-theme-dark"
+ value: "calcite-mode-dark"
}
]),
panelContent
);
-darkThemeRTL_TestOnly.parameters = { themes: themesDarkDefault };
+darkModeRTL_TestOnly.parameters = { modes: modesDarkDefault };
diff --git a/src/components/panel/panel.tsx b/src/components/panel/panel.tsx
index 30377260d66..4a9d9d016d3 100644
--- a/src/components/panel/panel.tsx
+++ b/src/components/panel/panel.tsx
@@ -3,27 +3,26 @@ import {
Element,
Event,
EventEmitter,
+ Fragment,
+ h,
Method,
Prop,
- h,
- VNode,
- Fragment,
State,
+ VNode,
Watch
} from "@stencil/core";
-import { CSS, ICONS, SLOTS } from "./resources";
-import { toAriaBoolean } from "../../utils/dom";
-import { Scale } from "../interfaces";
-import { HeadingLevel, Heading } from "../functional/Heading";
-import { SLOTS as ACTION_MENU_SLOTS } from "../action-menu/resources";
+import { focusFirstTabbable, toAriaBoolean } from "../../utils/dom";
import { InteractiveComponent, updateHostInteraction } from "../../utils/interactive";
-import { createObserver } from "../../utils/observers";
import {
- setUpLoadableComponent,
- setComponentLoaded,
+ componentLoaded,
LoadableComponent,
- componentLoaded
+ setComponentLoaded,
+ setUpLoadableComponent
} from "../../utils/loadable";
+import { createObserver } from "../../utils/observers";
+import { SLOTS as ACTION_MENU_SLOTS } from "../action-menu/resources";
+import { Heading, HeadingLevel } from "../functional/Heading";
+import { CSS, ICONS, SLOTS } from "./resources";
import { connectLocalized, disconnectLocalized, LocalizedComponent } from "../../utils/locale";
import {
@@ -33,7 +32,7 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
-import { Messages } from "./assets/panel/t9n";
+import { PanelMessages } from "./assets/panel/t9n";
/**
* @slot - A slot for adding custom content.
@@ -76,35 +75,11 @@ export class Panel
*/
@Prop({ reflect: true }) headingLevel: HeadingLevel;
- /**
- * Specifies the maximum height of the component.
- */
- @Prop({ reflect: true }) heightScale: Scale;
-
- /**
- * Specifies the width of the component.
- */
- @Prop({ reflect: true }) widthScale: Scale;
-
/**
* When `true`, a busy indicator is displayed.
*/
@Prop({ reflect: true }) loading = false;
- /**
- * Accessible name for the component's close button. The close button will only be shown when `closeable` is `true`.
- *
- * @deprecated use `calcite-flow-item` instead.
- */
- @Prop() intlClose: string;
-
- /**
- * Accessible name for the component's actions menu.
- *
- * @deprecated use `calcite-flow-item` instead.
- */
- @Prop() intlOptions: string;
-
/**
* The component header text.
*/
@@ -121,17 +96,15 @@ export class Panel
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
/**
* Made into a prop for testing purposes only
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: PanelMessages;
- @Watch("intlClose")
- @Watch("intlOptions")
@Watch("messageOverrides")
onMessagesChange(): void {
/* wired up by t9n util */
@@ -199,7 +172,7 @@ export class Panel
@State() hasFab = false;
- @State() defaultMessages: Messages;
+ @State() defaultMessages: PanelMessages;
@State() effectiveLocale = "";
@@ -335,37 +308,12 @@ export class Panel
// --------------------------------------------------------------------------
/**
- * Sets focus on the component.
- *
- * @param focusId
+ * Sets focus on the component's first focusable element.
*/
@Method()
- async setFocus(focusId?: "back-button" | "dismiss-button"): Promise {
+ async setFocus(): Promise {
await componentLoaded(this);
-
- const { backButtonEl, closeButtonEl, containerEl } = this;
-
- if (focusId === "back-button") {
- backButtonEl?.setFocus();
- return;
- }
-
- if (focusId === "dismiss-button") {
- closeButtonEl?.setFocus();
- return;
- }
-
- if (backButtonEl) {
- backButtonEl.setFocus();
- return;
- }
-
- if (closeButtonEl) {
- closeButtonEl.setFocus();
- return;
- }
-
- containerEl?.focus();
+ focusFirstTabbable(this.containerEl);
}
/**
diff --git a/src/components/panel/readme.md b/src/components/panel/readme.md
index 159bdc0d9d4..056a095addb 100644
--- a/src/components/panel/readme.md
+++ b/src/components/panel/readme.md
@@ -67,21 +67,17 @@ Renders a panel with a header and a footer.
## Properties
-| Property | Attribute | Description | Type | Default |
-| ------------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------- |
-| `closable` | `closable` | When `true`, displays a close button in the trailing side of the header. | `boolean` | `false` |
-| `closed` | `closed` | When `true`, the component will be hidden. | `boolean` | `false` |
-| `description` | `description` | A description for the component. | `string` | `undefined` |
-| `disabled` | `disabled` | When `true`, interaction is prevented and the component is displayed with lower opacity. | `boolean` | `false` |
-| `heading` | `heading` | The component header text. | `string` | `undefined` |
-| `headingLevel` | `heading-level` | Specifies the number at which section headings should start. | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `undefined` |
-| `heightScale` | `height-scale` | Specifies the maximum height of the component. | `"l" \| "m" \| "s"` | `undefined` |
-| `intlClose` | `intl-close` | **[DEPRECATED]** use `calcite-flow-item` instead.
Accessible name for the component's close button. The close button will only be shown when `closeable` is `true`. | `string` | `undefined` |
-| `intlOptions` | `intl-options` | **[DEPRECATED]** use `calcite-flow-item` instead.
Accessible name for the component's actions menu. | `string` | `undefined` |
-| `loading` | `loading` | When `true`, a busy indicator is displayed. | `boolean` | `false` |
-| `menuOpen` | `menu-open` | When `true`, the action menu items in the `header-menu-actions` slot are open. | `boolean` | `false` |
-| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `Messages` | `undefined` |
-| `widthScale` | `width-scale` | Specifies the width of the component. | `"l" \| "m" \| "s"` | `undefined` |
+| Property | Attribute | Description | Type | Default |
+| ------------------ | ------------------- | ---------------------------------------------------------------------------------------- | ---------------------------- | ----------- |
+| `closable` | `closable` | When `true`, displays a close button in the trailing side of the header. | `boolean` | `false` |
+| `closed` | `closed` | When `true`, the component will be hidden. | `boolean` | `false` |
+| `description` | `description` | A description for the component. | `string` | `undefined` |
+| `disabled` | `disabled` | When `true`, interaction is prevented and the component is displayed with lower opacity. | `boolean` | `false` |
+| `heading` | `heading` | The component header text. | `string` | `undefined` |
+| `headingLevel` | `heading-level` | Specifies the number at which section headings should start. | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `undefined` |
+| `loading` | `loading` | When `true`, a busy indicator is displayed. | `boolean` | `false` |
+| `menuOpen` | `menu-open` | When `true`, the action menu items in the `header-menu-actions` slot are open. | `boolean` | `false` |
+| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `PanelMessages` | `undefined` |
## Events
@@ -100,9 +96,9 @@ Scrolls the component's content to a specified set of coordinates.
Type: `Promise`
-### `setFocus(focusId?: "back-button" | "dismiss-button") => Promise`
+### `setFocus() => Promise`
-Sets focus on the component.
+Sets focus on the component's first focusable element.
#### Returns
@@ -121,14 +117,6 @@ Type: `Promise`
| `"header-content"` | A slot for adding custom content to the header. |
| `"header-menu-actions"` | A slot for adding an overflow menu with actions inside a `calcite-dropdown`. |
-## CSS Custom Properties
-
-| Name | Description |
-| ---------------------------- | ------------------------------------ |
-| `--calcite-panel-max-height` | The maximum height of the component. |
-| `--calcite-panel-max-width` | The maximum width of the component. |
-| `--calcite-panel-min-width` | The minimum width of the component. |
-
## Dependencies
### Used by
diff --git a/src/components/pick-list-group/pick-list-group.tsx b/src/components/pick-list-group/pick-list-group.tsx
index 72baaad8022..bd90559ca34 100644
--- a/src/components/pick-list-group/pick-list-group.tsx
+++ b/src/components/pick-list-group/pick-list-group.tsx
@@ -1,16 +1,18 @@
-import { Component, Element, Prop, h, VNode, Fragment } from "@stencil/core";
-import { CSS, SLOTS } from "./resources";
-import { getSlotted } from "../../utils/dom";
-import { HeadingLevel, Heading, constrainHeadingLevel } from "../functional/Heading";
+import { Component, Element, Fragment, h, Prop, VNode } from "@stencil/core";
import {
ConditionalSlotComponent,
connectConditionalSlotComponent,
disconnectConditionalSlotComponent
} from "../../utils/conditionalSlot";
+import { getSlotted } from "../../utils/dom";
+import { constrainHeadingLevel, Heading, HeadingLevel } from "../functional/Heading";
+import { CSS, SLOTS } from "./resources";
/**
* @slot - A slot for adding `calcite-pick-list-item` elements.
*/
+
+/** @deprecated Use the `list` component instead. */
@Component({
tag: "calcite-pick-list-group",
styleUrl: "pick-list-group.scss",
diff --git a/src/components/pick-list-group/readme.md b/src/components/pick-list-group/readme.md
index b6f239b6bbf..567ceb896f5 100644
--- a/src/components/pick-list-group/readme.md
+++ b/src/components/pick-list-group/readme.md
@@ -4,6 +4,8 @@
+> **[DEPRECATED]** Use the `list` component instead.
+
## Properties
| Property | Attribute | Description | Type | Default |
@@ -11,12 +13,6 @@
| `groupTitle` | `group-title` | Specifies the title for all nested `calcite-pick-list-item`s. | `string` | `undefined` |
| `headingLevel` | `heading-level` | Specifies the number at which section headings should start. | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `undefined` |
-## Slots
-
-| Slot | Description |
-| ---- | ---------------------------------------------------- |
-| | A slot for adding `calcite-pick-list-item` elements. |
-
---
_Built with [StencilJS](https://stenciljs.com/)_
diff --git a/src/components/pick-list-item/pick-list-item.e2e.ts b/src/components/pick-list-item/pick-list-item.e2e.ts
index a3af8f8d366..9fad80ce522 100644
--- a/src/components/pick-list-item/pick-list-item.e2e.ts
+++ b/src/components/pick-list-item/pick-list-item.e2e.ts
@@ -139,10 +139,10 @@ describe("calcite-pick-list-item", () => {
await page.setContent(
html`
-
+
-
+
diff --git a/src/components/pick-list-item/pick-list-item.tsx b/src/components/pick-list-item/pick-list-item.tsx
index 17d256100cf..f1a9629942b 100644
--- a/src/components/pick-list-item/pick-list-item.tsx
+++ b/src/components/pick-list-item/pick-list-item.tsx
@@ -11,15 +11,19 @@ import {
VNode,
Watch
} from "@stencil/core";
-import { CSS, ICONS, SLOTS } from "./resources";
-import { ICON_TYPES } from "../pick-list/resources";
-import { getSlotted, toAriaBoolean } from "../../utils/dom";
import {
ConditionalSlotComponent,
connectConditionalSlotComponent,
disconnectConditionalSlotComponent
} from "../../utils/conditionalSlot";
+import { getSlotted, toAriaBoolean } from "../../utils/dom";
import { InteractiveComponent, updateHostInteraction } from "../../utils/interactive";
+import {
+ componentLoaded,
+ LoadableComponent,
+ setComponentLoaded,
+ setUpLoadableComponent
+} from "../../utils/loadable";
import { connectLocalized, disconnectLocalized } from "../../utils/locale";
import {
connectMessages,
@@ -28,18 +32,16 @@ import {
T9nComponent,
updateMessages
} from "../../utils/t9n";
-import { Messages } from "./assets/pick-list-item/t9n";
-import {
- setUpLoadableComponent,
- setComponentLoaded,
- LoadableComponent,
- componentLoaded
-} from "../../utils/loadable";
+import { ICON_TYPES } from "../pick-list/resources";
+import { PickListItemMessages } from "./assets/pick-list-item/t9n";
+import { CSS, ICONS, SLOTS } from "./resources";
/**
* @slot actions-end - A slot for adding `calcite-action`s or content to the end side of the component.
* @slot actions-start - A slot for adding `calcite-action`s or content to the start side of the component.
*/
+
+/** @deprecated Use the `list` component instead. */
@Component({
tag: "calcite-pick-list-item",
styleUrl: "pick-list-item.scss",
@@ -87,6 +89,9 @@ export class PickListItem
*/
@Prop({ reflect: true }) icon: ICON_TYPES | null = null;
+ /** When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). */
+ @Prop({ reflect: true }) iconFlipRtl = false;
+
/**
* Label and accessible name for the component. Appears next to the icon.
*/
@@ -100,16 +105,15 @@ export class PickListItem
/**
* Use this property to override individual strings used by the component.
*/
- @Prop({ mutable: true }) messageOverrides: Partial;
+ @Prop({ mutable: true }) messageOverrides: Partial;
/**
* Made into a prop for testing purposes only
*
* @internal
*/
- @Prop({ mutable: true }) messages: Messages;
+ @Prop({ mutable: true }) messages: PickListItemMessages;
- @Watch("intlRemove")
@Watch("defaultMessages")
@Watch("messageOverrides")
onMessagesChange(): void {
@@ -148,13 +152,6 @@ export class PickListItem
this.shiftPressed = false;
}
- /**
- * When `removable` is `true`, the accessible name for the component's remove button.
- *
- * @deprecated – translations are now built-in, if you need to override a string, please use `messageOverrides`
- */
- @Prop({ reflect: true }) intlRemove: string;
-
/**
* The component's value.
*/
@@ -177,7 +174,7 @@ export class PickListItem
shiftPressed: boolean;
- @State() defaultMessages: Messages;
+ @State() defaultMessages: PickListItemMessages;
@State() effectiveLocale = "";
@@ -316,7 +313,7 @@ export class PickListItem
// --------------------------------------------------------------------------
renderIcon(): VNode {
- const { icon } = this;
+ const { icon, iconFlipRtl } = this;
if (!icon) {
return null;
@@ -330,7 +327,9 @@ export class PickListItem
}}
onClick={this.pickListClickHandler}
>
- {icon === ICON_TYPES.square ? : null}
+ {icon === ICON_TYPES.square ? (
+
+ ) : null}
);
}
diff --git a/src/components/pick-list-item/readme.md b/src/components/pick-list-item/readme.md
index ec8fe086040..210875dc71d 100644
--- a/src/components/pick-list-item/readme.md
+++ b/src/components/pick-list-item/readme.md
@@ -4,21 +4,23 @@
+> **[DEPRECATED]** Use the `list` component instead.
+
## Properties
-| Property | Attribute | Description | Type | Default |
-| -------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------- |
-| `description` | `description` | A description for the component that displays below the label text. | `string` | `undefined` |
-| `deselectDisabled` | `deselect-disabled` | When `false`, the component cannot be deselected by user interaction. | `boolean` | `false` |
-| `disabled` | `disabled` | When `true`, interaction is prevented and the component is displayed with lower opacity. | `boolean` | `false` |
-| `icon` | `icon` | Determines the icon SVG symbol that will be shown. Options are `"circle"`, `"square"`, `"grip"` or `null`. | `ICON_TYPES.circle \| ICON_TYPES.grip \| ICON_TYPES.square` | `null` |
-| `intlRemove` | `intl-remove` | **[DEPRECATED]** – translations are now built-in, if you need to override a string, please use `messageOverrides`
When `removable` is `true`, the accessible name for the component's remove button. | `string` | `undefined` |
-| `label` _(required)_ | `label` | Label and accessible name for the component. Appears next to the icon. | `string` | `undefined` |
-| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `Messages` | `undefined` |
-| `metadata` | -- | Provides additional metadata to the component. Primary use is for a filter on the parent list. | `{ [x: string]: unknown; }` | `undefined` |
-| `removable` | `removable` | When `true`, displays a remove action that removes the item from the list. | `boolean` | `false` |
-| `selected` | `selected` | When `true`, selects an item. Toggles when an item is checked/unchecked. | `boolean` | `false` |
-| `value` _(required)_ | `value` | The component's value. | `any` | `undefined` |
+| Property | Attribute | Description | Type | Default |
+| -------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------- |
+| `description` | `description` | A description for the component that displays below the label text. | `string` | `undefined` |
+| `deselectDisabled` | `deselect-disabled` | When `false`, the component cannot be deselected by user interaction. | `boolean` | `false` |
+| `disabled` | `disabled` | When `true`, interaction is prevented and the component is displayed with lower opacity. | `boolean` | `false` |
+| `icon` | `icon` | Determines the icon SVG symbol that will be shown. Options are `"circle"`, `"square"`, `"grip"` or `null`. | `ICON_TYPES.circle \| ICON_TYPES.grip \| ICON_TYPES.square` | `null` |
+| `iconFlipRtl` | `icon-flip-rtl` | When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). | `boolean` | `false` |
+| `label` _(required)_ | `label` | Label and accessible name for the component. Appears next to the icon. | `string` | `undefined` |
+| `messageOverrides` | `message-overrides` | Use this property to override individual strings used by the component. | `PickListItemMessages` | `undefined` |
+| `metadata` | -- | Provides additional metadata to the component. Primary use is for a filter on the parent list. | `{ [x: string]: unknown; }` | `undefined` |
+| `removable` | `removable` | When `true`, displays a remove action that removes the item from the list. | `boolean` | `false` |
+| `selected` | `selected` | When `true`, selects an item. Toggles when an item is checked/unchecked. | `boolean` | `false` |
+| `value` _(required)_ | `value` | The component's value. | `any` | `undefined` |
## Events
@@ -46,13 +48,6 @@ The first argument allows the value to be coerced, rather than swapping values.
Type: `Promise`
-## Slots
-
-| Slot | Description |
-| ----------------- | ---------------------------------------------------------------------------------- |
-| `"actions-end"` | A slot for adding `calcite-action`s or content to the end side of the component. |
-| `"actions-start"` | A slot for adding `calcite-action`s or content to the start side of the component. |
-
## Dependencies
### Used by
diff --git a/src/components/pick-list/pick-list.e2e.ts b/src/components/pick-list/pick-list.e2e.ts
index 629cb46cb57..e93cabdfac0 100644
--- a/src/components/pick-list/pick-list.e2e.ts
+++ b/src/components/pick-list/pick-list.e2e.ts
@@ -1,17 +1,17 @@
import { E2EElement, E2EPage, newE2EPage } from "@stencil/core/testing";
+import { html } from "../../../support/formatting";
+import { accessible, defaults, hidden, renders } from "../../tests/commonTests";
+import { CSS as PICK_LIST_GROUP_CSS } from "../pick-list-group/resources";
import { ICON_TYPES } from "./resources";
-import { accessible, hidden, renders, defaults } from "../../tests/commonTests";
import {
- selectionAndDeselection,
+ disabling,
filterBehavior,
- loadingState,
- keyboardNavigation,
- itemRemoval,
focusing,
- disabling
+ itemRemoval,
+ keyboardNavigation,
+ loadingState,
+ selectionAndDeselection
} from "./shared-list-tests";
-import { html } from "../../../support/formatting";
-import { CSS as PICK_LIST_GROUP_CSS } from "../pick-list-group/resources";
describe("calcite-pick-list", () => {
it("has property defaults", async () =>
diff --git a/src/components/pick-list/pick-list.stories.ts b/src/components/pick-list/pick-list.stories.ts
index 8e8de27583e..19acf408937 100644
--- a/src/components/pick-list/pick-list.stories.ts
+++ b/src/components/pick-list/pick-list.stories.ts
@@ -1,16 +1,16 @@
import { boolean, text } from "@storybook/addon-knobs";
+import { storyFilters } from "../../../.storybook/helpers";
import {
Attribute,
- filterComponentAttributes,
Attributes,
createComponentHTML as create,
- themesDarkDefault
+ filterComponentAttributes,
+ modesDarkDefault
} from "../../../.storybook/utils";
-import readme from "./readme.md";
-import itemReadme from "../pick-list-item/readme.md";
-import groupReadme from "../pick-list-group/readme.md";
import { html } from "../../../support/formatting";
-import { storyFilters } from "../../../.storybook/helpers";
+import groupReadme from "../pick-list-group/readme.md";
+import itemReadme from "../pick-list-item/readme.md";
+import readme from "./readme.md";
export default {
title: "Components/Pick List",
@@ -73,7 +73,7 @@ const action = html`
slot="actions-end"
label="click-me"
onClick="console.log('clicked');"
- appearance="clear"
+ appearance="outline"
scale="s"
icon="information"
>
@@ -94,7 +94,7 @@ export const simple = (): string =>
`
);
-export const darkThemeRTL_TestOnly = (): string =>
+export const darkModeRTL_TestOnly = (): string =>
create(
"calcite-pick-list",
createAttributes({ exceptions: ["dir", "class"] }).concat([
@@ -104,7 +104,7 @@ export const darkThemeRTL_TestOnly = (): string =>
},
{
name: "class",
- value: "calcite-theme-dark"
+ value: "calcite-mode-dark"
}
]),
html`
@@ -118,7 +118,7 @@ export const darkThemeRTL_TestOnly = (): string =>
`
);
-darkThemeRTL_TestOnly.parameters = { themes: themesDarkDefault };
+darkModeRTL_TestOnly.parameters = { modes: modesDarkDefault };
export const grouped = (): string =>
create(
diff --git a/src/components/pick-list/pick-list.tsx b/src/components/pick-list/pick-list.tsx
index 3eb896113ff..5aac45b23d5 100644
--- a/src/components/pick-list/pick-list.tsx
+++ b/src/components/pick-list/pick-list.tsx
@@ -3,51 +3,53 @@ import {
Element,
Event,
EventEmitter,
+ h,
Listen,
Method,
Prop,
State,
- h,
VNode
} from "@stencil/core";
+import { InteractiveComponent, updateHostInteraction } from "../../utils/interactive";
+import {
+ componentLoaded,
+ LoadableComponent,
+ setComponentLoaded,
+ setUpLoadableComponent
+} from "../../utils/loadable";
+import { createObserver } from "../../utils/observers";
+import { HeadingLevel } from "../functional/Heading";
import { ICON_TYPES } from "./resources";
import {
- ListFocusId,
- calciteListItemChangeHandler,
calciteInternalListItemValueChangeHandler,
+ calciteListFocusOutHandler,
+ calciteListItemChangeHandler,
cleanUpObserver,
- deselectSiblingItems,
deselectRemovedItems,
+ deselectSiblingItems,
getItemData,
handleFilter,
handleFilterEvent,
handleInitialFilter,
- calciteListFocusOutHandler,
initialize,
initializeObserver,
+ ItemData,
+ keyDownHandler,
+ ListFocusId,
mutationObserverCallback,
+ removeItem,
selectSiblings,
- setUpItems,
- keyDownHandler,
setFocus,
- ItemData,
- removeItem
+ setUpItems
} from "./shared-list-logic";
import List from "./shared-list-render";
-import { HeadingLevel } from "../functional/Heading";
-import { createObserver } from "../../utils/observers";
-import { InteractiveComponent, updateHostInteraction } from "../../utils/interactive";
-import {
- setUpLoadableComponent,
- setComponentLoaded,
- LoadableComponent,
- componentLoaded
-} from "../../utils/loadable";
/**
* @slot - A slot for adding `calcite-pick-list-item` or `calcite-pick-list-group` elements. Items are displayed as a vertical list.
* @slot menu-actions - A slot for adding a button and menu combination for performing actions, such as sorting.
*/
+
+/** @deprecated Use the `list` component instead. */
@Component({
tag: "calcite-pick-list",
styleUrl: "pick-list.scss",
@@ -69,14 +71,14 @@ export class PickList<
@Prop({ reflect: true }) disabled = false;
/**
- * **read-only** The currently filtered items
+ * The currently filtered items.
*
* @readonly
*/
@Prop({ mutable: true }) filteredItems: HTMLCalcitePickListItemElement[] = [];
/**
- * **read-only** The currently filtered items
+ * The currently filtered data.
*
* @readonly
*/
@@ -268,7 +270,7 @@ export class PickList<
}
/**
- * Sets focus on the component.
+ * Sets focus on the component's first focusable element.
*
* @param focusId
*/
diff --git a/src/components/pick-list/readme.md b/src/components/pick-list/readme.md
index 4aca2c43bfa..5ef862fe476 100644
--- a/src/components/pick-list/readme.md
+++ b/src/components/pick-list/readme.md
@@ -4,6 +4,8 @@
+> **[DEPRECATED]** Use the `list` component instead.
+
## Usage
### Basic
@@ -75,8 +77,8 @@ Renders groups of pick list items that are visually separated.
| `filterEnabled` | `filter-enabled` | When `true`, an input appears at the top of the list that can be used by end users to filter items in the list. | `boolean` | `false` |
| `filterPlaceholder` | `filter-placeholder` | Placeholder text for the filter input field. | `string` | `undefined` |
| `filterText` | `filter-text` | Text for the filter input field. | `string` | `undefined` |
-| `filteredData` | -- | **read-only** The currently filtered items | `{ label: string; description: string; metadata: Record; value: string; }[]` | `[]` |
-| `filteredItems` | -- | **read-only** The currently filtered items | `HTMLCalcitePickListItemElement[]` | `[]` |
+| `filteredData` | -- | The currently filtered data. | `{ label: string; description: string; metadata: Record; value: string; }[]` | `[]` |
+| `filteredItems` | -- | The currently filtered items. | `HTMLCalcitePickListItemElement[]` | `[]` |
| `headingLevel` | `heading-level` | Specifies the number at which section headings should start. | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `undefined` |
| `loading` | `loading` | When `true`, a busy indicator is displayed. | `boolean` | `false` |
| `multiple` | `multiple` | Similar to standard radio buttons and checkboxes. When `true`, a user can select multiple `calcite-pick-list-item`s at a time. When `false`, only a single `calcite-pick-list-item` can be selected at a time, and a new selection will deselect previous selections. | `boolean` | `false` |
@@ -101,19 +103,12 @@ Type: `Promise
@@ -948,10 +755,10 @@
Accordion
>
-
- Yes
- No
-
+
+ Yes
+ No
+
@@ -971,10 +778,10 @@
Accordion
>
-
- Yes
- No
-
+
+ Yes
+ No
+
@@ -994,10 +801,10 @@
Accordion
>
-
- Yes
- No
-
+
+ Yes
+ No
+
@@ -1029,10 +836,10 @@
Accordion
icon-start="drone-fixed-wing"
icon-end="drone-fixed-wing"
>
-
- Yes
- No
-
+
+ Yes
+ No
+
@@ -1059,10 +866,10 @@
Accordion
icon-start="drone-fixed-wing"
icon-end="drone-fixed-wing"
>
-
- Yes
- No
-
+
+ Yes
+ No
+
@@ -1089,10 +896,10 @@
Accordion
icon-start="drone-fixed-wing"
icon-end="drone-fixed-wing"
>
-
- Yes
- No
-
+
+ Yes
+ No
+