@ui5/webcomponents-fiori 2.26.0-rc.0 → 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/DynamicPage.js +7 -0
  4. package/dist/DynamicPage.js.map +1 -1
  5. package/dist/Search.js +1 -1
  6. package/dist/Search.js.map +1 -1
  7. package/dist/SearchField.d.ts +29 -0
  8. package/dist/SearchField.js +88 -1
  9. package/dist/SearchField.js.map +1 -1
  10. package/dist/SearchFieldScopePopoverTemplate.d.ts +2 -0
  11. package/dist/SearchFieldScopePopoverTemplate.js +11 -0
  12. package/dist/SearchFieldScopePopoverTemplate.js.map +1 -0
  13. package/dist/SearchFieldTemplate.js +14 -5
  14. package/dist/SearchFieldTemplate.js.map +1 -1
  15. package/dist/UserMenuTemplate.js +1 -1
  16. package/dist/UserMenuTemplate.js.map +1 -1
  17. package/dist/UserSettingsDialog.d.ts +9 -2
  18. package/dist/UserSettingsDialog.js +42 -3
  19. package/dist/UserSettingsDialog.js.map +1 -1
  20. package/dist/UserSettingsDialogTemplate.js +2 -2
  21. package/dist/UserSettingsDialogTemplate.js.map +1 -1
  22. package/dist/UserSettingsItem.d.ts +18 -0
  23. package/dist/UserSettingsItem.js +50 -0
  24. package/dist/UserSettingsItem.js.map +1 -1
  25. package/dist/css/themes/SearchField.css +1 -1
  26. package/dist/css/themes/ShellBarLegacy.css +1 -1
  27. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  28. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  29. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  30. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  31. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  32. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +3 -1
  33. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +3 -1
  34. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +2 -0
  35. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +2 -0
  36. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +2 -0
  37. package/dist/custom-elements-internal.json +18 -18
  38. package/dist/custom-elements.json +18 -18
  39. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  40. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  41. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  42. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  43. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  44. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  45. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  46. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  47. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  48. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  49. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  50. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  51. package/dist/generated/i18n/i18n-defaults.d.ts +5 -1
  52. package/dist/generated/i18n/i18n-defaults.js +5 -1
  53. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  54. package/dist/generated/themes/SearchField.css.d.ts +1 -1
  55. package/dist/generated/themes/SearchField.css.js +1 -1
  56. package/dist/generated/themes/SearchField.css.js.map +1 -1
  57. package/dist/generated/themes/ShellBarLegacy.css.d.ts +1 -1
  58. package/dist/generated/themes/ShellBarLegacy.css.js +1 -1
  59. package/dist/generated/themes/ShellBarLegacy.css.js.map +1 -1
  60. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  61. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  62. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  63. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  64. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  65. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  66. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  67. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  68. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  69. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  70. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  71. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  72. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  73. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  74. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  75. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  76. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +3 -1
  77. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  78. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  79. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +3 -1
  80. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  81. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  82. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +2 -0
  83. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  84. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  85. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +2 -0
  86. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  87. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  88. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +2 -0
  89. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  90. package/dist/vscode.html-custom-data.json +78 -193
  91. package/dist/web-types.json +5 -5
  92. package/package.json +7 -7
  93. package/src/SearchFieldScopePopoverTemplate.tsx +37 -0
  94. package/src/SearchFieldTemplate.tsx +45 -18
  95. package/src/UserMenuTemplate.tsx +1 -1
  96. package/src/UserSettingsDialogTemplate.tsx +4 -4
  97. package/src/i18n/messagebundle.properties +12 -0
  98. package/src/i18n/messagebundle_en.properties +218 -0
  99. package/src/i18n/messagebundle_en_US_saprigi.properties +8 -0
  100. package/src/themes/SearchField.css +63 -3
  101. package/src/themes/ShellBarLegacy.css +3 -1
  102. package/src/themes/base/SearchField-parameters.css +3 -1
  103. package/src/themes/sap_fiori_3/SearchField-parameters.css +0 -1
  104. package/src/themes/sap_fiori_3_dark/SearchField-parameters.css +0 -1
  105. package/src/themes/sap_fiori_3_hcb/SearchField-parameters.css +0 -1
  106. package/src/themes/sap_fiori_3_hcw/SearchField-parameters.css +0 -1
  107. package/src/themes/sap_horizon/SearchField-parameters.css +6 -0
  108. package/src/themes/sap_horizon/parameters-bundle.css +1 -2
  109. package/src/themes/sap_horizon_dark/SearchField-parameters.css +6 -0
  110. package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  111. package/src/themes/sap_horizon_hcb/SearchField-parameters.css +0 -1
  112. package/src/themes/sap_horizon_hcw/SearchField-parameters.css +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@ui5/webcomponents-fiori",
4
- "version": "2.26.0-rc.0",
4
+ "version": "2.26.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -1532,7 +1532,7 @@
1532
1532
  },
1533
1533
  {
1534
1534
  "name": "placeholder",
1535
- "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.",
1535
+ "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.\n\n**Note:** When `scopes` are defined and no custom placeholder is provided,\nthe placeholder automatically displays \"Search in: \\{selected scope name\\}\".\nSetting a custom placeholder will override this automatic behavior.",
1536
1536
  "value": { "type": "string | undefined", "default": "undefined" }
1537
1537
  },
1538
1538
  {
@@ -1633,7 +1633,7 @@
1633
1633
  },
1634
1634
  {
1635
1635
  "name": "placeholder",
1636
- "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.",
1636
+ "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.\n\n**Note:** When `scopes` are defined and no custom placeholder is provided,\nthe placeholder automatically displays \"Search in: \\{selected scope name\\}\".\nSetting a custom placeholder will override this automatic behavior.",
1637
1637
  "value": { "type": "string | undefined" }
1638
1638
  },
1639
1639
  {
@@ -1698,7 +1698,7 @@
1698
1698
  },
1699
1699
  {
1700
1700
  "name": "placeholder",
1701
- "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.",
1701
+ "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.\n\n**Note:** When `scopes` are defined and no custom placeholder is provided,\nthe placeholder automatically displays \"Search in: \\{selected scope name\\}\".\nSetting a custom placeholder will override this automatic behavior.",
1702
1702
  "value": { "type": "string | undefined", "default": "undefined" }
1703
1703
  },
1704
1704
  {
@@ -1760,7 +1760,7 @@
1760
1760
  },
1761
1761
  {
1762
1762
  "name": "placeholder",
1763
- "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.",
1763
+ "description": "Defines a short hint intended to aid the user with data entry when the\ncomponent has no value.\n\n**Note:** When `scopes` are defined and no custom placeholder is provided,\nthe placeholder automatically displays \"Search in: \\{selected scope name\\}\".\nSetting a custom placeholder will override this automatic behavior.",
1764
1764
  "value": { "type": "string | undefined" }
1765
1765
  },
1766
1766
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-fiori",
3
- "version": "2.26.0-rc.0",
3
+ "version": "2.26.0",
4
4
  "description": "UI5 Web Components: webcomponents.fiori",
5
5
  "ui5": {
6
6
  "webComponentsPackage": true
@@ -56,20 +56,20 @@
56
56
  "directory": "packages/fiori"
57
57
  },
58
58
  "dependencies": {
59
- "@ui5/webcomponents": "2.26.0-rc.0",
60
- "@ui5/webcomponents-base": "2.26.0-rc.0",
61
- "@ui5/webcomponents-icons": "2.26.0-rc.0",
62
- "@ui5/webcomponents-theming": "2.26.0-rc.0",
59
+ "@ui5/webcomponents": "2.26.0",
60
+ "@ui5/webcomponents-base": "2.26.0",
61
+ "@ui5/webcomponents-icons": "2.26.0",
62
+ "@ui5/webcomponents-theming": "2.26.0",
63
63
  "@zxing/library": "^0.21.3"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@custom-elements-manifest/analyzer": "^0.10.10",
67
67
  "@ui5/cypress-internal": "0.1.0",
68
- "@ui5/webcomponents-tools": "2.26.0-rc.0",
68
+ "@ui5/webcomponents-tools": "2.26.0",
69
69
  "cypress": "15.18.1",
70
70
  "lit": "^2.0.0",
71
71
  "vite": "5.4.21",
72
72
  "yarn": "^1.22.22"
73
73
  },
74
- "gitHead": "112dac3cd0186b3f736f22a467259d8365481fe4"
74
+ "gitHead": "d022f8f0c8b508a5e59cc89d26a19adf316ea3f6"
75
75
  }
@@ -0,0 +1,37 @@
1
+ import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
2
+ import List from "@ui5/webcomponents/dist/List.js";
3
+ import ListItemStandard from "@ui5/webcomponents/dist/ListItemStandard.js";
4
+ import ListSeparator from "@ui5/webcomponents/dist/types/ListSeparator.js";
5
+ import PopoverPlacement from "@ui5/webcomponents/dist/types/PopoverPlacement.js";
6
+ import PopoverHorizontalAlign from "@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js";
7
+ import type SearchField from "./SearchField.js";
8
+
9
+ export default function SearchFieldScopePopoverTemplate(this: SearchField) {
10
+ return (
11
+ <ResponsivePopover
12
+ id={`${this._id}-scope-popover`}
13
+ class="ui5-search-field-scope-popover"
14
+ hideArrow={true}
15
+ modal={false}
16
+ placement={PopoverPlacement.Bottom}
17
+ horizontalAlign={PopoverHorizontalAlign.Start}
18
+ open={this._scopePopoverOpen}
19
+ opener={this._scopeIconButton || this}
20
+ onClose={this._handleScopePopoverClose}
21
+ >
22
+ <List
23
+ separators={ListSeparator.None}
24
+ onItemClick={this._handleScopeItemClick.bind(this)}
25
+ >
26
+ {this.scopes.map(scopeOption => (
27
+ <ListItemStandard
28
+ data-scope-value={scopeOption.value}
29
+ selected={scopeOption.value === this.scopeValue}
30
+ >
31
+ {scopeOption.text}
32
+ </ListItemStandard>
33
+ ))}
34
+ </List>
35
+ </ResponsivePopover>
36
+ );
37
+ }
@@ -5,8 +5,10 @@ import Select from "@ui5/webcomponents/dist/Select.js";
5
5
  import type SearchField from "./SearchField.js";
6
6
  import decline from "@ui5/webcomponents-icons/dist/decline.js";
7
7
  import search from "@ui5/webcomponents-icons/dist/search.js";
8
+ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
8
9
  import ButtonDesign from "@ui5/webcomponents/dist/types/ButtonDesign.js";
9
10
  import BusyIndicator from "@ui5/webcomponents/dist/BusyIndicator.js";
11
+ import SearchFieldScopePopoverTemplate from "./SearchFieldScopePopoverTemplate.js";
10
12
 
11
13
  export type SearchFieldTemplateOptions = {
12
14
  /**
@@ -35,23 +37,47 @@ export default function SearchFieldTemplate(this: SearchField, options?: SearchF
35
37
  <div class="ui5-search-field-content">
36
38
  {this.scopes?.length ? (
37
39
  <>
38
- <Select
39
- onChange={this._handleScopeChange}
40
- class="ui5-search-field-select"
41
- accessibleName={this._translations.scope}
42
- tooltip={this._translations.scope}
43
- value={this.scopeValue}
44
- >
45
- {this.scopes.map(scopeOption => (
46
- <Option
47
- value={scopeOption.value}
48
- data-ui5-stable={scopeOption.stableDomRef}
49
- ref={this.captureRef.bind(scopeOption)}
50
- >{scopeOption.text}
51
- </Option>
52
- ))}
53
- </Select>
54
- <div class="ui5-search-field-separator"></div>
40
+ {!this._isMobileView ? (
41
+ // Desktop/Tablet: Show full Select component
42
+ <>
43
+ <Select
44
+ onChange={this._handleScopeChange}
45
+ class="ui5-search-field-select"
46
+ accessibleName={this._translations.scope}
47
+ tooltip={this._translations.scope}
48
+ value={this.scopeValue}
49
+ exportparts="label:scope-label"
50
+ >
51
+ {this.scopes.map(scopeOption => (
52
+ <Option
53
+ value={scopeOption.value}
54
+ data-ui5-stable={scopeOption.stableDomRef}
55
+ ref={this.captureRef.bind(scopeOption)}
56
+ >{scopeOption.text}
57
+ </Option>
58
+ ))}
59
+ </Select>
60
+ <div class="ui5-search-field-separator"></div>
61
+ </>
62
+ ) : (
63
+ // Mobile/Phone: Show icon button only
64
+ <>
65
+ <Button
66
+ ref={this.captureScopeIconRef.bind(this)}
67
+ class="ui5-search-field-scope-button"
68
+ icon={slimArrowDown}
69
+ design={ButtonDesign.Transparent}
70
+ onClick={this._handleScopeIconPress}
71
+ tooltip={this._scopeIconAccessibleName}
72
+ accessibleName={this._scopeIconAccessibleName}
73
+ accessibilityAttributes={{
74
+ hasPopup: "dialog",
75
+ expanded: this._scopePopoverOpen,
76
+ }}
77
+ />
78
+ <div class="ui5-search-field-separator"></div>
79
+ </>
80
+ )}
55
81
  </>
56
82
  ) : this.filterButton?.length ? (
57
83
  <>
@@ -70,7 +96,7 @@ export default function SearchFieldTemplate(this: SearchField, options?: SearchF
70
96
  aria-autocomplete="both"
71
97
  aria-controls="ui5-search-list"
72
98
  value={this.value}
73
- placeholder={this.placeholder}
99
+ placeholder={this._effectivePlaceholder}
74
100
  data-sap-focus-ref
75
101
  onInput={this._handleInput}
76
102
  onFocusIn={this._onfocusin}
@@ -100,6 +126,7 @@ export default function SearchFieldTemplate(this: SearchField, options?: SearchF
100
126
  ></Icon>
101
127
  </div>
102
128
  </div>
129
+ {SearchFieldScopePopoverTemplate.call(this)}
103
130
  </BusyIndicator>
104
131
  )
105
132
  );
@@ -145,7 +145,7 @@ function headerContent(this: UserMenu) {
145
145
 
146
146
  function otherAccountsContent(this: UserMenu) {
147
147
  return (<>
148
- <Panel collapsed={true} class="ui5-user-menu-other-accounts">
148
+ <Panel collapsed={true} class="ui5-user-menu-other-accounts" accessibleName={`${this._otherAccountsButtonText} (${this._otherAccounts.length})`}>
149
149
  <div slot="header" class="ui5-user-menu-account-header">
150
150
  <Title slot="header" level="H4" wrapping-type="None">{this._otherAccountsButtonText} ({this._otherAccounts.length})</Title>
151
151
  {this.showEditAccounts &&
@@ -55,11 +55,11 @@ export default function UserSettingsDialogTemplate(this: UserSettingsDialog) {
55
55
  <Toolbar slot="footer" design="Transparent" data-sap-ui-fastnavgroup="true">
56
56
  {this.saveMode ? (
57
57
  <>
58
- <ToolbarButton design="Emphasized" text={this.saveButtonText} onClick={this._handleSaveButtonClick} />
59
- <ToolbarButton design="Transparent" text={this.cancelButtonText} onClick={this._handleCancelButtonClick} />
58
+ <ToolbarButton id={`${this._id}-save-btn`} design="Emphasized" text={this.saveButtonText} onClick={this._handleSaveButtonClick} />
59
+ <ToolbarButton id={`${this._id}-cancel-btn`} design="Transparent" text={this.cancelButtonText} onClick={this._handleCancelButtonClick} />
60
60
  </>
61
61
  ) : (
62
- <ToolbarButton design="Transparent" text={this.closeButtonText} onClick={this._handleCloseButtonClick} />
62
+ <ToolbarButton id={`${this._id}-close-btn`} design="Transparent" text={this.closeButtonText} onClick={this._handleCloseButtonClick} />
63
63
  )}
64
64
  </Toolbar>
65
65
  </Dialog>
@@ -67,7 +67,7 @@ export default function UserSettingsDialogTemplate(this: UserSettingsDialog) {
67
67
  }
68
68
 
69
69
  function renderList(this: UserSettingsDialog, items: Array<UserSettingsItem> = [], classes: string) {
70
- return <List accessibleRole="Menu" onItemClick={this._handleItemClick} class={classes} separators="None" data-sap-ui-fastnavgroup="false">
70
+ return <List onItemClick={this._handleItemClick} class={classes} separators="None" data-sap-ui-fastnavgroup="false">
71
71
  {items.map(item => (
72
72
  <ListItemStandard
73
73
  class={!item._icon && item._siblingsWithIcon ? "ui5-user-settings-item-no-icon" : ""}
@@ -503,6 +503,9 @@ SEARCH_FIELD_SCOPE_SELECT_LABEL=Select scope
503
503
  #XACT: ARIA label for search field
504
504
  SEARCH_FIELD_LABEL=Search field
505
505
 
506
+ #XFLD: Placeholder text for search field with scope on mobile
507
+ SEARCH_FIELD_PLACEHOLDER_WITH_SCOPE=Search in: {0}
508
+
506
509
  #XACT: ARIA announcement for search field clear icon
507
510
  SEARCH_FIELD_CLEAR_ICON=Clear search
508
511
 
@@ -614,6 +617,15 @@ USER_SETTINGS_DIALOG_CANCEL_BUTTON_TEXT=Cancel
614
617
  #XTXT: User settings dialog not result text
615
618
  USER_SETTINGS_DIALOG_NO_SEARCH_RESULTS_TEXT=No search results
616
619
 
620
+ #XACT: ARIA announcement for the User Settings Dialog search result if no hit
621
+ USER_SETTINGS_DIALOG_SEARCH_NO_RESULTS=No search results
622
+
623
+ #XACT: ARIA announcement for the User Settings Dialog search result if one hit
624
+ USER_SETTINGS_DIALOG_SEARCH_ONE_RESULT=1 result available
625
+
626
+ #XACT: ARIA announcement for the User Settings Dialog search result if more than one hit ({0} is the number of hits)
627
+ USER_SETTINGS_DIALOG_SEARCH_MORE_RESULTS={0} results are available
628
+
617
629
  #XTXT: User settings account view edit avatar text
618
630
  USER_SETTINGS_ACCOUNT_EDIT_AVATAR_TXT=Edit avatar
619
631