@api-client/ui 0.4.2 → 0.4.3
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.
- package/.vscode/settings.json +1 -0
- package/build/src/index.d.ts +3 -0
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +4 -0
- package/build/src/index.js.map +1 -1
- package/build/src/lib/Dom.d.ts +5 -0
- package/build/src/lib/Dom.d.ts.map +1 -0
- package/build/src/lib/Dom.js +24 -0
- package/build/src/lib/Dom.js.map +1 -0
- package/build/src/md/button/internals/base.d.ts +27 -0
- package/build/src/md/button/internals/base.d.ts.map +1 -1
- package/build/src/md/button/internals/base.js +90 -1
- package/build/src/md/button/internals/base.js.map +1 -1
- package/build/src/md/icons/internals/Icon.js +2 -2
- package/build/src/md/icons/internals/Icon.js.map +1 -1
- package/build/src/md/list/internals/List.d.ts +1 -1
- package/build/src/md/list/internals/List.d.ts.map +1 -1
- package/build/src/md/list/internals/List.js +4 -4
- package/build/src/md/list/internals/List.js.map +1 -1
- package/build/src/md/list/internals/ListItem.d.ts +1 -0
- package/build/src/md/list/internals/ListItem.d.ts.map +1 -1
- package/build/src/md/list/internals/ListItem.js +10 -10
- package/build/src/md/list/internals/ListItem.js.map +1 -1
- package/build/src/md/list/internals/ListItem.styles.d.ts.map +1 -1
- package/build/src/md/list/internals/ListItem.styles.js +2 -20
- package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
- package/build/src/md/menu/index.d.ts +4 -0
- package/build/src/md/menu/index.d.ts.map +1 -0
- package/build/src/md/menu/index.js +4 -0
- package/build/src/md/menu/index.js.map +1 -0
- package/build/src/md/menu/internal/Menu.d.ts +76 -0
- package/build/src/md/menu/internal/Menu.d.ts.map +1 -0
- package/build/src/md/menu/internal/Menu.js +235 -0
- package/build/src/md/menu/internal/Menu.js.map +1 -0
- package/build/src/md/menu/internal/Menu.styles.d.ts +3 -0
- package/build/src/md/menu/internal/Menu.styles.d.ts.map +1 -0
- package/build/src/md/menu/internal/Menu.styles.js +185 -0
- package/build/src/md/menu/internal/Menu.styles.js.map +1 -0
- package/build/src/md/menu/internal/MenuItem.d.ts +77 -0
- package/build/src/md/menu/internal/MenuItem.d.ts.map +1 -0
- package/build/src/md/menu/internal/MenuItem.js +216 -0
- package/build/src/md/menu/internal/MenuItem.js.map +1 -0
- package/build/src/md/menu/internal/MenuItem.styles.d.ts +3 -0
- package/build/src/md/menu/internal/MenuItem.styles.d.ts.map +1 -0
- package/build/src/md/menu/internal/MenuItem.styles.js +64 -0
- package/build/src/md/menu/internal/MenuItem.styles.js.map +1 -0
- package/build/src/md/menu/internal/SubMenu.d.ts +56 -0
- package/build/src/md/menu/internal/SubMenu.d.ts.map +1 -0
- package/build/src/md/menu/internal/SubMenu.js +171 -0
- package/build/src/md/menu/internal/SubMenu.js.map +1 -0
- package/build/src/md/menu/internal/SubMenu.styles.d.ts +3 -0
- package/build/src/md/menu/internal/SubMenu.styles.d.ts.map +1 -0
- package/build/src/md/menu/internal/SubMenu.styles.js +8 -0
- package/build/src/md/menu/internal/SubMenu.styles.js.map +1 -0
- package/build/src/md/menu/ui-menu-item.d.ts +20 -0
- package/build/src/md/menu/ui-menu-item.d.ts.map +1 -0
- package/build/src/md/menu/ui-menu-item.js +37 -0
- package/build/src/md/menu/ui-menu-item.js.map +1 -0
- package/build/src/md/menu/ui-menu.d.ts +22 -0
- package/build/src/md/menu/ui-menu.d.ts.map +1 -0
- package/build/src/md/menu/ui-menu.js +38 -0
- package/build/src/md/menu/ui-menu.js.map +1 -0
- package/build/src/md/menu/ui-sub-menu.d.ts +20 -0
- package/build/src/md/menu/ui-sub-menu.d.ts.map +1 -0
- package/build/src/md/menu/ui-sub-menu.js +37 -0
- package/build/src/md/menu/ui-sub-menu.js.map +1 -0
- package/build/src/mixins/FileDropMixin.d.ts.map +1 -1
- package/build/src/mixins/FileDropMixin.js +7 -8
- package/build/src/mixins/FileDropMixin.js.map +1 -1
- package/build/src/mixins/RenderableMixin.d.ts.map +1 -1
- package/build/src/mixins/RenderableMixin.js +2 -3
- package/build/src/mixins/RenderableMixin.js.map +1 -1
- package/demo/md/index.html +2 -0
- package/demo/md/menu/index.html +19 -0
- package/demo/md/menu/index.ts +154 -0
- package/package.json +2 -3
- package/src/index.ts +5 -0
- package/src/lib/Dom.ts +26 -0
- package/src/md/button/internals/base.ts +77 -0
- package/src/md/icons/internals/Icon.ts +2 -2
- package/src/md/list/internals/List.ts +4 -4
- package/src/md/list/internals/ListItem.styles.ts +2 -20
- package/src/md/list/internals/ListItem.ts +11 -11
- package/src/md/menu/README.md +253 -0
- package/src/md/menu/index.ts +3 -0
- package/src/md/menu/internal/Menu.styles.ts +185 -0
- package/src/md/menu/internal/Menu.ts +205 -0
- package/src/md/menu/internal/MenuItem.styles.ts +64 -0
- package/src/md/menu/internal/MenuItem.ts +217 -0
- package/src/md/menu/internal/SubMenu.styles.ts +8 -0
- package/src/md/menu/internal/SubMenu.ts +179 -0
- package/src/md/menu/ui-menu-item.ts +25 -0
- package/src/md/menu/ui-menu.ts +26 -0
- package/src/md/menu/ui-sub-menu.ts +25 -0
- package/src/mixins/FileDropMixin.ts +106 -107
- package/src/mixins/RenderableMixin.ts +107 -108
- package/test/md/menu/Menu.test.ts +509 -0
- package/test/md/menu/MenuIntegration.test.ts +426 -0
- package/test/md/menu/MenuItem.test.ts +361 -0
- package/test/md/menu/SubMenu.test.ts +411 -0
- /package/test/{ui → md}/button/UiButton.test.ts +0 -0
- /package/test/{ui → md}/button/UiIconButton.test.ts +0 -0
- /package/test/{ui → md}/chip/UiChip.test.ts +0 -0
- /package/test/{ui → md}/collapse/UiCollapse.test.ts +0 -0
- /package/test/{ui → md}/collapse/flex-layout.test.ts +0 -0
- /package/test/{ui → md}/date-time/DateTime.test.ts +0 -0
- /package/test/{ui → md}/dialog/UiDialog.test.ts +0 -0
- /package/test/{ui → md}/progress/UiProgressElement.test.ts +0 -0
- /package/test/{ui → md}/progress/UiRangeElement.test.ts +0 -0
package/.vscode/settings.json
CHANGED
package/build/src/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { default as MarkedHighlightElement } from './elements/highlight/MarkedHighlight.js';
|
|
2
2
|
export { default as PrismHighlightElement } from './elements/highlight/PrismHighlight.js';
|
|
3
3
|
export { default as HarViewerElement } from './elements/har/HarViewer.js';
|
|
4
|
+
export { default as Menu } from './md/menu/internal/Menu.js';
|
|
5
|
+
export { default as MenuItem } from './md/menu/internal/MenuItem.js';
|
|
6
|
+
export { default as SubMenu } from './md/menu/internal/SubMenu.js';
|
|
4
7
|
export { DemoPage } from './demo/DemoPage.js';
|
|
5
8
|
export * from './bindings/base/ConfigurationBindings.js';
|
|
6
9
|
export * from './bindings/base/IoThread.js';
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAC3F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAGzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAI7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AAInD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,YAAY,EACV,UAAU,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,YAAY,GACb,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAGjE,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAIxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,KAAK,eAAe,MAAM,yCAAyC,CAAA;AAC1E,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAGpD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAGhD,cAAc,wBAAwB,CAAA;AAGtC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAC3F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAGzE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAI7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AAInD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,YAAY,EACV,UAAU,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,YAAY,GACb,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAGjE,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAIxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,KAAK,eAAe,MAAM,yCAAyC,CAAA;AAC1E,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAGpD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAGhD,cAAc,wBAAwB,CAAA;AAGtC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA"}
|
package/build/src/index.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
export { default as MarkedHighlightElement } from './elements/highlight/MarkedHighlight.js';
|
|
3
3
|
export { default as PrismHighlightElement } from './elements/highlight/PrismHighlight.js';
|
|
4
4
|
export { default as HarViewerElement } from './elements/har/HarViewer.js';
|
|
5
|
+
// Menu Components
|
|
6
|
+
export { default as Menu } from './md/menu/internal/Menu.js';
|
|
7
|
+
export { default as MenuItem } from './md/menu/internal/MenuItem.js';
|
|
8
|
+
export { default as SubMenu } from './md/menu/internal/SubMenu.js';
|
|
5
9
|
// Demo
|
|
6
10
|
export { DemoPage } from './demo/DemoPage.js';
|
|
7
11
|
// Bindings
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AAEX,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAC3F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,WAAW;AAEX,cAAc,0CAA0C,CAAA;AACxD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AAEnD,SAAS;AAET,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAQnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,SAAS;AACT,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAExC,OAAO;AAEP,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,KAAK,eAAe,MAAM,yCAAyC,CAAA;AAC1E,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAEpD,SAAS;AACT,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAEhD,SAAS;AACT,cAAc,wBAAwB,CAAA;AAEtC,QAAQ;AACR,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA","sourcesContent":["// Elements\n\nexport { default as MarkedHighlightElement } from './elements/highlight/MarkedHighlight.js'\nexport { default as PrismHighlightElement } from './elements/highlight/PrismHighlight.js'\nexport { default as HarViewerElement } from './elements/har/HarViewer.js'\n\n// Demo\nexport { DemoPage } from './demo/DemoPage.js'\n\n// Bindings\n\nexport * from './bindings/base/ConfigurationBindings.js'\nexport * from './bindings/base/IoThread.js'\nexport * from './bindings/base/PlatformBindings.js'\n\n// Events\n\nexport { Events } from './events/Events.js'\nexport { EventTypes } from './events/EventTypes.js'\nexport type {\n INavDetail,\n INavRunHttpProjectDetail,\n INavRunSchemaDesignerDetail,\n INavRunHttpClient,\n NavRunDetail,\n} from './events/NavigationEvents.js'\nexport { AppNavigationEvent } from './events/NavigationEvents.js'\n\n// Router\nexport * as Router from './lib/route.js'\n\n// libs\n\nexport { PrismHighlighter } from './elements/highlight/PrismHighlighter.js'\nexport { default as PrismStyles } from './elements/highlight/Prism.styles.js'\nexport { default as MarkdownStyles } from './elements/highlight/MarkdownStyles.js'\nexport * as PrismAutoDetect from './elements/highlight/PrismAutoDetect.js'\nexport * as RouteMixin from './mixins/RouteMixin.js'\n\n// Monaco\nexport * as MonacoLoader from './monaco/loader.js'\nexport * as MonacoTheme from './monaco/theme.js'\n\n// Config\nexport * from './lib/config/Config.js'\n\n// Other\nexport * as Decorators from './decorators/index.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AAEX,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAC3F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,kBAAkB;AAClB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAElE,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,WAAW;AAEX,cAAc,0CAA0C,CAAA;AACxD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AAEnD,SAAS;AAET,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAQnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,SAAS;AACT,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAExC,OAAO;AAEP,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,KAAK,eAAe,MAAM,yCAAyC,CAAA;AAC1E,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAEpD,SAAS;AACT,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAEhD,SAAS;AACT,cAAc,wBAAwB,CAAA;AAEtC,QAAQ;AACR,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA","sourcesContent":["// Elements\n\nexport { default as MarkedHighlightElement } from './elements/highlight/MarkedHighlight.js'\nexport { default as PrismHighlightElement } from './elements/highlight/PrismHighlight.js'\nexport { default as HarViewerElement } from './elements/har/HarViewer.js'\n\n// Menu Components\nexport { default as Menu } from './md/menu/internal/Menu.js'\nexport { default as MenuItem } from './md/menu/internal/MenuItem.js'\nexport { default as SubMenu } from './md/menu/internal/SubMenu.js'\n\n// Demo\nexport { DemoPage } from './demo/DemoPage.js'\n\n// Bindings\n\nexport * from './bindings/base/ConfigurationBindings.js'\nexport * from './bindings/base/IoThread.js'\nexport * from './bindings/base/PlatformBindings.js'\n\n// Events\n\nexport { Events } from './events/Events.js'\nexport { EventTypes } from './events/EventTypes.js'\nexport type {\n INavDetail,\n INavRunHttpProjectDetail,\n INavRunSchemaDesignerDetail,\n INavRunHttpClient,\n NavRunDetail,\n} from './events/NavigationEvents.js'\nexport { AppNavigationEvent } from './events/NavigationEvents.js'\n\n// Router\nexport * as Router from './lib/route.js'\n\n// libs\n\nexport { PrismHighlighter } from './elements/highlight/PrismHighlighter.js'\nexport { default as PrismStyles } from './elements/highlight/Prism.styles.js'\nexport { default as MarkdownStyles } from './elements/highlight/MarkdownStyles.js'\nexport * as PrismAutoDetect from './elements/highlight/PrismAutoDetect.js'\nexport * as RouteMixin from './mixins/RouteMixin.js'\n\n// Monaco\nexport * as MonacoLoader from './monaco/loader.js'\nexport * as MonacoTheme from './monaco/theme.js'\n\n// Config\nexport * from './lib/config/Config.js'\n\n// Other\nexport * as Decorators from './decorators/index.js'\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dom.d.ts","sourceRoot":"","sources":["../../../src/lib/Dom.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAsBtF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Searches for an element with the given ID in parent shadow roots
|
|
3
|
+
*/
|
|
4
|
+
export function findElementInShadowRoots(id, from) {
|
|
5
|
+
// First try to find in document
|
|
6
|
+
const rootElm = document.getElementById(id);
|
|
7
|
+
if (rootElm) {
|
|
8
|
+
return rootElm;
|
|
9
|
+
}
|
|
10
|
+
// If not found in document, search in parent shadow roots
|
|
11
|
+
let current = from;
|
|
12
|
+
while (current) {
|
|
13
|
+
const shadowRoot = current.shadowRoot;
|
|
14
|
+
if (shadowRoot) {
|
|
15
|
+
const element = shadowRoot.getElementById(id);
|
|
16
|
+
if (element) {
|
|
17
|
+
return element;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
current = current.parentElement ?? current.shadowRoot?.host;
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=Dom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dom.js","sourceRoot":"","sources":["../../../src/lib/Dom.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAU,EAAE,IAAa;IAChE,gCAAgC;IAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,0DAA0D;IAC1D,IAAI,OAAO,GAA+B,IAAI,CAAA;IAE9C,OAAO,OAAO,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,OAAsB,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAA;IAC7D,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["/**\n * Searches for an element with the given ID in parent shadow roots\n */\nexport function findElementInShadowRoots(id: string, from: Element): HTMLElement | null {\n // First try to find in document\n const rootElm = document.getElementById(id)\n if (rootElm) {\n return rootElm\n }\n // If not found in document, search in parent shadow roots\n let current: Element | null | undefined = from\n\n while (current) {\n const shadowRoot = current.shadowRoot\n if (shadowRoot) {\n const element = shadowRoot.getElementById(id)\n if (element) {\n return element as HTMLElement\n }\n }\n\n current = current.parentElement ?? current.shadowRoot?.host\n }\n\n return null\n}\n"]}
|
|
@@ -77,8 +77,28 @@ export default class BaseButton extends UiElement {
|
|
|
77
77
|
*/
|
|
78
78
|
set disabled(value: boolean);
|
|
79
79
|
protected accessor ripple: UiRipple | null;
|
|
80
|
+
/**
|
|
81
|
+
* Turns a `<ui-button>` element into a popover control button; takes the ID
|
|
82
|
+
* of the popover element to control as its value.
|
|
83
|
+
* @attribute
|
|
84
|
+
*/
|
|
85
|
+
accessor popoverTarget: string | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Specifies the action to be performed on a popover element being controlled
|
|
88
|
+
* by a control <ui-button>. Possible values are:
|
|
89
|
+
*
|
|
90
|
+
* - `hide` - The button will hide a shown popover. If you try to hide an already hidden popover,
|
|
91
|
+
* no action will be taken.
|
|
92
|
+
* - `show` - The button will show a hidden popover. If you try to show an already showing popover,
|
|
93
|
+
* no action will be taken.
|
|
94
|
+
* - `toggle` - The button will toggle a popover between showing and hidden. If the popover is hidden,
|
|
95
|
+
* it will be shown; if the popover is showing, it will be hidden. If popoverTargetAction is omitted,
|
|
96
|
+
* "toggle" is the default action that will be performed by the control button.
|
|
97
|
+
*/
|
|
98
|
+
accessor popoverTargetAction: string | undefined;
|
|
80
99
|
constructor();
|
|
81
100
|
connectedCallback(): void;
|
|
101
|
+
protected update(changedProperties: PropertyValues<this>): void;
|
|
82
102
|
protected updated(cp: PropertyValues<this>): void;
|
|
83
103
|
protected updatePressedState(): void;
|
|
84
104
|
checkValidity(): boolean;
|
|
@@ -87,6 +107,13 @@ export default class BaseButton extends UiElement {
|
|
|
87
107
|
beginPress(options: BeginPressConfig): void;
|
|
88
108
|
endPress(config: EndPressConfig): void;
|
|
89
109
|
handleClick(e: MouseEvent): void;
|
|
110
|
+
protected setupPopoverTarget(): void;
|
|
111
|
+
/**
|
|
112
|
+
* When the button has a popover target, this method toggles the popover
|
|
113
|
+
* visibility by finding the element in the shadow roots and calling its
|
|
114
|
+
* `togglePopover` method.
|
|
115
|
+
*/
|
|
116
|
+
protected handlePopoverAction(): void;
|
|
90
117
|
protected handleSubmit(): void;
|
|
91
118
|
handlePointerEnter(e: PointerEvent): void;
|
|
92
119
|
handlePointerLeave(e: PointerEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/md/button/internals/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/md/button/internals/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
2
|
import { html, nothing } from 'lit';
|
|
3
3
|
import { property, query } from 'lit/decorators.js';
|
|
4
|
+
import { nanoid } from 'nanoid';
|
|
4
5
|
import { UiElement } from '../../UiElement.js';
|
|
5
6
|
import { isDisabled, setDisabled } from '../../../lib/disabled.js';
|
|
7
|
+
import { findElementInShadowRoots } from '../../../lib/Dom.js';
|
|
6
8
|
import '../../ripple/ui-ripple.js';
|
|
7
9
|
import '@material/web/focus/md-focus-ring.js';
|
|
8
10
|
let BaseButton = (() => {
|
|
@@ -34,6 +36,12 @@ let BaseButton = (() => {
|
|
|
34
36
|
let _ripple_decorators;
|
|
35
37
|
let _ripple_initializers = [];
|
|
36
38
|
let _ripple_extraInitializers = [];
|
|
39
|
+
let _popoverTarget_decorators;
|
|
40
|
+
let _popoverTarget_initializers = [];
|
|
41
|
+
let _popoverTarget_extraInitializers = [];
|
|
42
|
+
let _popoverTargetAction_decorators;
|
|
43
|
+
let _popoverTargetAction_initializers = [];
|
|
44
|
+
let _popoverTargetAction_extraInitializers = [];
|
|
37
45
|
return class BaseButton extends _classSuper {
|
|
38
46
|
static {
|
|
39
47
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
@@ -47,6 +55,8 @@ let BaseButton = (() => {
|
|
|
47
55
|
_size_decorators = [property({ type: String, reflect: true })];
|
|
48
56
|
_set_disabled_decorators = [property({ reflect: true, type: Boolean })];
|
|
49
57
|
_ripple_decorators = [query('ui-ripple')];
|
|
58
|
+
_popoverTarget_decorators = [property({ type: String, reflect: true })];
|
|
59
|
+
_popoverTargetAction_decorators = [property({ type: String, reflect: true })];
|
|
50
60
|
__esDecorate(this, null, _name_decorators, { kind: "accessor", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
|
|
51
61
|
__esDecorate(this, null, _set_value_decorators, { kind: "setter", name: "value", static: false, private: false, access: { has: obj => "value" in obj, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
52
62
|
__esDecorate(this, null, _trailingIcon_decorators, { kind: "accessor", name: "trailingIcon", static: false, private: false, access: { has: obj => "trailingIcon" in obj, get: obj => obj.trailingIcon, set: (obj, value) => { obj.trailingIcon = value; } }, metadata: _metadata }, _trailingIcon_initializers, _trailingIcon_extraInitializers);
|
|
@@ -57,6 +67,8 @@ let BaseButton = (() => {
|
|
|
57
67
|
__esDecorate(this, null, _size_decorators, { kind: "accessor", name: "size", static: false, private: false, access: { has: obj => "size" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);
|
|
58
68
|
__esDecorate(this, null, _set_disabled_decorators, { kind: "setter", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
59
69
|
__esDecorate(this, null, _ripple_decorators, { kind: "accessor", name: "ripple", static: false, private: false, access: { has: obj => "ripple" in obj, get: obj => obj.ripple, set: (obj, value) => { obj.ripple = value; } }, metadata: _metadata }, _ripple_initializers, _ripple_extraInitializers);
|
|
70
|
+
__esDecorate(this, null, _popoverTarget_decorators, { kind: "accessor", name: "popoverTarget", static: false, private: false, access: { has: obj => "popoverTarget" in obj, get: obj => obj.popoverTarget, set: (obj, value) => { obj.popoverTarget = value; } }, metadata: _metadata }, _popoverTarget_initializers, _popoverTarget_extraInitializers);
|
|
71
|
+
__esDecorate(this, null, _popoverTargetAction_decorators, { kind: "accessor", name: "popoverTargetAction", static: false, private: false, access: { has: obj => "popoverTargetAction" in obj, get: obj => obj.popoverTargetAction, set: (obj, value) => { obj.popoverTargetAction = value; } }, metadata: _metadata }, _popoverTargetAction_initializers, _popoverTargetAction_extraInitializers);
|
|
60
72
|
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
61
73
|
}
|
|
62
74
|
static formAssociated = true;
|
|
@@ -181,9 +193,32 @@ let BaseButton = (() => {
|
|
|
181
193
|
#ripple_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _ripple_initializers, void 0));
|
|
182
194
|
get ripple() { return this.#ripple_accessor_storage; }
|
|
183
195
|
set ripple(value) { this.#ripple_accessor_storage = value; }
|
|
196
|
+
#popoverTarget_accessor_storage = (__runInitializers(this, _ripple_extraInitializers), __runInitializers(this, _popoverTarget_initializers, void 0));
|
|
197
|
+
/**
|
|
198
|
+
* Turns a `<ui-button>` element into a popover control button; takes the ID
|
|
199
|
+
* of the popover element to control as its value.
|
|
200
|
+
* @attribute
|
|
201
|
+
*/
|
|
202
|
+
get popoverTarget() { return this.#popoverTarget_accessor_storage; }
|
|
203
|
+
set popoverTarget(value) { this.#popoverTarget_accessor_storage = value; }
|
|
204
|
+
#popoverTargetAction_accessor_storage = (__runInitializers(this, _popoverTarget_extraInitializers), __runInitializers(this, _popoverTargetAction_initializers, void 0));
|
|
205
|
+
/**
|
|
206
|
+
* Specifies the action to be performed on a popover element being controlled
|
|
207
|
+
* by a control <ui-button>. Possible values are:
|
|
208
|
+
*
|
|
209
|
+
* - `hide` - The button will hide a shown popover. If you try to hide an already hidden popover,
|
|
210
|
+
* no action will be taken.
|
|
211
|
+
* - `show` - The button will show a hidden popover. If you try to show an already showing popover,
|
|
212
|
+
* no action will be taken.
|
|
213
|
+
* - `toggle` - The button will toggle a popover between showing and hidden. If the popover is hidden,
|
|
214
|
+
* it will be shown; if the popover is showing, it will be hidden. If popoverTargetAction is omitted,
|
|
215
|
+
* "toggle" is the default action that will be performed by the control button.
|
|
216
|
+
*/
|
|
217
|
+
get popoverTargetAction() { return this.#popoverTargetAction_accessor_storage; }
|
|
218
|
+
set popoverTargetAction(value) { this.#popoverTargetAction_accessor_storage = value; }
|
|
184
219
|
constructor() {
|
|
185
220
|
super();
|
|
186
|
-
__runInitializers(this,
|
|
221
|
+
__runInitializers(this, _popoverTargetAction_extraInitializers);
|
|
187
222
|
this.actionController.cancelKeyboardEvents = true;
|
|
188
223
|
this.addEventListener('keydown', this.handleKeyDown.bind(this));
|
|
189
224
|
this.addEventListener('keyup', this.handleKeyUp.bind(this));
|
|
@@ -204,6 +239,12 @@ let BaseButton = (() => {
|
|
|
204
239
|
this.setAttribute('tabindex', '0');
|
|
205
240
|
}
|
|
206
241
|
}
|
|
242
|
+
update(changedProperties) {
|
|
243
|
+
if (changedProperties.has('popoverTarget')) {
|
|
244
|
+
this.setupPopoverTarget();
|
|
245
|
+
}
|
|
246
|
+
super.update(changedProperties);
|
|
247
|
+
}
|
|
207
248
|
updated(cp) {
|
|
208
249
|
super.updated(cp);
|
|
209
250
|
// If the button is disabled, remove the tabindex attribute
|
|
@@ -275,8 +316,56 @@ let BaseButton = (() => {
|
|
|
275
316
|
});
|
|
276
317
|
this.dispatchEvent(e);
|
|
277
318
|
}
|
|
319
|
+
this.handlePopoverAction();
|
|
278
320
|
this.endPress({ cancelled: false, actionData: { event: e } });
|
|
279
321
|
}
|
|
322
|
+
setupPopoverTarget() {
|
|
323
|
+
const id = this.popoverTarget;
|
|
324
|
+
if (!id) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const element = findElementInShadowRoots(id, this);
|
|
328
|
+
if (!element) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
// A regular button first sets its value to the popover target ID,
|
|
332
|
+
this.value = id;
|
|
333
|
+
// create an anchor association with the popover target
|
|
334
|
+
if (!this.id) {
|
|
335
|
+
this.id = nanoid();
|
|
336
|
+
}
|
|
337
|
+
const anchorName = `--anchor-${this.id}`;
|
|
338
|
+
this.style.setProperty('anchor-name', anchorName);
|
|
339
|
+
element.style.setProperty('position-anchor', anchorName);
|
|
340
|
+
this.setAttribute('aria-details', id);
|
|
341
|
+
this.setAttribute('aria-controls', id);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* When the button has a popover target, this method toggles the popover
|
|
345
|
+
* visibility by finding the element in the shadow roots and calling its
|
|
346
|
+
* `togglePopover` method.
|
|
347
|
+
*/
|
|
348
|
+
handlePopoverAction() {
|
|
349
|
+
const id = this.popoverTarget;
|
|
350
|
+
if (!id) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const element = findElementInShadowRoots(id, this);
|
|
354
|
+
if (!element) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
const action = this.popoverTargetAction || 'toggle';
|
|
358
|
+
if (action === 'hide') {
|
|
359
|
+
element.hidePopover();
|
|
360
|
+
}
|
|
361
|
+
else if (action === 'show') {
|
|
362
|
+
element.showPopover();
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
element.togglePopover();
|
|
366
|
+
}
|
|
367
|
+
element.focus();
|
|
368
|
+
}
|
|
280
369
|
handleSubmit() {
|
|
281
370
|
const { name, value, type, disabled, form } = this;
|
|
282
371
|
if (!form || !type || disabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/md/button/internals/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport { UiElement } from '../../UiElement.js'\nimport type { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport type UiRipple from '../../ripple/internals/ripple.js'\n\nimport '../../ripple/ui-ripple.js'\nimport '@material/web/focus/md-focus-ring.js'\n\nexport type ButtonType = 'submit' | 'reset' | 'button'\nexport type MdButtonShape = 'round' | 'square'\nexport type MdButtonSize = 'xs' | 's' | 'm' | 'l' | 'xl'\n\n/**\n * A material design button with M3 Expressive features - CSS-native implementation.\n *\n * @slot icon - A slot for the icon element\n * @slot - The default slot for the label\n * @attribute {string} form - The form associated with this element when the element is outside the form.\n * @fires {ToggleEvent} toggle - Fired when the `toggle` property is true and the button is clicked,\n * changing its selection state.\n * The event's `newState` and `oldState` properties (string values: 'selected' or\n * 'unselected') detail this selection change.\n */\nexport default class BaseButton extends UiElement {\n static readonly formAssociated = true\n\n #internals = this.attachInternals()\n\n /**\n * The form associated with this element\n * @attribute\n */\n get form(): HTMLFormElement | null | string {\n return this.#internals.form\n }\n\n get validity() {\n return this.#internals.validity\n }\n\n get validationMessage() {\n return this.#internals.validationMessage\n }\n\n get willValidate() {\n return this.#internals.willValidate\n }\n\n /**\n * The name of the button, submitted as a pair with the button's value as part of the form data.\n * @attribute\n */\n @property({ type: String }) accessor name: string | undefined\n\n #value?: string\n\n get value(): string | undefined {\n return this.#value\n }\n\n /**\n * Defines the value associated with the button's name when it's submitted with the form data.\n * @attribute\n */\n @property({ type: String })\n set value(value: string | undefined) {\n if (this.#value === value) {\n return\n }\n this.#value = value\n this.#internals?.setFormValue(value || null)\n }\n\n /**\n * Whether to render the icon at the inline end of the label rather than the inline start.\n * @attribute\n */\n @property({ type: Boolean, attribute: 'trailingicon', reflect: true }) accessor trailingIcon = false\n\n /**\n * The default behavior of the button.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor type: ButtonType = 'button'\n\n /**\n * When set, the button is a toggle button.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor toggle = false\n\n /**\n * Indicates that the button is currently selected.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor selected = false\n\n /**\n * The shape of the button.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor shape: MdButtonShape = 'round'\n\n /**\n * The size of the button.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor size: MdButtonSize = 's'\n\n get disabled(): boolean {\n return isDisabled(this)\n }\n\n /**\n * When set, the button is in a disabled state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean })\n set disabled(value: boolean) {\n const old = isDisabled(this)\n setDisabled(this, value)\n this.requestUpdate('disabled', old)\n }\n\n @query('ui-ripple') protected accessor ripple!: UiRipple | null\n\n constructor() {\n super()\n this.actionController.cancelKeyboardEvents = true\n this.addEventListener('keydown', this.handleKeyDown.bind(this))\n this.addEventListener('keyup', this.handleKeyUp.bind(this))\n this.addEventListener('click', this.handleClick.bind(this))\n this.addEventListener('pointerdown', this.handlePointerDown.bind(this))\n this.addEventListener('pointerup', this.handlePointerUp.bind(this))\n this.addEventListener('pointercancel', this.handlePointerCancel.bind(this))\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this))\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this))\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this))\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button')\n }\n if (!this.hasAttribute('tabindex') && !this.disabled) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n protected override updated(cp: PropertyValues<this>): void {\n super.updated(cp)\n\n // If the button is disabled, remove the tabindex attribute\n if (cp.has('disabled')) {\n if (this.disabled) {\n this.removeAttribute('tabindex')\n } else if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n if (cp.has('toggle') || cp.has('selected')) {\n this.updatePressedState()\n }\n }\n\n protected updatePressedState(): void {\n if (this.toggle) {\n this.ariaPressed = String(this.selected)\n } else {\n this.selected = false\n this.removeAttribute('aria-pressed')\n }\n }\n\n checkValidity() {\n return this.#internals.checkValidity()\n }\n\n reportValidity() {\n return this.#internals.reportValidity()\n }\n\n protected override firstUpdated(): void {\n this.#internals?.setFormValue(this.value || null)\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options)\n this.classList.add('pressed')\n this.ripple?.beginFocus()\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config)\n this.classList.remove('pressed')\n this.ripple?.endFocus()\n const { cancelled, reason } = config\n if (cancelled) {\n return\n }\n const allowedReasons = reason === 'enter' || reason === 'space'\n if (this.type === 'submit' && (!reason || allowedReasons)) {\n this.handleSubmit()\n } else if (allowedReasons) {\n this.click()\n }\n }\n\n override handleClick(e: MouseEvent): void {\n super.handleClick(e)\n if (this.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n if (this.toggle) {\n this.selected = !this.selected\n const e = new ToggleEvent('toggle', {\n bubbles: true,\n composed: true,\n newState: this.selected ? 'selected' : 'unselected',\n oldState: this.selected ? 'unselected' : 'selected',\n })\n this.dispatchEvent(e)\n }\n this.endPress({ cancelled: false, actionData: { event: e } })\n }\n\n protected handleSubmit(): void {\n const { name, value, type, disabled, form } = this\n if (!form || !type || disabled) {\n return\n }\n const typedForm = form as HTMLFormElement\n let button: HTMLButtonElement | undefined\n if (name || value) {\n button = document.createElement('button')\n if (name) {\n button.name = name\n }\n if (value) {\n button.value = value\n }\n button.type = type\n button.hidden = true\n typedForm.append(button)\n }\n try {\n typedForm.requestSubmit(button)\n } catch {\n // Ignore errors\n }\n if (button) {\n typedForm.removeChild(button)\n }\n }\n\n override handlePointerEnter(e: PointerEvent): void {\n super.handlePointerEnter(e)\n this.ripple?.beginHover(e)\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e)\n this.ripple?.endHover()\n }\n\n protected override render(): TemplateResult {\n const { trailingIcon = false } = this\n const icon = this.renderIcon()\n\n return html`\n ${this.renderFocusRing()} ${this.renderRipple()} ${trailingIcon ? nothing : icon}\n <slot></slot>\n ${trailingIcon ? icon : nothing}\n `\n }\n\n protected renderIcon(): TemplateResult {\n return html`<slot name=\"icon\"></slot>`\n }\n\n protected renderFocusRing(): TemplateResult {\n return html`<md-focus-ring part=\"focus-ring\" class=\"focus-ring\" .control=\"${this as HTMLElement}\"></md-focus-ring>`\n }\n\n protected renderRipple(): TemplateResult {\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></ui-ripple>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/md/button/internals/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport { nanoid } from 'nanoid'\nimport { UiElement } from '../../UiElement.js'\nimport type { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport type UiRipple from '../../ripple/internals/ripple.js'\nimport { findElementInShadowRoots } from '../../../lib/Dom.js'\n\nimport '../../ripple/ui-ripple.js'\nimport '@material/web/focus/md-focus-ring.js'\n\nexport type ButtonType = 'submit' | 'reset' | 'button'\nexport type MdButtonShape = 'round' | 'square'\nexport type MdButtonSize = 'xs' | 's' | 'm' | 'l' | 'xl'\n\n/**\n * A material design button with M3 Expressive features - CSS-native implementation.\n *\n * @slot icon - A slot for the icon element\n * @slot - The default slot for the label\n * @attribute {string} form - The form associated with this element when the element is outside the form.\n * @fires {ToggleEvent} toggle - Fired when the `toggle` property is true and the button is clicked,\n * changing its selection state.\n * The event's `newState` and `oldState` properties (string values: 'selected' or\n * 'unselected') detail this selection change.\n */\nexport default class BaseButton extends UiElement {\n static readonly formAssociated = true\n\n #internals = this.attachInternals()\n\n /**\n * The form associated with this element\n * @attribute\n */\n get form(): HTMLFormElement | null | string {\n return this.#internals.form\n }\n\n get validity() {\n return this.#internals.validity\n }\n\n get validationMessage() {\n return this.#internals.validationMessage\n }\n\n get willValidate() {\n return this.#internals.willValidate\n }\n\n /**\n * The name of the button, submitted as a pair with the button's value as part of the form data.\n * @attribute\n */\n @property({ type: String }) accessor name: string | undefined\n\n #value?: string\n\n get value(): string | undefined {\n return this.#value\n }\n\n /**\n * Defines the value associated with the button's name when it's submitted with the form data.\n * @attribute\n */\n @property({ type: String })\n set value(value: string | undefined) {\n if (this.#value === value) {\n return\n }\n this.#value = value\n this.#internals?.setFormValue(value || null)\n }\n\n /**\n * Whether to render the icon at the inline end of the label rather than the inline start.\n * @attribute\n */\n @property({ type: Boolean, attribute: 'trailingicon', reflect: true }) accessor trailingIcon = false\n\n /**\n * The default behavior of the button.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor type: ButtonType = 'button'\n\n /**\n * When set, the button is a toggle button.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor toggle = false\n\n /**\n * Indicates that the button is currently selected.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor selected = false\n\n /**\n * The shape of the button.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor shape: MdButtonShape = 'round'\n\n /**\n * The size of the button.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor size: MdButtonSize = 's'\n\n get disabled(): boolean {\n return isDisabled(this)\n }\n\n /**\n * When set, the button is in a disabled state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean })\n set disabled(value: boolean) {\n const old = isDisabled(this)\n setDisabled(this, value)\n this.requestUpdate('disabled', old)\n }\n\n @query('ui-ripple') protected accessor ripple!: UiRipple | null\n\n /**\n * Turns a `<ui-button>` element into a popover control button; takes the ID\n * of the popover element to control as its value.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor popoverTarget: string | undefined\n /**\n * Specifies the action to be performed on a popover element being controlled\n * by a control <ui-button>. Possible values are:\n *\n * - `hide` - The button will hide a shown popover. If you try to hide an already hidden popover,\n * no action will be taken.\n * - `show` - The button will show a hidden popover. If you try to show an already showing popover,\n * no action will be taken.\n * - `toggle` - The button will toggle a popover between showing and hidden. If the popover is hidden,\n * it will be shown; if the popover is showing, it will be hidden. If popoverTargetAction is omitted,\n * \"toggle\" is the default action that will be performed by the control button.\n */\n @property({ type: String, reflect: true }) accessor popoverTargetAction: string | undefined\n\n constructor() {\n super()\n this.actionController.cancelKeyboardEvents = true\n this.addEventListener('keydown', this.handleKeyDown.bind(this))\n this.addEventListener('keyup', this.handleKeyUp.bind(this))\n this.addEventListener('click', this.handleClick.bind(this))\n this.addEventListener('pointerdown', this.handlePointerDown.bind(this))\n this.addEventListener('pointerup', this.handlePointerUp.bind(this))\n this.addEventListener('pointercancel', this.handlePointerCancel.bind(this))\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this))\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this))\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this))\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button')\n }\n if (!this.hasAttribute('tabindex') && !this.disabled) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n protected override update(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('popoverTarget')) {\n this.setupPopoverTarget()\n }\n super.update(changedProperties)\n }\n\n protected override updated(cp: PropertyValues<this>): void {\n super.updated(cp)\n\n // If the button is disabled, remove the tabindex attribute\n if (cp.has('disabled')) {\n if (this.disabled) {\n this.removeAttribute('tabindex')\n } else if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n if (cp.has('toggle') || cp.has('selected')) {\n this.updatePressedState()\n }\n }\n\n protected updatePressedState(): void {\n if (this.toggle) {\n this.ariaPressed = String(this.selected)\n } else {\n this.selected = false\n this.removeAttribute('aria-pressed')\n }\n }\n\n checkValidity() {\n return this.#internals.checkValidity()\n }\n\n reportValidity() {\n return this.#internals.reportValidity()\n }\n\n protected override firstUpdated(): void {\n this.#internals?.setFormValue(this.value || null)\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options)\n this.classList.add('pressed')\n this.ripple?.beginFocus()\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config)\n this.classList.remove('pressed')\n this.ripple?.endFocus()\n const { cancelled, reason } = config\n if (cancelled) {\n return\n }\n const allowedReasons = reason === 'enter' || reason === 'space'\n if (this.type === 'submit' && (!reason || allowedReasons)) {\n this.handleSubmit()\n } else if (allowedReasons) {\n this.click()\n }\n }\n\n override handleClick(e: MouseEvent): void {\n super.handleClick(e)\n if (this.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n if (this.toggle) {\n this.selected = !this.selected\n const e = new ToggleEvent('toggle', {\n bubbles: true,\n composed: true,\n newState: this.selected ? 'selected' : 'unselected',\n oldState: this.selected ? 'unselected' : 'selected',\n })\n this.dispatchEvent(e)\n }\n this.handlePopoverAction()\n this.endPress({ cancelled: false, actionData: { event: e } })\n }\n\n protected setupPopoverTarget(): void {\n const id = this.popoverTarget\n if (!id) {\n return\n }\n const element = findElementInShadowRoots(id, this)\n if (!element) {\n return\n }\n // A regular button first sets its value to the popover target ID,\n this.value = id\n // create an anchor association with the popover target\n if (!this.id) {\n this.id = nanoid()\n }\n const anchorName = `--anchor-${this.id}`\n this.style.setProperty('anchor-name', anchorName)\n element.style.setProperty('position-anchor', anchorName)\n this.setAttribute('aria-details', id)\n this.setAttribute('aria-controls', id)\n }\n\n /**\n * When the button has a popover target, this method toggles the popover\n * visibility by finding the element in the shadow roots and calling its\n * `togglePopover` method.\n */\n protected handlePopoverAction(): void {\n const id = this.popoverTarget\n if (!id) {\n return\n }\n const element = findElementInShadowRoots(id, this)\n if (!element) {\n return\n }\n const action = this.popoverTargetAction || 'toggle'\n if (action === 'hide') {\n element.hidePopover()\n } else if (action === 'show') {\n element.showPopover()\n } else {\n element.togglePopover()\n }\n element.focus()\n }\n\n protected handleSubmit(): void {\n const { name, value, type, disabled, form } = this\n if (!form || !type || disabled) {\n return\n }\n const typedForm = form as HTMLFormElement\n let button: HTMLButtonElement | undefined\n if (name || value) {\n button = document.createElement('button')\n if (name) {\n button.name = name\n }\n if (value) {\n button.value = value\n }\n button.type = type\n button.hidden = true\n typedForm.append(button)\n }\n try {\n typedForm.requestSubmit(button)\n } catch {\n // Ignore errors\n }\n if (button) {\n typedForm.removeChild(button)\n }\n }\n\n override handlePointerEnter(e: PointerEvent): void {\n super.handlePointerEnter(e)\n this.ripple?.beginHover(e)\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e)\n this.ripple?.endHover()\n }\n\n protected override render(): TemplateResult {\n const { trailingIcon = false } = this\n const icon = this.renderIcon()\n\n return html`\n ${this.renderFocusRing()} ${this.renderRipple()} ${trailingIcon ? nothing : icon}\n <slot></slot>\n ${trailingIcon ? icon : nothing}\n `\n }\n\n protected renderIcon(): TemplateResult {\n return html`<slot name=\"icon\"></slot>`\n }\n\n protected renderFocusRing(): TemplateResult {\n return html`<md-focus-ring part=\"focus-ring\" class=\"focus-ring\" .control=\"${this as HTMLElement}\"></md-focus-ring>`\n }\n\n protected renderRipple(): TemplateResult {\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></ui-ripple>`\n }\n}\n"]}
|
|
@@ -67,11 +67,11 @@ let UiIcon = (() => {
|
|
|
67
67
|
* @return Template result for an icon
|
|
68
68
|
*/
|
|
69
69
|
render() {
|
|
70
|
-
const { hasIcon, iconValue
|
|
70
|
+
const { hasIcon, iconValue } = this;
|
|
71
71
|
if (!hasIcon) {
|
|
72
72
|
return html `<slot></slot>`;
|
|
73
73
|
}
|
|
74
|
-
return html `${
|
|
74
|
+
return html `${iconValue}`;
|
|
75
75
|
}
|
|
76
76
|
constructor() {
|
|
77
77
|
super(...arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.ts"],"names":[],"mappings":";AAAA;;;EAGE;AACF,OAAO,EAAE,IAAI,EAAkB,UAAU,EAAqC,MAAM,KAAK,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;;sBAGA,UAAU;;;;iBAAzB,MAAO,SAAQ,WAAU;;;gCAU3C,QAAQ,EAAE;YAAC,iKAAS,IAAI,6BAAJ,IAAI,mFAAsB;;;QATvC,eAAe,GAAG,KAAK,CAAA;QAEvB,SAAS,CAA+B;QAOpC,6EAAmC;QAL/C;;;;WAIG;QACS,IAAS,IAAI,0CAAsB;QAAnC,IAAS,IAAI,gDAAsB;QAE/C;;WAEG;QACH,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,eAAe,CAAA;QAC7B,CAAC;QAEQ,iBAAiB;YACxB,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;YACnD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBAC3B,wEAAwE;gBACxE,+BAA+B;gBAC/B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;YACD,wEAAwE;YACxE,4BAA4B;YAC5B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC1C,CAAC;QAEkB,UAAU,CAAC,EAAwB;YACpD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAED;;;;WAIG;QACO,UAAU,CAAC,IAA0B;YAC7C,MAAM,IAAI,GAAI,KAAe,CAAC,IAAgB,CAAkC,CAAA;YAChF,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACM,MAAM;YACb,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.ts"],"names":[],"mappings":";AAAA;;;EAGE;AACF,OAAO,EAAE,IAAI,EAAkB,UAAU,EAAqC,MAAM,KAAK,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;;sBAGA,UAAU;;;;iBAAzB,MAAO,SAAQ,WAAU;;;gCAU3C,QAAQ,EAAE;YAAC,iKAAS,IAAI,6BAAJ,IAAI,mFAAsB;;;QATvC,eAAe,GAAG,KAAK,CAAA;QAEvB,SAAS,CAA+B;QAOpC,6EAAmC;QAL/C;;;;WAIG;QACS,IAAS,IAAI,0CAAsB;QAAnC,IAAS,IAAI,gDAAsB;QAE/C;;WAEG;QACH,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,eAAe,CAAA;QAC7B,CAAC;QAEQ,iBAAiB;YACxB,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;YACnD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBAC3B,wEAAwE;gBACxE,+BAA+B;gBAC/B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;YACD,wEAAwE;YACxE,4BAA4B;YAC5B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC1C,CAAC;QAEkB,UAAU,CAAC,EAAwB;YACpD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAED;;;;WAIG;QACO,UAAU,CAAC,IAA0B;YAC7C,MAAM,IAAI,GAAI,KAAe,CAAC,IAAgB,CAAkC,CAAA;YAChF,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACM,MAAM;YACb,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAA,eAAe,CAAA;YAC5B,CAAC;YACD,OAAO,IAAI,CAAA,GAAG,SAAS,EAAE,CAAA;QAC3B,CAAC;;;;;;;AA5DH,sBA6DC","sourcesContent":["/*\nCopyright 2022 Pawel Psztyc\nLicensed under the CC-BY 2.0\n*/\nimport { html, TemplateResult, LitElement, SVGTemplateResult, PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport * as Icons from '../Icons.js'\nimport { IconType } from '../Icons.js'\n\nexport default class UiIcon extends LitElement {\n private hasIconInternal = false\n\n private iconValue: SVGTemplateResult | undefined\n\n /**\n * An icon to be rendered from the ApiIcons library.\n * When incorrect icon is referenced nothing is rendered.\n * @attribute\n */\n @property() accessor icon: IconType | undefined\n\n /**\n * @returns True when the icon was found and is rendered.\n */\n get hasIcon(): boolean {\n return this.hasIconInternal\n }\n\n override connectedCallback() {\n super.connectedCallback()\n const ariaHidden = this.getAttribute('aria-hidden')\n if (ariaHidden === 'false') {\n // Allow the user to set `aria-hidden=\"false\"` to create an icon that is\n // announced by screen readers.\n this.removeAttribute('aria-hidden')\n return\n }\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true')\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('icon')) {\n this.updateIcon(this.icon)\n }\n }\n\n /**\n * Maps icon name to it's definition and sets `hasIcon` value.\n *\n * @param name Icon name\n */\n protected updateIcon(name: IconType | undefined): void {\n const icon = (Icons as never)[name as IconType] as SVGTemplateResult | undefined\n this.hasIconInternal = !!icon\n this.iconValue = icon\n this.requestUpdate()\n }\n\n /**\n * @return Template result for an icon\n */\n override render(): TemplateResult {\n const { hasIcon, iconValue } = this\n if (!hasIcon) {\n return html`<slot></slot>`\n }\n return html`${iconValue}`\n }\n}\n"]}
|
|
@@ -82,7 +82,7 @@ export default class UiList extends LitElement {
|
|
|
82
82
|
* @param item The UiListItem that is selected.
|
|
83
83
|
* @returns True when the event was canceled.
|
|
84
84
|
*/
|
|
85
|
-
notifySelect(item: UiListItem): boolean;
|
|
85
|
+
notifySelect(item: UiListItem, index?: number): boolean;
|
|
86
86
|
protected manageSelection(item: UiListItem): void;
|
|
87
87
|
render(): TemplateResult;
|
|
88
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAEtE,OAAO,UAAU,MAAM,eAAe,CAAA;AActC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAC5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAK;IAEjC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAO;IAExC,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAO;IAE3C;;;;OAIG;IACyB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAErD;;;OAGG;IAC0B,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAA;IAE7B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG,WAAW,EAAE,CAAA;;IASpF,iBAAiB,IAAI,IAAI;IAOzB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IASnC,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAM9D,iBAAiB,IAAI,IAAI;IAKzB,gBAAgB,IAAI,IAAI;IAKxB,mBAAmB,IAAI,IAAI;IAK3B,SAAS,CAAC,WAAW,IAAI,IAAI;IAe7B;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU;IAO7D,YAAY,IAAI,UAAU;IAI1B,WAAW,IAAI,UAAU;IAIzB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IA0B7C,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IA0BzC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAarD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAIrD,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIpD,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAS1D,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAoCzC,aAAa,IAAI,IAAI;IAOrB,YAAY,IAAI,IAAI;IAOpB,YAAY,CAAC,IAAI,oBAAsB,GAAG,IAAI;IAO9C,gBAAgB,CAAC,IAAI,oBAAsB,GAAG,IAAI;IAOlD;;;;OAIG;IACH,aAAa,CAAC,IAAI,oBAAyB,GAAG,IAAI;IAKlD;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,oBAAyB,GAAG,IAAI;IAKtD,cAAc,IAAI,IAAI;IAKtB,aAAa,IAAI,IAAI;IAKrB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIpC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAWvD;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAwB3C;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAEtE,OAAO,UAAU,MAAM,eAAe,CAAA;AActC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAC5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAK;IAEjC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAO;IAExC,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAO;IAE3C;;;;OAIG;IACyB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAErD;;;OAGG;IAC0B,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAA;IAE7B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG,WAAW,EAAE,CAAA;;IASpF,iBAAiB,IAAI,IAAI;IAOzB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IASnC,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAM9D,iBAAiB,IAAI,IAAI;IAKzB,gBAAgB,IAAI,IAAI;IAKxB,mBAAmB,IAAI,IAAI;IAK3B,SAAS,CAAC,WAAW,IAAI,IAAI;IAe7B;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU;IAO7D,YAAY,IAAI,UAAU;IAI1B,WAAW,IAAI,UAAU;IAIzB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IA0B7C,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IA0BzC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAarD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAIrD,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIpD,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAS1D,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAoCzC,aAAa,IAAI,IAAI;IAOrB,YAAY,IAAI,IAAI;IAOpB,YAAY,CAAC,IAAI,oBAAsB,GAAG,IAAI;IAO9C,gBAAgB,CAAC,IAAI,oBAAsB,GAAG,IAAI;IAOlD;;;;OAIG;IACH,aAAa,CAAC,IAAI,oBAAyB,GAAG,IAAI;IAKlD;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,oBAAyB,GAAG,IAAI;IAKtD,cAAc,IAAI,IAAI;IAKtB,aAAa,IAAI,IAAI;IAKrB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIpC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAWvD;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAwB3C;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBvD,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IASxC,MAAM,IAAI,cAAc;CAGlC"}
|
|
@@ -323,16 +323,16 @@ let UiList = (() => {
|
|
|
323
323
|
* @param item The UiListItem that is selected.
|
|
324
324
|
* @returns True when the event was canceled.
|
|
325
325
|
*/
|
|
326
|
-
notifySelect(item) {
|
|
327
|
-
const
|
|
328
|
-
if (
|
|
326
|
+
notifySelect(item, index) {
|
|
327
|
+
const resolvedIndex = index ?? this.items.indexOf(item);
|
|
328
|
+
if (resolvedIndex === -1) {
|
|
329
329
|
return false;
|
|
330
330
|
}
|
|
331
331
|
const event = new CustomEvent('select', {
|
|
332
332
|
cancelable: true,
|
|
333
333
|
detail: {
|
|
334
334
|
item,
|
|
335
|
-
index,
|
|
335
|
+
index: resolvedIndex,
|
|
336
336
|
},
|
|
337
337
|
});
|
|
338
338
|
this.dispatchEvent(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../../../src/md/list/internals/List.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, queryAssignedElements } from 'lit/decorators.js'\nimport UiListItem from './ListItem.js'\n\nconst NAVIGATION_KEYS = {\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n Home: 'Home',\n End: 'End',\n}\n\nconst ACTIVATION_KEYS = {\n Enter: 'Enter',\n Space: ' ',\n}\n\nexport interface UiListSelection {\n item: HTMLElement\n index: number\n}\n\nexport interface UiListItemsChange {\n items: UiListItem[]\n}\n\n/**\n * @fires select - Dispatched when the user click or press `Enter` or `Space` on any active list item.\n * The `event.detail` object contains the `item` and `index` properties.\n * @fires itemschange - Dispatched when the list items change, e.g. when the slot changes.\n * The `event.detail` object contains the `items` property with the list of items.\n */\nexport default class UiList extends LitElement {\n /**\n * The computed list of list items to render.\n */\n accessor items: UiListItem[] = []\n\n activeListItem: UiListItem | null = null\n\n highlightListItem: UiListItem | null = null\n\n /**\n * The CSS selector that is used to recognize which items are\n * active list items (can be selected, focused, etc.)\n * @attribute\n */\n @property({ type: String }) accessor selector: string\n\n /**\n * When set it marks last activated list item as selected.\n * @attribute\n */\n @property({ type: Boolean }) accessor selectActive: boolean | undefined\n\n @queryAssignedElements({ flatten: true }) protected accessor assignedElements!: HTMLElement[]\n\n constructor() {\n super()\n this.selector = 'ui-list-item'\n this.addEventListener('keydown', this.handleKeydown.bind(this))\n this.addEventListener('click', this.handleClick.bind(this))\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n override focus(options?: FocusOptions): void {\n const { activeListItem } = this\n if (activeListItem) {\n activeListItem.focus(options)\n return\n }\n this.activateFirstItem()\n }\n\n override firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties)\n\n this.updateItems()\n }\n\n activateFirstItem(): void {\n this.activeListItem = this.getFirstItem()\n this.activeListItem?.activate()\n }\n\n activateLastItem(): void {\n this.activeListItem = this.getLastItem()\n this.activeListItem?.activate()\n }\n\n resetActiveListItem(): void {\n this.activeListItem = null\n this.setAttribute('tabindex', '0')\n }\n\n protected updateItems(): void {\n const elements = this.assignedElements || []\n const items = elements.filter(this.isListItem, this)\n this.items = items\n if (this.activeListItem && !items.includes(this.activeListItem)) {\n this.activeListItem = null\n }\n if (this.highlightListItem && !items.includes(this.highlightListItem)) {\n this.highlightListItem = null\n }\n this.dispatchEvent(\n new CustomEvent<UiListItemsChange>('itemschange', { bubbles: false, composed: false, detail: { items } })\n )\n }\n\n /**\n * @return Whether the given element is a list item element.\n */\n protected isListItem(element: Element): element is UiListItem {\n if (element.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n return element.matches(this.selector)\n }\n\n getFirstItem(): UiListItem {\n return this.items[0]\n }\n\n getLastItem(): UiListItem {\n return this.items[this.items.length - 1]\n }\n\n getPreviousItem(item: UiListItem): UiListItem {\n const { items } = this\n const curIndex = items.indexOf(item)\n if (curIndex < 0) {\n return item\n }\n let i = curIndex\n let result: HTMLElement | undefined\n do {\n i--\n if (i === curIndex) {\n // looped back from the end, no active element to find.\n return item\n }\n const tmp = items[i]\n if (!tmp) {\n i = items.length\n continue\n }\n if (this.isSelectable(tmp)) {\n result = tmp\n }\n } while (!result)\n return (result as UiListItem) || item\n }\n\n getNextItem(item: UiListItem): UiListItem {\n const { items } = this\n const curIndex = items.indexOf(item)\n if (curIndex < 0) {\n return item\n }\n let i = curIndex\n let next: HTMLElement | undefined\n do {\n i++\n if (i === curIndex) {\n // looped back from the start, no active element to find.\n return item\n }\n const tmp = items[i]\n if (!tmp) {\n i = -1\n continue\n }\n if (this.isSelectable(tmp)) {\n next = tmp\n }\n } while (!next)\n return (next as UiListItem) || item\n }\n\n protected isSelectable(element: HTMLElement): boolean {\n if ((element as unknown as { disabled: boolean }).disabled) {\n return false\n }\n if (element.hasAttribute('disabled')) {\n return false\n }\n if (element.hidden && element.hasAttribute('hidden')) {\n return false\n }\n return true\n }\n\n protected isListItemActive(item: UiListItem): boolean {\n return item.isActive()\n }\n\n protected deactivateListItem(item: UiListItem): void {\n item.deactivate()\n }\n\n protected activateListItem(item?: UiListItem | null): void {\n if (!item) {\n return\n }\n this.removeAttribute('tabindex')\n item.activate()\n item.scrollIntoView({ block: 'end', inline: 'nearest' })\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (Object.values(ACTIVATION_KEYS).includes(event.key)) {\n this.activateFromEvent(event)\n return\n }\n if (Object.values(NAVIGATION_KEYS).indexOf(event.key) === -1) return\n\n for (const item of this.items) {\n if (this.isListItemActive(item)) {\n this.activeListItem = item\n }\n\n this.deactivateListItem(item)\n }\n\n if (event.key === NAVIGATION_KEYS.ArrowDown) {\n event.preventDefault()\n this.activateNext()\n }\n\n if (event.key === NAVIGATION_KEYS.ArrowUp) {\n event.preventDefault()\n this.activatePrevious()\n }\n\n if (event.key === NAVIGATION_KEYS.Home) {\n event.preventDefault()\n this.activateFirst()\n }\n\n if (event.key === NAVIGATION_KEYS.End) {\n event.preventDefault()\n this.activateLast()\n }\n }\n\n activateFirst(): void {\n this.activeListItem = this.getFirstItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n activateLast(): void {\n this.activeListItem = this.getLastItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n activateNext(item = this.activeListItem): void {\n this.activeListItem = item ? this.getNextItem(item) : this.getFirstItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n activatePrevious(item = this.activeListItem): void {\n this.activeListItem = item ? this.getPreviousItem(item) : this.getLastItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n /**\n * Sets `highlight` class on the next item.\n * @param item When not set it highlights the first item. Default to `this.highlightListItem`.\n * Pass `null` to select first item.\n */\n highlightNext(item = this.highlightListItem): void {\n const next = item ? this.getNextItem(item) : this.getFirstItem()\n this.highlightItem(next)\n }\n\n /**\n * Sets `highlight` class on the previous item.\n * @param item When not set it highlights the last item. Default to `this.highlightListItem`.\n * Pass `null` to select last item.\n */\n highlightPrevious(item = this.highlightListItem): void {\n const previous = item ? this.getPreviousItem(item) : this.getLastItem()\n this.highlightItem(previous)\n }\n\n highlightFirst(): void {\n const item = this.getFirstItem()\n this.highlightItem(item)\n }\n\n highlightLast(): void {\n const item = this.getLastItem()\n this.highlightItem(item)\n }\n\n handleClick(event: MouseEvent): void {\n this.activateFromEvent(event)\n }\n\n protected highlightItem(item?: UiListItem | null): void {\n if (this.highlightListItem) {\n this.highlightListItem.classList.remove('highlight')\n }\n this.highlightListItem = item || null\n if (this.highlightListItem) {\n this.highlightListItem.classList.add('highlight')\n this.highlightListItem.scrollIntoView({ block: 'end', inline: 'nearest' })\n }\n }\n\n /**\n * Activates a list item from an Event.\n * Activate means dispatches a non-bubbling CustomEvent with the item in the detail.\n */\n protected activateFromEvent(e: Event): void {\n const path = e.composedPath()\n let item: UiListItem | undefined\n while (!item) {\n const next = path.shift() as Element\n if (next === this) {\n break\n }\n if (!this.isListItem(next) || !this.isSelectable(next)) {\n continue\n }\n item = next as UiListItem\n }\n if (!item) {\n return\n }\n this.manageSelection(item)\n item.activate()\n this.activeListItem = item\n if (this.notifySelect(item)) {\n e.preventDefault()\n }\n }\n\n /**\n * @param item The UiListItem that is selected.\n * @returns True when the event was canceled.\n */\n notifySelect(item: UiListItem): boolean {\n const index = this.items.indexOf(item)\n if (index === -1) {\n return false\n }\n const event = new CustomEvent<UiListSelection>('select', {\n cancelable: true,\n detail: {\n item,\n index,\n },\n })\n this.dispatchEvent(event)\n return event.defaultPrevented\n }\n\n protected manageSelection(item: UiListItem): void {\n if (!this.selectActive) {\n return\n }\n const { items } = this\n items.forEach((current) => current.classList.remove('select'))\n item.classList.add('select')\n }\n\n override render(): TemplateResult {\n return html`<slot @slotchange=\"${this.updateItems}\"></slot>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../../../src/md/list/internals/List.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, queryAssignedElements } from 'lit/decorators.js'\nimport UiListItem from './ListItem.js'\n\nconst NAVIGATION_KEYS = {\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n Home: 'Home',\n End: 'End',\n}\n\nconst ACTIVATION_KEYS = {\n Enter: 'Enter',\n Space: ' ',\n}\n\nexport interface UiListSelection {\n item: HTMLElement\n index: number\n}\n\nexport interface UiListItemsChange {\n items: UiListItem[]\n}\n\n/**\n * @fires select - Dispatched when the user click or press `Enter` or `Space` on any active list item.\n * The `event.detail` object contains the `item` and `index` properties.\n * @fires itemschange - Dispatched when the list items change, e.g. when the slot changes.\n * The `event.detail` object contains the `items` property with the list of items.\n */\nexport default class UiList extends LitElement {\n /**\n * The computed list of list items to render.\n */\n accessor items: UiListItem[] = []\n\n activeListItem: UiListItem | null = null\n\n highlightListItem: UiListItem | null = null\n\n /**\n * The CSS selector that is used to recognize which items are\n * active list items (can be selected, focused, etc.)\n * @attribute\n */\n @property({ type: String }) accessor selector: string\n\n /**\n * When set it marks last activated list item as selected.\n * @attribute\n */\n @property({ type: Boolean }) accessor selectActive: boolean | undefined\n\n @queryAssignedElements({ flatten: true }) protected accessor assignedElements!: HTMLElement[]\n\n constructor() {\n super()\n this.selector = 'ui-list-item'\n this.addEventListener('keydown', this.handleKeydown.bind(this))\n this.addEventListener('click', this.handleClick.bind(this))\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n override focus(options?: FocusOptions): void {\n const { activeListItem } = this\n if (activeListItem) {\n activeListItem.focus(options)\n return\n }\n this.activateFirstItem()\n }\n\n override firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties)\n\n this.updateItems()\n }\n\n activateFirstItem(): void {\n this.activeListItem = this.getFirstItem()\n this.activeListItem?.activate()\n }\n\n activateLastItem(): void {\n this.activeListItem = this.getLastItem()\n this.activeListItem?.activate()\n }\n\n resetActiveListItem(): void {\n this.activeListItem = null\n this.setAttribute('tabindex', '0')\n }\n\n protected updateItems(): void {\n const elements = this.assignedElements || []\n const items = elements.filter(this.isListItem, this)\n this.items = items\n if (this.activeListItem && !items.includes(this.activeListItem)) {\n this.activeListItem = null\n }\n if (this.highlightListItem && !items.includes(this.highlightListItem)) {\n this.highlightListItem = null\n }\n this.dispatchEvent(\n new CustomEvent<UiListItemsChange>('itemschange', { bubbles: false, composed: false, detail: { items } })\n )\n }\n\n /**\n * @return Whether the given element is a list item element.\n */\n protected isListItem(element: Element): element is UiListItem {\n if (element.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n return element.matches(this.selector)\n }\n\n getFirstItem(): UiListItem {\n return this.items[0]\n }\n\n getLastItem(): UiListItem {\n return this.items[this.items.length - 1]\n }\n\n getPreviousItem(item: UiListItem): UiListItem {\n const { items } = this\n const curIndex = items.indexOf(item)\n if (curIndex < 0) {\n return item\n }\n let i = curIndex\n let result: HTMLElement | undefined\n do {\n i--\n if (i === curIndex) {\n // looped back from the end, no active element to find.\n return item\n }\n const tmp = items[i]\n if (!tmp) {\n i = items.length\n continue\n }\n if (this.isSelectable(tmp)) {\n result = tmp\n }\n } while (!result)\n return (result as UiListItem) || item\n }\n\n getNextItem(item: UiListItem): UiListItem {\n const { items } = this\n const curIndex = items.indexOf(item)\n if (curIndex < 0) {\n return item\n }\n let i = curIndex\n let next: HTMLElement | undefined\n do {\n i++\n if (i === curIndex) {\n // looped back from the start, no active element to find.\n return item\n }\n const tmp = items[i]\n if (!tmp) {\n i = -1\n continue\n }\n if (this.isSelectable(tmp)) {\n next = tmp\n }\n } while (!next)\n return (next as UiListItem) || item\n }\n\n protected isSelectable(element: HTMLElement): boolean {\n if ((element as unknown as { disabled: boolean }).disabled) {\n return false\n }\n if (element.hasAttribute('disabled')) {\n return false\n }\n if (element.hidden && element.hasAttribute('hidden')) {\n return false\n }\n return true\n }\n\n protected isListItemActive(item: UiListItem): boolean {\n return item.isActive()\n }\n\n protected deactivateListItem(item: UiListItem): void {\n item.deactivate()\n }\n\n protected activateListItem(item?: UiListItem | null): void {\n if (!item) {\n return\n }\n this.removeAttribute('tabindex')\n item.activate()\n item.scrollIntoView({ block: 'end', inline: 'nearest' })\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (Object.values(ACTIVATION_KEYS).includes(event.key)) {\n this.activateFromEvent(event)\n return\n }\n if (Object.values(NAVIGATION_KEYS).indexOf(event.key) === -1) return\n\n for (const item of this.items) {\n if (this.isListItemActive(item)) {\n this.activeListItem = item\n }\n\n this.deactivateListItem(item)\n }\n\n if (event.key === NAVIGATION_KEYS.ArrowDown) {\n event.preventDefault()\n this.activateNext()\n }\n\n if (event.key === NAVIGATION_KEYS.ArrowUp) {\n event.preventDefault()\n this.activatePrevious()\n }\n\n if (event.key === NAVIGATION_KEYS.Home) {\n event.preventDefault()\n this.activateFirst()\n }\n\n if (event.key === NAVIGATION_KEYS.End) {\n event.preventDefault()\n this.activateLast()\n }\n }\n\n activateFirst(): void {\n this.activeListItem = this.getFirstItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n activateLast(): void {\n this.activeListItem = this.getLastItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n activateNext(item = this.activeListItem): void {\n this.activeListItem = item ? this.getNextItem(item) : this.getFirstItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n activatePrevious(item = this.activeListItem): void {\n this.activeListItem = item ? this.getPreviousItem(item) : this.getLastItem()\n if (this.activeListItem) {\n this.activateListItem(this.activeListItem)\n }\n }\n\n /**\n * Sets `highlight` class on the next item.\n * @param item When not set it highlights the first item. Default to `this.highlightListItem`.\n * Pass `null` to select first item.\n */\n highlightNext(item = this.highlightListItem): void {\n const next = item ? this.getNextItem(item) : this.getFirstItem()\n this.highlightItem(next)\n }\n\n /**\n * Sets `highlight` class on the previous item.\n * @param item When not set it highlights the last item. Default to `this.highlightListItem`.\n * Pass `null` to select last item.\n */\n highlightPrevious(item = this.highlightListItem): void {\n const previous = item ? this.getPreviousItem(item) : this.getLastItem()\n this.highlightItem(previous)\n }\n\n highlightFirst(): void {\n const item = this.getFirstItem()\n this.highlightItem(item)\n }\n\n highlightLast(): void {\n const item = this.getLastItem()\n this.highlightItem(item)\n }\n\n handleClick(event: MouseEvent): void {\n this.activateFromEvent(event)\n }\n\n protected highlightItem(item?: UiListItem | null): void {\n if (this.highlightListItem) {\n this.highlightListItem.classList.remove('highlight')\n }\n this.highlightListItem = item || null\n if (this.highlightListItem) {\n this.highlightListItem.classList.add('highlight')\n this.highlightListItem.scrollIntoView({ block: 'end', inline: 'nearest' })\n }\n }\n\n /**\n * Activates a list item from an Event.\n * Activate means dispatches a non-bubbling CustomEvent with the item in the detail.\n */\n protected activateFromEvent(e: Event): void {\n const path = e.composedPath()\n let item: UiListItem | undefined\n while (!item) {\n const next = path.shift() as Element\n if (next === this) {\n break\n }\n if (!this.isListItem(next) || !this.isSelectable(next)) {\n continue\n }\n item = next as UiListItem\n }\n if (!item) {\n return\n }\n this.manageSelection(item)\n item.activate()\n this.activeListItem = item\n if (this.notifySelect(item)) {\n e.preventDefault()\n }\n }\n\n /**\n * @param item The UiListItem that is selected.\n * @returns True when the event was canceled.\n */\n notifySelect(item: UiListItem, index?: number): boolean {\n const resolvedIndex = index ?? this.items.indexOf(item)\n if (resolvedIndex === -1) {\n return false\n }\n const event = new CustomEvent<UiListSelection>('select', {\n cancelable: true,\n detail: {\n item,\n index: resolvedIndex,\n },\n })\n this.dispatchEvent(event)\n return event.defaultPrevented\n }\n\n protected manageSelection(item: UiListItem): void {\n if (!this.selectActive) {\n return\n }\n const { items } = this\n items.forEach((current) => current.classList.remove('select'))\n item.classList.add('select')\n }\n\n override render(): TemplateResult {\n return html`<slot @slotchange=\"${this.updateItems}\"></slot>`\n }\n}\n"]}
|
|
@@ -75,6 +75,7 @@ export default class UiListItem extends UiElement {
|
|
|
75
75
|
protected handleSlotChange(): void;
|
|
76
76
|
protected render(): TemplateResult;
|
|
77
77
|
protected renderRipple: () => TemplateResult;
|
|
78
|
+
protected renderFocusRing(): TemplateResult;
|
|
78
79
|
protected renderStart(): TemplateResult;
|
|
79
80
|
protected renderEnd(): TemplateResult;
|
|
80
81
|
protected renderBody(): TemplateResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAC3F,OAAO,QAAQ,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAC3F,OAAO,QAAQ,MAAM,kCAAkC,CAAA;AAGvD,OAAO,sCAAsC,CAAA;AAC7C,OAAO,2BAA2B,CAAA;AAElC,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAS;IAC3B,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAA;IAE9C;;;OAGG;IACyC,QAAQ,CAAC,QAAQ,UAAQ;IAErE;;;;OAIG;IACwC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAExE;;;;OAIG;IACwC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAExE;;;;;OAKG;IACyC,QAAQ,CAAC,MAAM,UAAQ;IAEnE,SAA6D,QAAQ,SAAK;;cAmBvD,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOhE,iBAAiB,IAAI,IAAI;cAOf,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMpD,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAWrC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYnC,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAQ3C,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQvC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IASzC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAWlD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAOnB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB,SAAS,CAAC,gBAAgB,IAAI,IAAI;cAIf,MAAM,IAAI,cAAc;IAU3C,SAAS,CAAC,YAAY,QAAO,cAAc,CAG1C;IAED,SAAS,CAAC,eAAe,IAAI,cAAc;IAS3C,SAAS,CAAC,WAAW,IAAI,cAAc;IAMvC,SAAS,CAAC,SAAS,IAAI,cAAc;IAOrC,SAAS,CAAC,UAAU,IAAI,cAAc;CAUvC"}
|