@ni/nimble-components 21.4.0 → 21.5.1
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/dist/all-components-bundle.js +864 -73
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +3598 -3450
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/all-components.js.map +1 -1
- package/dist/esm/anchor/index.js.map +1 -1
- package/dist/esm/anchor/styles.js.map +1 -1
- package/dist/esm/anchor/template.js.map +1 -1
- package/dist/esm/anchor/types.js.map +1 -1
- package/dist/esm/anchor-base/index.js.map +1 -1
- package/dist/esm/anchor-button/index.js.map +1 -1
- package/dist/esm/anchor-button/styles.js.map +1 -1
- package/dist/esm/anchor-button/template.js.map +1 -1
- package/dist/esm/anchor-button/types.js.map +1 -1
- package/dist/esm/anchor-menu-item/index.js.map +1 -1
- package/dist/esm/anchor-menu-item/styles.js.map +1 -1
- package/dist/esm/anchor-menu-item/template.js.map +1 -1
- package/dist/esm/anchor-tab/index.js.map +1 -1
- package/dist/esm/anchor-tab/styles.js.map +1 -1
- package/dist/esm/anchor-tab/template.js.map +1 -1
- package/dist/esm/anchor-tabs/index.js.map +1 -1
- package/dist/esm/anchor-tabs/styles.js.map +1 -1
- package/dist/esm/anchor-tabs/template.js.map +1 -1
- package/dist/esm/anchor-tree-item/index.js.map +1 -1
- package/dist/esm/anchor-tree-item/styles.js.map +1 -1
- package/dist/esm/anchor-tree-item/template.js.map +1 -1
- package/dist/esm/anchored-region/index.js.map +1 -1
- package/dist/esm/anchored-region/styles.js +6 -1
- package/dist/esm/anchored-region/styles.js.map +1 -1
- package/dist/esm/banner/index.js.map +1 -1
- package/dist/esm/banner/styles.js.map +1 -1
- package/dist/esm/banner/template.js.map +1 -1
- package/dist/esm/banner/types.js.map +1 -1
- package/dist/esm/breadcrumb/index.js.map +1 -1
- package/dist/esm/breadcrumb/styles.js.map +1 -1
- package/dist/esm/breadcrumb/types.js.map +1 -1
- package/dist/esm/breadcrumb-item/index.js.map +1 -1
- package/dist/esm/breadcrumb-item/styles.js.map +1 -1
- package/dist/esm/button/index.js.map +1 -1
- package/dist/esm/button/styles.js.map +1 -1
- package/dist/esm/button/types.js.map +1 -1
- package/dist/esm/card/index.js.map +1 -1
- package/dist/esm/card/styles.js.map +1 -1
- package/dist/esm/card/template.js.map +1 -1
- package/dist/esm/card-button/index.js.map +1 -1
- package/dist/esm/card-button/styles.js.map +1 -1
- package/dist/esm/checkbox/index.js.map +1 -1
- package/dist/esm/checkbox/styles.js.map +1 -1
- package/dist/esm/combobox/index.js.map +1 -1
- package/dist/esm/combobox/styles.js.map +1 -1
- package/dist/esm/combobox/template.js.map +1 -1
- package/dist/esm/combobox/types.js.map +1 -1
- package/dist/esm/dialog/index.js.map +1 -1
- package/dist/esm/dialog/styles.js.map +1 -1
- package/dist/esm/dialog/template.js.map +1 -1
- package/dist/esm/drawer/index.js.map +1 -1
- package/dist/esm/drawer/styles.js.map +1 -1
- package/dist/esm/drawer/template.js.map +1 -1
- package/dist/esm/drawer/types.js.map +1 -1
- package/dist/esm/icon-base/index.js.map +1 -1
- package/dist/esm/icon-base/styles.js.map +1 -1
- package/dist/esm/icon-base/template.js.map +1 -1
- package/dist/esm/icon-base/types.js.map +1 -1
- package/dist/esm/icons/add.js.map +1 -1
- package/dist/esm/icons/all-icons.js.map +1 -1
- package/dist/esm/icons/arrow-down-right-and-arrow-up-left.js.map +1 -1
- package/dist/esm/icons/arrow-down.js.map +1 -1
- package/dist/esm/icons/arrow-expander-down.js.map +1 -1
- package/dist/esm/icons/arrow-expander-left.js.map +1 -1
- package/dist/esm/icons/arrow-expander-right.js.map +1 -1
- package/dist/esm/icons/arrow-expander-up.js.map +1 -1
- package/dist/esm/icons/arrow-in-circle.js.map +1 -1
- package/dist/esm/icons/arrow-left-from-line.js.map +1 -1
- package/dist/esm/icons/arrow-out-circle.js.map +1 -1
- package/dist/esm/icons/arrow-partial-rotate-left.js.map +1 -1
- package/dist/esm/icons/arrow-right-to-line.js.map +1 -1
- package/dist/esm/icons/arrow-rotate-right.js.map +1 -1
- package/dist/esm/icons/arrow-u-rotate-left.js.map +1 -1
- package/dist/esm/icons/arrow-up-left-and-arrow-down-right.js.map +1 -1
- package/dist/esm/icons/arrow-up-right-from-square.js.map +1 -1
- package/dist/esm/icons/arrow-up.js.map +1 -1
- package/dist/esm/icons/arrows-maximize.js.map +1 -1
- package/dist/esm/icons/arrows-repeat.js.map +1 -1
- package/dist/esm/icons/at.js.map +1 -1
- package/dist/esm/icons/bars.js.map +1 -1
- package/dist/esm/icons/bell-and-comment.js.map +1 -1
- package/dist/esm/icons/bell-circle.js.map +1 -1
- package/dist/esm/icons/bell-solid-circle.js.map +1 -1
- package/dist/esm/icons/bell.js.map +1 -1
- package/dist/esm/icons/block-with-ribbon.js.map +1 -1
- package/dist/esm/icons/bold-b.js.map +1 -1
- package/dist/esm/icons/book-magnifying-glass.js.map +1 -1
- package/dist/esm/icons/calendar-check-lines.js.map +1 -1
- package/dist/esm/icons/calendar-day.js.map +1 -1
- package/dist/esm/icons/calendar.js.map +1 -1
- package/dist/esm/icons/chart-diagram-child-focus.js.map +1 -1
- package/dist/esm/icons/chart-diagram-parent-focus-two-child.js.map +1 -1
- package/dist/esm/icons/chart-diagram-parent-focus.js.map +1 -1
- package/dist/esm/icons/chart-diagram.js.map +1 -1
- package/dist/esm/icons/check-dot.js.map +1 -1
- package/dist/esm/icons/check-large.js.map +1 -1
- package/dist/esm/icons/check.js.map +1 -1
- package/dist/esm/icons/circle-broken.js.map +1 -1
- package/dist/esm/icons/circle-check.js.map +1 -1
- package/dist/esm/icons/circle-filled.js.map +1 -1
- package/dist/esm/icons/circle-partial-broken.js.map +1 -1
- package/dist/esm/icons/circle-slash.js.map +1 -1
- package/dist/esm/icons/circle-x.js.map +1 -1
- package/dist/esm/icons/circle.js.map +1 -1
- package/dist/esm/icons/clipboard.js.map +1 -1
- package/dist/esm/icons/clock-cog.js.map +1 -1
- package/dist/esm/icons/clock-exclamation.js.map +1 -1
- package/dist/esm/icons/clock-triangle.js.map +1 -1
- package/dist/esm/icons/clock.js.map +1 -1
- package/dist/esm/icons/clone.js.map +1 -1
- package/dist/esm/icons/cloud-upload.js.map +1 -1
- package/dist/esm/icons/cloud-with-arrow.js.map +1 -1
- package/dist/esm/icons/cloud.js.map +1 -1
- package/dist/esm/icons/cog-database-inset.js.map +1 -1
- package/dist/esm/icons/cog-database.js.map +1 -1
- package/dist/esm/icons/cog-small-cog.js.map +1 -1
- package/dist/esm/icons/cog-zoomed.js.map +1 -1
- package/dist/esm/icons/cog.js.map +1 -1
- package/dist/esm/icons/comment.js.map +1 -1
- package/dist/esm/icons/computer-and-monitor.js.map +1 -1
- package/dist/esm/icons/copy-text.js.map +1 -1
- package/dist/esm/icons/copy.js.map +1 -1
- package/dist/esm/icons/dashboard-builder-legend.js.map +1 -1
- package/dist/esm/icons/dashboard-builder-templates.js.map +1 -1
- package/dist/esm/icons/dashboard-builder-tile.js.map +1 -1
- package/dist/esm/icons/dashboard-builder.js.map +1 -1
- package/dist/esm/icons/database-check.js.map +1 -1
- package/dist/esm/icons/database.js.map +1 -1
- package/dist/esm/icons/desktop.js.map +1 -1
- package/dist/esm/icons/donut-chart.js.map +1 -1
- package/dist/esm/icons/dot-solid-dot-stroke-measurement.js.map +1 -1
- package/dist/esm/icons/dot-solid-dot-stroke.js.map +1 -1
- package/dist/esm/icons/down-right-from-square.js.map +1 -1
- package/dist/esm/icons/download.js.map +1 -1
- package/dist/esm/icons/electronic-chip-zoomed.js.map +1 -1
- package/dist/esm/icons/exclamation-mark.js.map +1 -1
- package/dist/esm/icons/eye.js.map +1 -1
- package/dist/esm/icons/fancy-a.js.map +1 -1
- package/dist/esm/icons/file-arrow-curved-right.js.map +1 -1
- package/dist/esm/icons/file-drawer.js.map +1 -1
- package/dist/esm/icons/file-search.js.map +1 -1
- package/dist/esm/icons/file.js.map +1 -1
- package/dist/esm/icons/filter.js.map +1 -1
- package/dist/esm/icons/floppy-disk-checkmark.js.map +1 -1
- package/dist/esm/icons/floppy-disk-pen.js.map +1 -1
- package/dist/esm/icons/floppy-disk-star-arrow-right.js.map +1 -1
- package/dist/esm/icons/floppy-disk-three-dots.js.map +1 -1
- package/dist/esm/icons/floppy-disk.js.map +1 -1
- package/dist/esm/icons/folder-open.js.map +1 -1
- package/dist/esm/icons/folder.js.map +1 -1
- package/dist/esm/icons/forward-slash.js.map +1 -1
- package/dist/esm/icons/four-dots-square.js.map +1 -1
- package/dist/esm/icons/function.js.map +1 -1
- package/dist/esm/icons/gauge-simple.js.map +1 -1
- package/dist/esm/icons/grid-three-by-three.js.map +1 -1
- package/dist/esm/icons/grid-two-by-two.js.map +1 -1
- package/dist/esm/icons/hammer.js.map +1 -1
- package/dist/esm/icons/hashtag.js.map +1 -1
- package/dist/esm/icons/home.js.map +1 -1
- package/dist/esm/icons/hourglass.js.map +1 -1
- package/dist/esm/icons/indent.js.map +1 -1
- package/dist/esm/icons/indeterminant-checkbox.js.map +1 -1
- package/dist/esm/icons/info-circle.js.map +1 -1
- package/dist/esm/icons/info.js.map +1 -1
- package/dist/esm/icons/italic-i.js.map +1 -1
- package/dist/esm/icons/key.js.map +1 -1
- package/dist/esm/icons/laptop.js.map +1 -1
- package/dist/esm/icons/layer-group.js.map +1 -1
- package/dist/esm/icons/lightning-bolt.js.map +1 -1
- package/dist/esm/icons/link-cancel.js.map +1 -1
- package/dist/esm/icons/link.js.map +1 -1
- package/dist/esm/icons/list-tree-database.js.map +1 -1
- package/dist/esm/icons/list-tree.js.map +1 -1
- package/dist/esm/icons/list.js.map +1 -1
- package/dist/esm/icons/lock.js.map +1 -1
- package/dist/esm/icons/magnifying-glass.js.map +1 -1
- package/dist/esm/icons/markdown.js.map +1 -1
- package/dist/esm/icons/minus-wide.js.map +1 -1
- package/dist/esm/icons/minus.js.map +1 -1
- package/dist/esm/icons/mobile.js.map +1 -1
- package/dist/esm/icons/ni.js.map +1 -1
- package/dist/esm/icons/notebook.js.map +1 -1
- package/dist/esm/icons/number-list.js.map +1 -1
- package/dist/esm/icons/outdent.js.map +1 -1
- package/dist/esm/icons/paste.js.map +1 -1
- package/dist/esm/icons/pause.js.map +1 -1
- package/dist/esm/icons/pencil.js.map +1 -1
- package/dist/esm/icons/play.js.map +1 -1
- package/dist/esm/icons/pot-with-lid.js.map +1 -1
- package/dist/esm/icons/question.js.map +1 -1
- package/dist/esm/icons/rectangle-check-lines.js.map +1 -1
- package/dist/esm/icons/running-arrow.js.map +1 -1
- package/dist/esm/icons/screen-check-lines-calendar.js.map +1 -1
- package/dist/esm/icons/screen-check-lines.js.map +1 -1
- package/dist/esm/icons/server.js.map +1 -1
- package/dist/esm/icons/share-nodes.js.map +1 -1
- package/dist/esm/icons/shield-check.js.map +1 -1
- package/dist/esm/icons/shield-xmark.js.map +1 -1
- package/dist/esm/icons/signal-bars.js.map +1 -1
- package/dist/esm/icons/sine-graph.js.map +1 -1
- package/dist/esm/icons/skip-arrow.js.map +1 -1
- package/dist/esm/icons/spinner.js.map +1 -1
- package/dist/esm/icons/square-check.js.map +1 -1
- package/dist/esm/icons/square-t.js.map +1 -1
- package/dist/esm/icons/stop-square.js.map +1 -1
- package/dist/esm/icons/systemlink.js.map +1 -1
- package/dist/esm/icons/t.js.map +1 -1
- package/dist/esm/icons/tablet.js.map +1 -1
- package/dist/esm/icons/tag.js.map +1 -1
- package/dist/esm/icons/tags.js.map +1 -1
- package/dist/esm/icons/target-crosshairs-progress.js.map +1 -1
- package/dist/esm/icons/target-crosshairs.js.map +1 -1
- package/dist/esm/icons/three-dots-line.js.map +1 -1
- package/dist/esm/icons/three-vertical-lines.js.map +1 -1
- package/dist/esm/icons/thumbtack.js.map +1 -1
- package/dist/esm/icons/tile-size.js.map +1 -1
- package/dist/esm/icons/times.js.map +1 -1
- package/dist/esm/icons/trash.js.map +1 -1
- package/dist/esm/icons/triangle-filled.js.map +1 -1
- package/dist/esm/icons/triangle-two-lines-horizontal.js.map +1 -1
- package/dist/esm/icons/triangle.js.map +1 -1
- package/dist/esm/icons/true-false-rectangle.js.map +1 -1
- package/dist/esm/icons/two-squares-in-brackets.js.map +1 -1
- package/dist/esm/icons/two-triangles-between-lines.js.map +1 -1
- package/dist/esm/icons/unlink.js.map +1 -1
- package/dist/esm/icons/unlock.js.map +1 -1
- package/dist/esm/icons/up-right-from-square.js.map +1 -1
- package/dist/esm/icons/upload.js.map +1 -1
- package/dist/esm/icons/user.js.map +1 -1
- package/dist/esm/icons/watch.js.map +1 -1
- package/dist/esm/icons/waveform.js.map +1 -1
- package/dist/esm/icons/webvi-custom.js.map +1 -1
- package/dist/esm/icons/webvi-host.js.map +1 -1
- package/dist/esm/icons/window-code.js.map +1 -1
- package/dist/esm/icons/window-text.js.map +1 -1
- package/dist/esm/icons/wrench-hammer.js.map +1 -1
- package/dist/esm/icons/xmark-check.js.map +1 -1
- package/dist/esm/icons/xmark.js.map +1 -1
- package/dist/esm/label-provider/base/index.js.map +1 -1
- package/dist/esm/label-provider/core/index.d.ts +6 -0
- package/dist/esm/label-provider/core/index.js +10 -2
- package/dist/esm/label-provider/core/index.js.map +1 -1
- package/dist/esm/label-provider/core/label-token-defaults.js +3 -1
- package/dist/esm/label-provider/core/label-token-defaults.js.map +1 -1
- package/dist/esm/label-provider/core/label-tokens.d.ts +2 -0
- package/dist/esm/label-provider/core/label-tokens.js +8 -0
- package/dist/esm/label-provider/core/label-tokens.js.map +1 -1
- package/dist/esm/label-provider/rich-text/index.js.map +1 -1
- package/dist/esm/label-provider/rich-text/label-token-defaults.js.map +1 -1
- package/dist/esm/label-provider/rich-text/label-tokens.js.map +1 -1
- package/dist/esm/label-provider/table/index.js.map +1 -1
- package/dist/esm/label-provider/table/label-token-defaults.js.map +1 -1
- package/dist/esm/label-provider/table/label-tokens.js.map +1 -1
- package/dist/esm/list-option/index.js.map +1 -1
- package/dist/esm/list-option/styles.js.map +1 -1
- package/dist/esm/list-option/template.js.map +1 -1
- package/dist/esm/listbox/index.js.map +1 -1
- package/dist/esm/listbox/styles.js.map +1 -1
- package/dist/esm/mapping/base/index.js.map +1 -1
- package/dist/esm/mapping/base/template.js.map +1 -1
- package/dist/esm/mapping/base/types.js.map +1 -1
- package/dist/esm/mapping/icon/index.js.map +1 -1
- package/dist/esm/mapping/spinner/index.js.map +1 -1
- package/dist/esm/mapping/text/index.js.map +1 -1
- package/dist/esm/mapping/user/index.js.map +1 -1
- package/dist/esm/menu/index.js.map +1 -1
- package/dist/esm/menu/styles.js.map +1 -1
- package/dist/esm/menu-button/index.js.map +1 -1
- package/dist/esm/menu-button/styles.js.map +1 -1
- package/dist/esm/menu-button/template.js.map +1 -1
- package/dist/esm/menu-button/types.js.map +1 -1
- package/dist/esm/menu-item/index.js.map +1 -1
- package/dist/esm/menu-item/styles.js.map +1 -1
- package/dist/esm/number-field/index.js.map +1 -1
- package/dist/esm/number-field/styles.js.map +1 -1
- package/dist/esm/number-field/types.js.map +1 -1
- package/dist/esm/patterns/button/styles.js.map +1 -1
- package/dist/esm/patterns/button/types.js.map +1 -1
- package/dist/esm/patterns/dialog/types.js.map +1 -1
- package/dist/esm/patterns/dropdown/styles.js +0 -4
- package/dist/esm/patterns/dropdown/styles.js.map +1 -1
- package/dist/esm/patterns/dropdown/types.js.map +1 -1
- package/dist/esm/patterns/error/styles.js.map +1 -1
- package/dist/esm/patterns/error/template.js.map +1 -1
- package/dist/esm/patterns/error/types.js.map +1 -1
- package/dist/esm/patterns/expand-collapse/styles.js.map +1 -1
- package/dist/esm/radio/index.js.map +1 -1
- package/dist/esm/radio/styles.js.map +1 -1
- package/dist/esm/radio-group/index.js.map +1 -1
- package/dist/esm/radio-group/styles.js.map +1 -1
- package/dist/esm/rich-text/base/index.js.map +1 -1
- package/dist/esm/rich-text/base/types.js.map +1 -1
- package/dist/esm/rich-text/editor/index.js.map +1 -1
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -1
- package/dist/esm/rich-text/editor/styles.js.map +1 -1
- package/dist/esm/rich-text/editor/template.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/rich-text-editor-utils.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/types.js.map +1 -1
- package/dist/esm/rich-text/editor/types.js.map +1 -1
- package/dist/esm/rich-text/mention-listbox/index.js.map +1 -1
- package/dist/esm/rich-text/mention-listbox/styles.js.map +1 -1
- package/dist/esm/rich-text/mention-listbox/template.js.map +1 -1
- package/dist/esm/rich-text/mention-listbox/types.js.map +1 -1
- package/dist/esm/rich-text/models/configuration.js.map +1 -1
- package/dist/esm/rich-text/models/editor-configuration.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-parser-mention-configuration.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-parser.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-serializer.js.map +1 -1
- package/dist/esm/rich-text/models/mention-extension-configuration.js.map +1 -1
- package/dist/esm/rich-text/models/rich-text-tracker.js.map +1 -1
- package/dist/esm/rich-text/models/rich-text-validator.js.map +1 -1
- package/dist/esm/rich-text/models/testing/markdown-parser-utils.js.map +1 -1
- package/dist/esm/rich-text/viewer/index.js.map +1 -1
- package/dist/esm/rich-text/viewer/styles.js.map +1 -1
- package/dist/esm/rich-text/viewer/template.js.map +1 -1
- package/dist/esm/rich-text/viewer/testing/rich-text-viewer.pageobject.js.map +1 -1
- package/dist/esm/rich-text-mention/base/index.js.map +1 -1
- package/dist/esm/rich-text-mention/base/models/mapping-config.js.map +1 -1
- package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
- package/dist/esm/rich-text-mention/base/models/mention-validator.js.map +1 -1
- package/dist/esm/rich-text-mention/base/template.js.map +1 -1
- package/dist/esm/rich-text-mention/base/types.js.map +1 -1
- package/dist/esm/rich-text-mention/base/view/index.js.map +1 -1
- package/dist/esm/rich-text-mention/users/index.js.map +1 -1
- package/dist/esm/rich-text-mention/users/models/mapping-user-config.js.map +1 -1
- package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.js.map +1 -1
- package/dist/esm/rich-text-mention/users/view/index.js.map +1 -1
- package/dist/esm/rich-text-mention/users/view/styles.js.map +1 -1
- package/dist/esm/rich-text-mention/users/view/template.js.map +1 -1
- package/dist/esm/rich-text-mention/users/view/testing/rich-text-mention-users-view.pageobject.js.map +1 -1
- package/dist/esm/select/index.d.ts +251 -7
- package/dist/esm/select/index.js +653 -19
- package/dist/esm/select/index.js.map +1 -1
- package/dist/esm/select/models/select-form-associated.d.ts +16 -0
- package/dist/esm/select/models/select-form-associated.js +19 -0
- package/dist/esm/select/models/select-form-associated.js.map +1 -0
- package/dist/esm/select/styles.js +89 -1
- package/dist/esm/select/styles.js.map +1 -1
- package/dist/esm/select/template.js +71 -37
- package/dist/esm/select/template.js.map +1 -1
- package/dist/esm/select/testing/select.pageobject.d.ts +32 -0
- package/dist/esm/select/testing/select.pageobject.js +128 -0
- package/dist/esm/select/testing/select.pageobject.js.map +1 -0
- package/dist/esm/select/types.d.ts +9 -0
- package/dist/esm/select/types.js +8 -0
- package/dist/esm/select/types.js.map +1 -1
- package/dist/esm/spinner/index.js.map +1 -1
- package/dist/esm/spinner/styles.js.map +1 -1
- package/dist/esm/spinner/template.js.map +1 -1
- package/dist/esm/spinner/types.js.map +1 -1
- package/dist/esm/switch/index.js.map +1 -1
- package/dist/esm/switch/styles.js.map +1 -1
- package/dist/esm/switch/template.js.map +1 -1
- package/dist/esm/tab/index.js.map +1 -1
- package/dist/esm/tab/styles.js.map +1 -1
- package/dist/esm/tab-panel/index.js.map +1 -1
- package/dist/esm/tab-panel/styles.js.map +1 -1
- package/dist/esm/table/components/cell/index.js.map +1 -1
- package/dist/esm/table/components/cell/styles.js.map +1 -1
- package/dist/esm/table/components/cell/template.js.map +1 -1
- package/dist/esm/table/components/group-row/index.js.map +1 -1
- package/dist/esm/table/components/group-row/styles.js.map +1 -1
- package/dist/esm/table/components/group-row/template.js.map +1 -1
- package/dist/esm/table/components/header/index.js.map +1 -1
- package/dist/esm/table/components/header/styles.js.map +1 -1
- package/dist/esm/table/components/header/template.js.map +1 -1
- package/dist/esm/table/components/row/index.js.map +1 -1
- package/dist/esm/table/components/row/styles.js.map +1 -1
- package/dist/esm/table/components/row/template.js.map +1 -1
- package/dist/esm/table/index.js.map +1 -1
- package/dist/esm/table/models/array-to-tree.js.map +1 -1
- package/dist/esm/table/models/data-hierarchy-manager.js.map +1 -1
- package/dist/esm/table/models/expansion-manager.js.map +1 -1
- package/dist/esm/table/models/interactive-selection-manager.js.map +1 -1
- package/dist/esm/table/models/selection-managers/disabled-selection-manager.js.map +1 -1
- package/dist/esm/table/models/selection-managers/multi-selection-manager.js.map +1 -1
- package/dist/esm/table/models/selection-managers/selection-manager-base.js.map +1 -1
- package/dist/esm/table/models/selection-managers/single-selection-manager.js.map +1 -1
- package/dist/esm/table/models/sort-operations.js.map +1 -1
- package/dist/esm/table/models/table-layout-manager.js.map +1 -1
- package/dist/esm/table/models/table-update-tracker.js.map +1 -1
- package/dist/esm/table/models/table-validator.js.map +1 -1
- package/dist/esm/table/models/virtualizer.js.map +1 -1
- package/dist/esm/table/styles.js.map +1 -1
- package/dist/esm/table/template.js.map +1 -1
- package/dist/esm/table/testing/table.pageobject.js.map +1 -1
- package/dist/esm/table/types.js.map +1 -1
- package/dist/esm/table-column/anchor/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/anchor/cell-view/styles.js.map +1 -1
- package/dist/esm/table-column/anchor/cell-view/template.js.map +1 -1
- package/dist/esm/table-column/anchor/index.js.map +1 -1
- package/dist/esm/table-column/base/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/base/cell-view/template.js.map +1 -1
- package/dist/esm/table-column/base/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/base/group-header-view/template.js.map +1 -1
- package/dist/esm/table-column/base/index.js.map +1 -1
- package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
- package/dist/esm/table-column/base/models/column-validator.js.map +1 -1
- package/dist/esm/table-column/base/styles.js.map +1 -1
- package/dist/esm/table-column/base/template.js.map +1 -1
- package/dist/esm/table-column/base/types.js.map +1 -1
- package/dist/esm/table-column/date-text/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/date-text/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/date-text/index.js.map +1 -1
- package/dist/esm/table-column/date-text/models/format-helper.js.map +1 -1
- package/dist/esm/table-column/date-text/models/table-column-date-text-validator.js.map +1 -1
- package/dist/esm/table-column/date-text/testing/table-column-date-text.pageobject.js.map +1 -1
- package/dist/esm/table-column/date-text/types.js.map +1 -1
- package/dist/esm/table-column/duration-text/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/duration-text/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/duration-text/index.js.map +1 -1
- package/dist/esm/table-column/duration-text/models/duration-formatter.js.map +1 -1
- package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.js.map +1 -1
- package/dist/esm/table-column/enum-base/index.js.map +1 -1
- package/dist/esm/table-column/enum-base/models/mapping-config.js.map +1 -1
- package/dist/esm/table-column/enum-base/models/mapping-icon-config.js.map +1 -1
- package/dist/esm/table-column/enum-base/models/mapping-key-resolver.js.map +1 -1
- package/dist/esm/table-column/enum-base/models/mapping-spinner-config.js.map +1 -1
- package/dist/esm/table-column/enum-base/models/mapping-text-config.js.map +1 -1
- package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js.map +1 -1
- package/dist/esm/table-column/enum-base/styles.js.map +1 -1
- package/dist/esm/table-column/enum-base/template.js.map +1 -1
- package/dist/esm/table-column/enum-base/types.js.map +1 -1
- package/dist/esm/table-column/enum-text/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/enum-text/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/enum-text/index.js.map +1 -1
- package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js.map +1 -1
- package/dist/esm/table-column/icon/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/icon/cell-view/template.js.map +1 -1
- package/dist/esm/table-column/icon/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/icon/group-header-view/styles.js.map +1 -1
- package/dist/esm/table-column/icon/group-header-view/template.js.map +1 -1
- package/dist/esm/table-column/icon/index.js.map +1 -1
- package/dist/esm/table-column/icon/models/table-column-icon-validator.js.map +1 -1
- package/dist/esm/table-column/mixins/fractional-width-column.js.map +1 -1
- package/dist/esm/table-column/mixins/groupable-column.js.map +1 -1
- package/dist/esm/table-column/number-text/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/number-text/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/number-text/index.js.map +1 -1
- package/dist/esm/table-column/number-text/models/number-text-unit-format.js.map +1 -1
- package/dist/esm/table-column/number-text/models/table-column-number-text-validator.js.map +1 -1
- package/dist/esm/table-column/number-text/template.js.map +1 -1
- package/dist/esm/table-column/number-text/types.js.map +1 -1
- package/dist/esm/table-column/testing/table-column-formatted-text.pageobject.js.map +1 -1
- package/dist/esm/table-column/text/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/text/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/text/index.js.map +1 -1
- package/dist/esm/table-column/text-base/cell-view/index.js.map +1 -1
- package/dist/esm/table-column/text-base/cell-view/styles.js.map +1 -1
- package/dist/esm/table-column/text-base/cell-view/template.js.map +1 -1
- package/dist/esm/table-column/text-base/cell-view/types.js.map +1 -1
- package/dist/esm/table-column/text-base/group-header-view/index.js.map +1 -1
- package/dist/esm/table-column/text-base/group-header-view/styles.js.map +1 -1
- package/dist/esm/table-column/text-base/group-header-view/template.js.map +1 -1
- package/dist/esm/table-column/text-base/index.js.map +1 -1
- package/dist/esm/tabs/index.js.map +1 -1
- package/dist/esm/tabs/styles.js.map +1 -1
- package/dist/esm/tabs-toolbar/index.js.map +1 -1
- package/dist/esm/tabs-toolbar/styles.js.map +1 -1
- package/dist/esm/tabs-toolbar/template.js.map +1 -1
- package/dist/esm/testing/async-helpers.js.map +1 -1
- package/dist/esm/text-area/index.js.map +1 -1
- package/dist/esm/text-area/styles.js.map +1 -1
- package/dist/esm/text-area/template.js.map +1 -1
- package/dist/esm/text-area/types.js.map +1 -1
- package/dist/esm/text-field/index.js.map +1 -1
- package/dist/esm/text-field/styles.js.map +1 -1
- package/dist/esm/text-field/types.js.map +1 -1
- package/dist/esm/theme-provider/design-token-comments.js.map +1 -1
- package/dist/esm/theme-provider/design-token-names.js.map +1 -1
- package/dist/esm/theme-provider/design-tokens-static.js.map +1 -1
- package/dist/esm/theme-provider/design-tokens.js.map +1 -1
- package/dist/esm/theme-provider/index.js.map +1 -1
- package/dist/esm/theme-provider/styles.js.map +1 -1
- package/dist/esm/theme-provider/template.js.map +1 -1
- package/dist/esm/theme-provider/types.js.map +1 -1
- package/dist/esm/toggle-button/index.js.map +1 -1
- package/dist/esm/toggle-button/styles.js.map +1 -1
- package/dist/esm/toggle-button/template.js.map +1 -1
- package/dist/esm/toggle-button/types.js.map +1 -1
- package/dist/esm/toolbar/index.js.map +1 -1
- package/dist/esm/toolbar/styles.js.map +1 -1
- package/dist/esm/tooltip/index.js.map +1 -1
- package/dist/esm/tooltip/styles.js.map +1 -1
- package/dist/esm/tooltip/template.js.map +1 -1
- package/dist/esm/tooltip/types.js.map +1 -1
- package/dist/esm/tree-item/index.js.map +1 -1
- package/dist/esm/tree-item/styles.js.map +1 -1
- package/dist/esm/tree-view/index.js.map +1 -1
- package/dist/esm/tree-view/styles.js.map +1 -1
- package/dist/esm/tree-view/template.js.map +1 -1
- package/dist/esm/tree-view/types.js.map +1 -1
- package/dist/esm/unit/base/template.js.map +1 -1
- package/dist/esm/unit/base/unit.js.map +1 -1
- package/dist/esm/unit/byte/index.js.map +1 -1
- package/dist/esm/unit/volt/index.js.map +1 -1
- package/dist/esm/utilities/directive/overflow.js.map +1 -1
- package/dist/esm/utilities/models/converter.js.map +1 -1
- package/dist/esm/utilities/models/document-element-lang.js.map +1 -1
- package/dist/esm/utilities/models/string-normalizers.js.map +1 -1
- package/dist/esm/utilities/models/tracker.js.map +1 -1
- package/dist/esm/utilities/models/update-tracker.js.map +1 -1
- package/dist/esm/utilities/models/validator.js.map +1 -1
- package/dist/esm/utilities/style/accessibly-hidden.js.map +1 -1
- package/dist/esm/utilities/style/appearance.js.map +1 -1
- package/dist/esm/utilities/style/colors.js.map +1 -1
- package/dist/esm/utilities/style/direction.js.map +1 -1
- package/dist/esm/utilities/style/focus.js.map +1 -1
- package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.js.map +1 -1
- package/dist/esm/utilities/style/prefers-reduced-motion.js.map +1 -1
- package/dist/esm/utilities/style/theme.js.map +1 -1
- package/dist/esm/utilities/style/types.js.map +1 -1
- package/dist/esm/utilities/style/user-select.js.map +1 -1
- package/dist/esm/utilities/unit-format/decimal-unit-format.js.map +1 -1
- package/dist/esm/utilities/unit-format/default-unit-format.js.map +1 -1
- package/dist/esm/utilities/unit-format/scaled-unit/scaled-unit.js.map +1 -1
- package/dist/esm/utilities/unit-format/scaled-unit-format/intl-number-format-scaled-unit-format.js.map +1 -1
- package/dist/esm/utilities/unit-format/scaled-unit-format/manually-translated-scaled-unit-format.js.map +1 -1
- package/dist/esm/utilities/unit-format/scaled-unit-format/scaled-unit-format.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-format.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-scale/byte-1024-unit-scale.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-scale/byte-unit-scale.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-scale/passthrough-unit-scale.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-scale/unit-scale.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-scale/utilities/metrix-prefixes.js.map +1 -1
- package/dist/esm/utilities/unit-format/unit-scale/volt-unit-scale.js.map +1 -1
- package/dist/esm/utilities/wait-until-custom-elements-defined-async.js.map +1 -1
- package/dist/esm/wafer-map/index.js.map +1 -1
- package/dist/esm/wafer-map/modules/computations.js.map +1 -1
- package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
- package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
- package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -1
- package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
- package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
- package/dist/esm/wafer-map/modules/wafer-map-update-tracker.js.map +1 -1
- package/dist/esm/wafer-map/modules/wafer-map-validator.js.map +1 -1
- package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -1
- package/dist/esm/wafer-map/styles.js.map +1 -1
- package/dist/esm/wafer-map/template.js.map +1 -1
- package/dist/esm/wafer-map/types.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/select/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/select/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.ts\nimport {\n attr,\n html,\n observable,\n Observable,\n volatile\n} from '@microsoft/fast-element';\nimport {\n AnchoredRegion,\n DesignSystem,\n Select as FoundationSelect,\n ListboxOption,\n SelectOptions,\n SelectPosition,\n applyMixins,\n StartEnd,\n DelegatesARIASelect,\n Listbox\n} from '@microsoft/fast-foundation';\nimport {\n keyArrowDown,\n keyArrowUp,\n keyEnd,\n keyEnter,\n keyEscape,\n keyHome,\n keySpace,\n keyTab,\n uniqueId\n} from '@microsoft/fast-web-utilities';\nimport { arrowExpanderDown16X16 } from '@ni/nimble-tokens/dist/icons/js';\nimport { styles } from './styles';\nimport { DropdownAppearance } from '../patterns/dropdown/types';\nimport { errorTextTemplate } from '../patterns/error/template';\nimport type { ErrorPattern } from '../patterns/error/types';\nimport { iconExclamationMarkTag } from '../icons/exclamation-mark';\nimport { template } from './template';\nimport type { ListOption } from '../list-option';\nimport { FilterMode } from './types';\nimport { diacriticInsensitiveStringNormalizer } from '../utilities/models/string-normalizers';\nimport { FormAssociatedSelect } from './models/select-form-associated';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-select': Select;\n }\n}\n\n// Used in overrides of base class methods\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\ntype BooleanOrVoid = boolean | void;\n\n/**\n * A nimble-styled HTML select.\n */\nexport class Select extends FormAssociatedSelect implements ErrorPattern {\n @attr\n public appearance: DropdownAppearance = DropdownAppearance.underline;\n\n /**\n * Reflects the placement for the listbox when the select is open.\n *\n * @public\n */\n @attr({ attribute: 'position' })\n public positionAttribute?: SelectPosition;\n\n /**\n * A message explaining why the value is invalid.\n *\n * @public\n * @remarks\n * HTML Attribute: error-text\n */\n @attr({ attribute: 'error-text' })\n public errorText: string | undefined;\n\n @attr({ attribute: 'error-visible', mode: 'boolean' })\n public errorVisible = false;\n\n @attr({ attribute: 'filter-mode' })\n public filterMode: FilterMode = FilterMode.none;\n\n /**\n * @internal\n */\n @attr({ attribute: 'open', mode: 'boolean' })\n public open = false;\n\n /**\n * Holds the current state for the calculated position of the listbox.\n *\n * @public\n */\n @observable\n public position?: SelectPosition;\n\n /**\n * The ref to the internal `.control` element.\n *\n * @internal\n */\n @observable\n public control!: HTMLElement;\n\n /**\n * Reference to the internal listbox element.\n *\n * @internal\n */\n public listbox!: HTMLDivElement;\n\n /**\n * The unique id for the internal listbox element.\n *\n * @internal\n */\n public listboxId: string = uniqueId('listbox-');\n\n /**\n * @internal\n */\n @observable\n public scrollableRegion!: HTMLElement;\n\n /**\n * @internal\n */\n @observable\n public filterInput?: HTMLInputElement;\n\n /**\n * @internal\n */\n @observable\n public anchoredRegion!: AnchoredRegion;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /**\n * @internal\n */\n @observable\n public filteredOptions: ListboxOption[] = [];\n\n /**\n * @internal\n */\n @observable\n public filter = '';\n\n /**\n * @internal\n */\n @observable\n public committedSelectedOption: ListboxOption | undefined = undefined;\n\n /**\n * The max height for the listbox when opened.\n *\n * @internal\n */\n @observable\n public maxHeight = 0;\n\n /**\n * The component is collapsible when in single-selection mode with no size attribute.\n *\n * @internal\n */\n @volatile\n public get collapsible(): boolean {\n return !(this.multiple || typeof this.size === 'number');\n }\n\n private _value = '';\n private forcedPosition = false;\n private indexWhenOpened?: number;\n\n /**\n * @internal\n */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.forcedPosition = !!this.positionAttribute;\n this.initializeOpenState();\n }\n\n /**\n * The list of options. This mirrors FAST's override implementation for this\n * member for the Combobox to support a filtered list in the dropdown.\n *\n * @public\n * @remarks\n * Overrides `Listbox.options`.\n */\n public override get options(): ListboxOption[] {\n Observable.track(this, 'options');\n return this.filteredOptions?.length\n ? this.filteredOptions\n : (this._options as ListOption[]);\n }\n\n public override set options(value: ListboxOption[]) {\n this._options = value;\n Observable.notify(this, 'options');\n }\n\n public override get value(): string {\n Observable.track(this, 'value');\n return this._value;\n }\n\n public override set value(next: string) {\n const prev = this._value;\n let newValue = next;\n\n // use 'options' here instead of '_options' as 'selectedIndex' may be relative\n // to filtered set\n if (this.options?.length) {\n const newValueIndex = this.options.findIndex(\n el => el.value === newValue\n );\n const prevSelectedValue = this.options[this.selectedIndex]?.value ?? null;\n const nextSelectedValue = this.options[newValueIndex]?.value ?? null;\n\n if (\n newValueIndex === -1\n || prevSelectedValue !== nextSelectedValue\n ) {\n newValue = '';\n this.selectedIndex = newValueIndex;\n }\n\n newValue = this.firstSelectedOption?.value ?? newValue;\n }\n\n if (prev !== newValue && !(this.open && this.selectedIndex < 0)) {\n this._value = newValue;\n super.valueChanged(prev, newValue);\n if (!this.open) {\n this.committedSelectedOption = this._options.find(\n o => o.value === newValue\n );\n }\n Observable.notify(this, 'value');\n if (this.collapsible) {\n Observable.notify(this, 'displayValue');\n }\n }\n }\n\n /**\n * @internal\n */\n public get displayValue(): string {\n Observable.track(this, 'displayValue');\n return this.committedSelectedOption?.text ?? '';\n }\n\n /**\n * @internal\n */\n public anchoredRegionChanged(\n _prev: AnchoredRegion | undefined,\n _next: AnchoredRegion | undefined\n ): void {\n if (this.anchoredRegion && this.control) {\n this.anchoredRegion.anchorElement = this.control;\n }\n }\n\n /**\n * @internal\n */\n public controlChanged(\n _prev: HTMLElement | undefined,\n _next: HTMLElement | undefined\n ): void {\n if (this.anchoredRegion && this.control) {\n this.anchoredRegion.anchorElement = this.control;\n }\n }\n\n /**\n * @internal\n */\n public override slottedOptionsChanged(\n prev: Element[],\n next: Element[]\n ): void {\n const value = this.value;\n this._options.forEach(o => {\n const notifier = Observable.getNotifier(o);\n notifier.unsubscribe(this, 'value');\n });\n\n super.slottedOptionsChanged(prev, next);\n\n this._options.forEach(o => {\n const notifier = Observable.getNotifier(o);\n notifier.subscribe(this, 'value');\n });\n this.setProxyOptions();\n this.updateValue();\n // We need to force an update to the filteredOptions observable\n // (by calling 'filterOptions()) so that the template correctly updates.\n this.filterOptions();\n if (value) {\n this.value = value;\n }\n this.committedSelectedOption = this.options[this.selectedIndex];\n }\n\n /**\n * @internal\n */\n public override clickHandler(e: MouseEvent): BooleanOrVoid {\n // do nothing if the select is disabled\n if (this.disabled) {\n return;\n }\n\n if (this.open) {\n const captured = (e.target as HTMLElement).closest<ListOption>(\n 'option,[role=option]'\n );\n\n if (!captured?.disabled) {\n this.updateSelectedIndexFromFilteredSet();\n }\n\n if (captured?.disabled) {\n return;\n }\n }\n\n super.clickHandler(e);\n\n this.open = this.collapsible && !this.open;\n\n if (!this.open && this.indexWhenOpened !== this.selectedIndex) {\n this.updateValue(true);\n }\n }\n\n /**\n * Updates the value when an option's value changes.\n *\n * @param source - the source object\n * @param propertyName - the property to evaluate\n *\n * @internal\n * @override\n */\n public override handleChange(source: unknown, propertyName: string): void {\n super.handleChange(source, propertyName);\n if (propertyName === 'value') {\n this.updateValue();\n }\n }\n\n /**\n * Prevents focus when size is set and a scrollbar is clicked.\n *\n * @param e - the mouse event object\n *\n * @override\n * @internal\n */\n public override mousedownHandler(e: MouseEvent): BooleanOrVoid {\n if (e.offsetX >= 0 && e.offsetX <= this.listbox?.scrollWidth) {\n return super.mousedownHandler(e);\n }\n\n return this.collapsible;\n }\n\n /**\n * @internal\n */\n public regionLoadedHandler(): void {\n this.focusAndScrollOptionIntoView();\n }\n\n /**\n * Sets the multiple property on the proxy element.\n *\n * @param prev - the previous multiple value\n * @param next - the current multiple value\n */\n public override multipleChanged(\n prev: boolean | undefined,\n next: boolean\n ): void {\n super.multipleChanged(prev, next);\n\n if (this.proxy) {\n this.proxy.multiple = next;\n }\n }\n\n /**\n * @internal\n */\n public inputClickHandler(e: MouseEvent): void {\n e.stopPropagation(); // clicking in filter input shouldn't close dropdown\n }\n\n /**\n * @internal\n */\n public changeValueHandler(): void {\n this.committedSelectedOption = this.options.find(\n option => option.selected\n );\n }\n\n /**\n * @internal\n */\n public updateDisplayValue(): void {\n if (this.collapsible) {\n Observable.notify(this, 'displayValue');\n }\n }\n\n /**\n * Handle content changes on the control input.\n *\n * @param e - the input event\n * @internal\n */\n public inputHandler(e: InputEvent): boolean {\n this.filter = this.filterInput?.value ?? '';\n if (!this.committedSelectedOption) {\n this.committedSelectedOption = this._options.find(\n option => option.selected\n );\n }\n this.clearSelection();\n this.filterOptions();\n\n if (\n this.filteredOptions.length > 0\n && this.committedSelectedOption\n && !this.filteredOptions.includes(this.committedSelectedOption)\n ) {\n const enabledOptions = this.filteredOptions.filter(\n o => !o.disabled\n );\n if (enabledOptions.length > 0) {\n enabledOptions[0]!.selected = true;\n } else {\n // only filtered option is disabled\n this.selectedOptions = [];\n this.selectedIndex = -1;\n }\n } else if (this.committedSelectedOption) {\n this.committedSelectedOption.selected = true;\n }\n\n if (e.inputType.includes('deleteContent') || !this.filter.length) {\n return true;\n }\n\n e.stopPropagation();\n return true;\n }\n\n /**\n * @internal\n */\n public override focusoutHandler(e: FocusEvent): BooleanOrVoid {\n this.updateSelectedIndexFromFilteredSet();\n super.focusoutHandler(e);\n if (!this.open) {\n return true;\n }\n\n const focusTarget = e.relatedTarget as HTMLElement;\n if (this.isSameNode(focusTarget)) {\n this.focus();\n return true;\n }\n\n if (!this.options?.includes(focusTarget as ListboxOption)) {\n this.open = false;\n if (this.indexWhenOpened !== this.selectedIndex) {\n this.updateValue(true);\n }\n }\n return true;\n }\n\n /**\n * @internal\n */\n public override keydownHandler(e: KeyboardEvent): BooleanOrVoid {\n super.keydownHandler(e);\n const key = e.key;\n if (e.ctrlKey || e.shiftKey) {\n return true;\n }\n\n switch (key) {\n case keySpace: {\n // when dropdown is open allow user to enter a space for filter text\n if (this.open && this.filterMode !== FilterMode.none) {\n break;\n }\n\n e.preventDefault();\n if (this.collapsible && this.typeAheadExpired) {\n this.open = !this.open;\n }\n if (!this.open) {\n this.focus();\n }\n break;\n }\n case keyHome:\n case keyEnd: {\n e.preventDefault();\n break;\n }\n case keyEnter: {\n e.preventDefault();\n if (\n this.filteredOptions.length === 0\n || this.filteredOptions.every(o => o.disabled)\n ) {\n return false;\n }\n this.updateSelectedIndexFromFilteredSet();\n this.open = !this.open;\n if (!this.open) {\n this.focus();\n }\n break;\n }\n case keyEscape: {\n // clear filter as update to \"selectedIndex\" will result in processing\n // \"options\" and not \"_options\"\n this.filter = '';\n if (this.committedSelectedOption) {\n this.clearSelection();\n this.selectedIndex = this._options.indexOf(\n this.committedSelectedOption\n );\n }\n if (this.collapsible && this.open) {\n e.preventDefault();\n this.open = false;\n }\n // reset 'selected' state otherwise the selected state doesn't stick.\n const selectedOption = this._options[this.selectedIndex];\n if (selectedOption) {\n selectedOption.selected = true;\n }\n this.focus();\n break;\n }\n case keyTab: {\n if (this.collapsible && this.open) {\n e.preventDefault();\n this.open = false;\n }\n\n return true;\n }\n\n default: {\n break;\n }\n }\n\n if (!this.open && this.indexWhenOpened !== this.selectedIndex) {\n this.updateValue(true);\n this.indexWhenOpened = this.selectedIndex;\n }\n\n return !(key === keyArrowDown || key === keyArrowUp);\n }\n\n /**\n * Updates the proxy value when the selected index changes.\n *\n * @param prev - the previous selected index\n * @param next - the next selected index\n *\n * @internal\n */\n public override selectedIndexChanged(\n prev: number | undefined,\n next: number\n ): void {\n super.selectedIndexChanged(prev, next);\n this.updateValue();\n }\n\n /**\n * Synchronize the `aria-disabled` property when the `disabled` property changes.\n *\n * @param prev - The previous disabled value\n * @param next - The next disabled value\n *\n * @internal\n */\n public override disabledChanged(prev: boolean, next: boolean): void {\n if (super.disabledChanged) {\n super.disabledChanged(prev, next);\n }\n this.ariaDisabled = this.disabled ? 'true' : 'false';\n }\n\n /**\n * Reset the element to its first selectable option when its parent form is reset.\n *\n * @internal\n */\n public override formResetCallback(): void {\n this.setProxyOptions();\n // Call the base class's implementation setDefaultSelectedOption instead of the select's\n // override, in order to reset the selectedIndex without using the value property.\n super.setDefaultSelectedOption();\n if (this.selectedIndex === -1) {\n this.selectedIndex = 0;\n }\n }\n\n // Prevents parent classes from resetting selectedIndex to a positive\n // value while filtering, which can result in a disabled option being\n // selected.\n protected override setSelectedOptions(): void {\n if (this.open && this.selectedIndex === -1) {\n return;\n }\n\n super.setSelectedOptions();\n }\n\n protected override focusAndScrollOptionIntoView(): void {\n super.focusAndScrollOptionIntoView();\n if (this.open) {\n window.requestAnimationFrame(() => {\n this.filterInput?.focus();\n });\n }\n }\n\n protected positionChanged(\n _: SelectPosition | undefined,\n next: SelectPosition | undefined\n ): void {\n this.positionAttribute = next;\n this.setPositioning();\n }\n\n /**\n * Updates the proxy's size property when the size attribute changes.\n *\n * @param prev - the previous size\n * @param next - the current size\n *\n * @override\n * @internal\n */\n protected override sizeChanged(\n prev: number | undefined,\n next: number\n ): void {\n super.sizeChanged(prev, next);\n\n if (this.proxy) {\n this.proxy.size = next;\n }\n }\n\n protected openChanged(): void {\n if (!this.collapsible) {\n return;\n }\n\n if (this.open) {\n this.initializeOpenState();\n this.indexWhenOpened = this.selectedIndex;\n\n return;\n }\n\n this.filter = '';\n if (this.filterInput) {\n this.filterInput.value = '';\n }\n\n this.ariaControls = '';\n this.ariaExpanded = 'false';\n }\n\n /**\n * Updates the selectedness of each option when the list of selected options changes.\n *\n * @param prev - the previous list of selected options\n * @param next - the current list of selected options\n *\n * @override\n * @internal\n */\n protected override selectedOptionsChanged(\n prev: ListboxOption[] | undefined,\n next: ListboxOption[]\n ): void {\n super.selectedOptionsChanged(prev, next);\n this.options?.forEach((o, i) => {\n const proxyOption = this.proxy?.options.item(i);\n if (proxyOption) {\n proxyOption.selected = o.selected;\n }\n });\n }\n\n /**\n * Sets the selected index to match the first option with the selected attribute, or\n * the first selectable option.\n *\n * @override\n * @internal\n */\n protected override setDefaultSelectedOption(): void {\n const options: ListboxOption[] = this.options\n ?? Array.from(this.children).filter(o => Listbox.slottedOptionFilter(o as HTMLElement));\n\n const selectedIndex = options?.findIndex(\n el => el.hasAttribute('selected')\n || el.selected\n || el.value === this.value\n );\n\n if (selectedIndex !== -1) {\n this.selectedIndex = selectedIndex;\n return;\n }\n\n this.selectedIndex = 0;\n }\n\n private setPositioning(): void {\n if (!this.$fastController.isConnected) {\n // Don't call setPositioning() until we're connected,\n // since this.forcedPosition isn't initialized yet.\n return;\n }\n const currentBox = this.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const availableBottom = viewportHeight - currentBox.bottom;\n\n if (this.forcedPosition) {\n this.position = this.positionAttribute;\n } else if (currentBox.top > availableBottom) {\n this.position = SelectPosition.above;\n } else {\n this.position = SelectPosition.below;\n }\n\n this.positionAttribute = this.forcedPosition\n ? this.positionAttribute\n : this.position;\n\n this.maxHeight = this.position === SelectPosition.above\n ? Math.trunc(currentBox.top)\n : Math.trunc(availableBottom);\n this.updateListboxMaxHeightCssVariable();\n }\n\n /**\n * Filter available options by text value.\n *\n * @public\n */\n private filterOptions(): void {\n const filter = this.filter.toLowerCase();\n\n if (filter) {\n this.filteredOptions = this._options.filter(option => {\n return diacriticInsensitiveStringNormalizer(\n option.text\n ).includes(diacriticInsensitiveStringNormalizer(filter));\n });\n } else {\n this.filteredOptions = this._options;\n }\n\n this._options.forEach(o => {\n o.hidden = !this.filteredOptions.includes(o);\n });\n }\n\n /**\n * Sets the value and display value to match the first selected option.\n *\n * @param shouldEmit - if true, the input and change events will be emitted\n *\n * @internal\n */\n private updateValue(shouldEmit?: boolean): void {\n if (this.$fastController.isConnected) {\n this.value = this.firstSelectedOption?.value ?? '';\n }\n\n if (shouldEmit) {\n this.$emit('input');\n this.$emit('change', this, {\n bubbles: true,\n composed: undefined\n });\n }\n }\n\n /**\n * Resets and fills the proxy to match the component's options.\n *\n * @internal\n */\n private setProxyOptions(): void {\n if (this.proxy instanceof HTMLSelectElement && this.options) {\n this.proxy.options.length = 0;\n this.options.forEach(option => {\n const proxyOption = option.proxy\n || (option instanceof HTMLOptionElement\n ? option.cloneNode()\n : null);\n\n if (proxyOption) {\n this.proxy.options.add(proxyOption);\n }\n });\n }\n }\n\n private clearSelection(): void {\n this.options.forEach(option => {\n option.selected = false;\n });\n }\n\n private filterChanged(): void {\n this.filterOptions();\n }\n\n private maxHeightChanged(): void {\n this.updateListboxMaxHeightCssVariable();\n }\n\n private initializeOpenState(): void {\n if (!this.open) {\n this.ariaExpanded = 'false';\n this.ariaControls = '';\n return;\n }\n\n this.committedSelectedOption = this._options[this.selectedIndex];\n this.ariaControls = this.listboxId;\n this.ariaExpanded = 'true';\n\n this.setPositioning();\n this.focusAndScrollOptionIntoView();\n }\n\n private updateListboxMaxHeightCssVariable(): void {\n if (this.listbox) {\n this.listbox.style.setProperty(\n '--ni-private-select-max-height',\n `${this.maxHeight}px`\n );\n }\n }\n\n private updateSelectedIndexFromFilteredSet(): void {\n const selectedItem = this.filteredOptions.length > 0\n ? this.options[this.selectedIndex]\n ?? this.committedSelectedOption\n : this.committedSelectedOption;\n\n if (!selectedItem) {\n return;\n }\n // Clear filter so any logic resolving against 'this.options' resolves against all options,\n // since selectedIndex should be relative to entire set.\n this.filter = '';\n // translate selectedIndex for filtered list to selectedIndex for all items\n this.selectedIndex = this._options.indexOf(selectedItem);\n // force selected to true again if the selection hasn't actually changed\n if (selectedItem === this.committedSelectedOption) {\n selectedItem.selected = true;\n }\n }\n}\n\nconst nimbleSelect = Select.compose<SelectOptions>({\n baseName: 'select',\n baseClass: FoundationSelect,\n template,\n styles,\n indicator: arrowExpanderDown16X16.data,\n end: html<Select>`\n <${iconExclamationMarkTag}\n severity=\"error\"\n class=\"error-icon\"\n ></${iconExclamationMarkTag}>\n ${errorTextTemplate}\n `\n});\n\napplyMixins(Select, StartEnd, DelegatesARIASelect);\nDesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSelect());\nexport const selectTag = 'nimble-select';\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FormAssociated, ListboxElement } from '@microsoft/fast-foundation';
|
|
2
|
+
declare class Select extends ListboxElement {
|
|
3
|
+
}
|
|
4
|
+
interface Select extends FormAssociated {
|
|
5
|
+
}
|
|
6
|
+
declare const FormAssociatedSelect_base: typeof Select;
|
|
7
|
+
/**
|
|
8
|
+
* A form-associated base class for the Select component. This was copied from the
|
|
9
|
+
* FAST FormAssociatedSelect (which is not exported by fast-foundation)
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare class FormAssociatedSelect extends FormAssociatedSelect_base {
|
|
14
|
+
proxy: HTMLSelectElement;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.form-associated.ts
|
|
2
|
+
/* eslint-disable max-classes-per-file */
|
|
3
|
+
import { FormAssociated, ListboxElement } from '@microsoft/fast-foundation';
|
|
4
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
5
|
+
class Select extends ListboxElement {
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A form-associated base class for the Select component. This was copied from the
|
|
9
|
+
* FAST FormAssociatedSelect (which is not exported by fast-foundation)
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export class FormAssociatedSelect extends FormAssociated(Select) {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.proxy = document.createElement('select');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=select-form-associated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-form-associated.js","sourceRoot":"","sources":["../../../../src/select/models/select-form-associated.ts"],"names":[],"mappings":"AAAA,qKAAqK;AACrK,yCAAyC;AACzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,+CAA+C;AAC/C,MAAM,MAAO,SAAQ,cAAc;CAAG;AAItC;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAAhE;;QACW,UAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;CAAA","sourcesContent":["// Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.form-associated.ts\n/* eslint-disable max-classes-per-file */\nimport { FormAssociated, ListboxElement } from '@microsoft/fast-foundation';\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nclass Select extends ListboxElement {}\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface Select extends FormAssociated {}\n\n/**\n * A form-associated base class for the Select component. This was copied from the\n * FAST FormAssociatedSelect (which is not exported by fast-foundation)\n *\n * @internal\n */\nexport class FormAssociatedSelect extends FormAssociated(Select) {\n public proxy = document.createElement('select');\n}\n"]}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { css } from '@microsoft/fast-element';
|
|
2
|
+
import { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';
|
|
2
3
|
import { styles as dropdownStyles } from '../patterns/dropdown/styles';
|
|
3
4
|
import { styles as errorStyles } from '../patterns/error/styles';
|
|
4
|
-
import { borderWidth } from '../theme-provider/design-tokens';
|
|
5
|
+
import { borderRgbPartialColor, borderWidth, controlHeight, mediumPadding, placeholderFontColor, smallPadding } from '../theme-provider/design-tokens';
|
|
5
6
|
import { appearanceBehavior } from '../utilities/style/appearance';
|
|
6
7
|
import { DropdownAppearance } from './types';
|
|
8
|
+
import { focusVisible } from '../utilities/style/focus';
|
|
9
|
+
import { themeBehavior } from '../utilities/style/theme';
|
|
10
|
+
import { Theme } from '../theme-provider/types';
|
|
11
|
+
import { hexToRgbaCssColor } from '../utilities/style/colors';
|
|
7
12
|
export const styles = css `
|
|
8
13
|
${dropdownStyles}
|
|
9
14
|
${errorStyles}
|
|
@@ -26,10 +31,93 @@ export const styles = css `
|
|
|
26
31
|
[part='end'] {
|
|
27
32
|
display: contents;
|
|
28
33
|
}
|
|
34
|
+
|
|
35
|
+
.listbox {
|
|
36
|
+
overflow-x: clip;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.listbox.empty slot {
|
|
40
|
+
display: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.listbox.above {
|
|
44
|
+
flex-flow: column-reverse;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.filter-field {
|
|
48
|
+
display: flex;
|
|
49
|
+
flex-direction: row;
|
|
50
|
+
align-items: center;
|
|
51
|
+
height: ${controlHeight};
|
|
52
|
+
background: transparent;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.filter-field::before {
|
|
56
|
+
content: '';
|
|
57
|
+
position: absolute;
|
|
58
|
+
height: 0px;
|
|
59
|
+
border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;
|
|
60
|
+
bottom: calc(${controlHeight} + ${smallPadding} - ${borderWidth});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.filter-field.above::before {
|
|
64
|
+
width: calc(100% - (2 * ${borderWidth}));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.filter-field::after {
|
|
68
|
+
content: '';
|
|
69
|
+
position: absolute;
|
|
70
|
+
height: 0px;
|
|
71
|
+
border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;
|
|
72
|
+
top: calc(${controlHeight} + ${smallPadding} - ${borderWidth});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.filter-field:not(.above)::after {
|
|
76
|
+
width: calc(100% - (2 * ${borderWidth}));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.filter-icon {
|
|
80
|
+
padding-left: ${smallPadding};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.filter-input {
|
|
84
|
+
background: transparent;
|
|
85
|
+
border: none;
|
|
86
|
+
color: inherit;
|
|
87
|
+
font: inherit;
|
|
88
|
+
height: var(--ni-nimble-control-height);
|
|
89
|
+
padding: 0 ${smallPadding} 0 ${mediumPadding};
|
|
90
|
+
width: 100%;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.filter-input::placeholder {
|
|
94
|
+
color: ${placeholderFontColor};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.filter-input${focusVisible} {
|
|
98
|
+
outline: 0px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.scrollable-region {
|
|
102
|
+
overflow: auto;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.no-results-label {
|
|
106
|
+
color: ${placeholderFontColor};
|
|
107
|
+
height: ${controlHeight};
|
|
108
|
+
display: inline-flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
padding: ${smallPadding} ${mediumPadding};
|
|
111
|
+
}
|
|
29
112
|
`.withBehaviors(appearanceBehavior(DropdownAppearance.block, css `
|
|
30
113
|
:host([error-visible]) .control {
|
|
31
114
|
border-bottom-width: ${borderWidth};
|
|
32
115
|
padding-bottom: 0;
|
|
33
116
|
}
|
|
117
|
+
`), themeBehavior(Theme.color, css `
|
|
118
|
+
.filter-field,
|
|
119
|
+
.no-results-label {
|
|
120
|
+
background: ${hexToRgbaCssColor(White, 0.15)};
|
|
121
|
+
}
|
|
34
122
|
`));
|
|
35
123
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACH,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,YAAY,EACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,cAAc;MACd,WAAW;;MAEX;AACE;gGACgG,CAAC,EACrG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiCc,aAAa;;;;;;;;8BAQD,qBAAqB;uBAC5B,aAAa,MAAM,YAAY,MAAM,WAAW;;;;kCAIrC,WAAW;;;;;;;8BAOf,qBAAqB;oBAC/B,aAAa,MAAM,YAAY,MAAM,WAAW;;;;kCAIlC,WAAW;;;;wBAIrB,YAAY;;;;;;;;;qBASf,YAAY,MAAM,aAAa;;;;;iBAKnC,oBAAoB;;;mBAGlB,YAAY;;;;;;;;;iBASd,oBAAoB;kBACnB,aAAa;;;mBAGZ,YAAY,IAAI,aAAa;;CAE/C,CAAC,aAAa,CACX,kBAAkB,CACd,kBAAkB,CAAC,KAAK,EACxB,GAAG,CAAA;;uCAE4B,WAAW;;;SAGzC,CACJ,EACD,aAAa,CACT,KAAK,CAAC,KAAK,EACX,GAAG,CAAA;;;8BAGmB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;SAEnD,CACJ,CACJ,CAAC","sourcesContent":["import { css } from '@microsoft/fast-element';\nimport { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';\nimport { styles as dropdownStyles } from '../patterns/dropdown/styles';\nimport { styles as errorStyles } from '../patterns/error/styles';\nimport {\n borderRgbPartialColor,\n borderWidth,\n controlHeight,\n mediumPadding,\n placeholderFontColor,\n smallPadding\n} from '../theme-provider/design-tokens';\nimport { appearanceBehavior } from '../utilities/style/appearance';\nimport { DropdownAppearance } from './types';\nimport { focusVisible } from '../utilities/style/focus';\nimport { themeBehavior } from '../utilities/style/theme';\nimport { Theme } from '../theme-provider/types';\nimport { hexToRgbaCssColor } from '../utilities/style/colors';\n\nexport const styles = css`\n ${dropdownStyles}\n ${errorStyles}\n\n ${\n /* We are using flex `order` to define the visual ordering of the selected value,\n error icon, and dropdown arrow because they are not \"interactive\" i.e. part of the tab order */ ''\n }\n [part='selected-value'] {\n order: 1;\n }\n\n [part='indicator'] {\n order: 3;\n }\n\n .error-icon {\n order: 2;\n }\n\n [part='end'] {\n display: contents;\n }\n\n .listbox {\n overflow-x: clip;\n }\n\n .listbox.empty slot {\n display: none;\n }\n\n .listbox.above {\n flex-flow: column-reverse;\n }\n\n .filter-field {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: ${controlHeight};\n background: transparent;\n }\n\n .filter-field::before {\n content: '';\n position: absolute;\n height: 0px;\n border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;\n bottom: calc(${controlHeight} + ${smallPadding} - ${borderWidth});\n }\n\n .filter-field.above::before {\n width: calc(100% - (2 * ${borderWidth}));\n }\n\n .filter-field::after {\n content: '';\n position: absolute;\n height: 0px;\n border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;\n top: calc(${controlHeight} + ${smallPadding} - ${borderWidth});\n }\n\n .filter-field:not(.above)::after {\n width: calc(100% - (2 * ${borderWidth}));\n }\n\n .filter-icon {\n padding-left: ${smallPadding};\n }\n\n .filter-input {\n background: transparent;\n border: none;\n color: inherit;\n font: inherit;\n height: var(--ni-nimble-control-height);\n padding: 0 ${smallPadding} 0 ${mediumPadding};\n width: 100%;\n }\n\n .filter-input::placeholder {\n color: ${placeholderFontColor};\n }\n\n .filter-input${focusVisible} {\n outline: 0px;\n }\n\n .scrollable-region {\n overflow: auto;\n }\n\n .no-results-label {\n color: ${placeholderFontColor};\n height: ${controlHeight};\n display: inline-flex;\n align-items: center;\n padding: ${smallPadding} ${mediumPadding};\n }\n`.withBehaviors(\n appearanceBehavior(\n DropdownAppearance.block,\n css`\n :host([error-visible]) .control {\n border-bottom-width: ${borderWidth};\n padding-bottom: 0;\n }\n `\n ),\n themeBehavior(\n Theme.color,\n css`\n .filter-field,\n .no-results-label {\n background: ${hexToRgbaCssColor(White, 0.15)};\n }\n `\n )\n);\n"]}
|
|
@@ -3,6 +3,10 @@ import { endSlotTemplate, Listbox, startSlotTemplate } from '@microsoft/fast-fou
|
|
|
3
3
|
import { anchoredRegionTag } from '../anchored-region';
|
|
4
4
|
import { DropdownPosition } from '../patterns/dropdown/types';
|
|
5
5
|
import { overflow } from '../utilities/directive/overflow';
|
|
6
|
+
import { iconMagnifyingGlassTag } from '../icons/magnifying-glass';
|
|
7
|
+
import { filterNoResultsLabel, filterSearchLabel } from '../label-provider/core/label-tokens';
|
|
8
|
+
import { FilterMode } from './types';
|
|
9
|
+
/* eslint-disable @typescript-eslint/indent */
|
|
6
10
|
// prettier-ignore
|
|
7
11
|
export const template = (context, definition) => html `
|
|
8
12
|
<template
|
|
@@ -11,11 +15,9 @@ export const template = (context, definition) => html `
|
|
|
11
15
|
x.collapsible && x.open && 'open',
|
|
12
16
|
x.disabled && 'disabled',
|
|
13
17
|
x.collapsible && x.position,
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
aria-activedescendant="${x => x.ariaActiveDescendant}"
|
|
18
|
-
aria-controls="${x => x.ariaControls}"
|
|
18
|
+
].filter(Boolean).join(' ')}"
|
|
19
|
+
aria-activedescendant="${x => (x.filterMode === FilterMode.none ? x.ariaActiveDescendant : null)}"
|
|
20
|
+
aria-controls="${x => (x.filterMode === FilterMode.none ? x.ariaControls : null)}"
|
|
19
21
|
aria-disabled="${x => x.ariaDisabled}"
|
|
20
22
|
aria-expanded="${x => x.ariaExpanded}"
|
|
21
23
|
aria-haspopup="${x => (x.collapsible ? 'listbox' : null)}"
|
|
@@ -24,34 +26,36 @@ export const template = (context, definition) => html `
|
|
|
24
26
|
role="combobox"
|
|
25
27
|
tabindex="${x => (!x.disabled ? '0' : null)}"
|
|
26
28
|
@click="${(x, c) => x.clickHandler(c.event)}"
|
|
29
|
+
@change="${x => x.changeValueHandler()}"
|
|
30
|
+
@contentchange="${x => x.updateDisplayValue()}"
|
|
27
31
|
@focusin="${(x, c) => x.focusinHandler(c.event)}"
|
|
28
32
|
@focusout="${(x, c) => x.focusoutHandler(c.event)}"
|
|
29
33
|
@keydown="${(x, c) => x.keydownHandler(c.event)}"
|
|
30
34
|
@mousedown="${(x, c) => x.mousedownHandler(c.event)}"
|
|
31
35
|
>
|
|
32
36
|
${when(x => x.collapsible, html `
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
37
|
+
<div
|
|
38
|
+
class="control"
|
|
39
|
+
part="control"
|
|
40
|
+
?disabled="${x => x.disabled}"
|
|
41
|
+
${ref('control')}
|
|
42
|
+
>
|
|
43
|
+
${startSlotTemplate(context, definition)}
|
|
44
|
+
<slot name="button-container">
|
|
45
|
+
<div class="selected-value" part="selected-value" ${overflow('hasOverflow')} title=${x => (x.hasOverflow && x.displayValue ? x.displayValue : null)}>
|
|
46
|
+
<slot name="selected-value">${x => x.displayValue}</slot>
|
|
47
|
+
</div>
|
|
48
|
+
<div aria-hidden="true" class="indicator" part="indicator">
|
|
49
|
+
<slot name="indicator">
|
|
50
|
+
${definition.indicator || ''}
|
|
51
|
+
</slot>
|
|
52
|
+
</div>
|
|
53
|
+
</slot>
|
|
54
|
+
${endSlotTemplate(context, definition)}
|
|
55
|
+
</div>
|
|
56
|
+
`)}
|
|
53
57
|
<${anchoredRegionTag}
|
|
54
|
-
${ref('
|
|
58
|
+
${ref('anchoredRegion')}
|
|
55
59
|
class="anchored-region"
|
|
56
60
|
fixed-placement
|
|
57
61
|
auto-update-mode="auto"
|
|
@@ -60,22 +64,52 @@ export const template = (context, definition) => html `
|
|
|
60
64
|
horizontal-default-position="center"
|
|
61
65
|
horizontal-positioning-mode="locktodefault"
|
|
62
66
|
horizontal-scaling="anchor"
|
|
67
|
+
@loaded="${x => x.regionLoadedHandler()}"
|
|
63
68
|
?hidden="${x => (x.collapsible ? !x.open : false)}">
|
|
64
|
-
<div
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
<div class="listbox-background">
|
|
70
|
+
<div
|
|
71
|
+
class="
|
|
72
|
+
listbox
|
|
73
|
+
${x => (x.filteredOptions.length === 0 ? 'empty' : '')}
|
|
74
|
+
${x => x.positionAttribute}
|
|
75
|
+
"
|
|
76
|
+
id="${x => x.listboxId}"
|
|
77
|
+
part="listbox"
|
|
78
|
+
role="listbox"
|
|
79
|
+
?disabled="${x => x.disabled}"
|
|
80
|
+
${ref('listbox')}
|
|
81
|
+
>
|
|
82
|
+
${when(x => x.filterMode !== FilterMode.none, html `
|
|
83
|
+
<div class="filter-field ${x => x.positionAttribute}">
|
|
84
|
+
<${iconMagnifyingGlassTag} class="filter-icon"></${iconMagnifyingGlassTag}>
|
|
85
|
+
<input
|
|
86
|
+
${ref('filterInput')}
|
|
87
|
+
class="filter-input"
|
|
88
|
+
aria-controls="${x => x.ariaControls}"
|
|
89
|
+
aria-activedescendant="${x => x.ariaActiveDescendant}"
|
|
90
|
+
@input="${(x, c) => x.inputHandler(c.event)}"
|
|
91
|
+
@click="${(x, c) => x.inputClickHandler(c.event)}"
|
|
92
|
+
placeholder="${x => filterSearchLabel.getValueFor(x)}"
|
|
93
|
+
value="${x => x.filter}"
|
|
94
|
+
/>
|
|
95
|
+
</div>
|
|
96
|
+
`)}
|
|
97
|
+
<div ${ref('scrollableRegion')}
|
|
98
|
+
class="scrollable-region">
|
|
99
|
+
<slot
|
|
100
|
+
${slotted({
|
|
74
101
|
filter: (n) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),
|
|
75
102
|
flatten: true,
|
|
76
103
|
property: 'slottedOptions',
|
|
77
104
|
})}
|
|
78
|
-
|
|
105
|
+
></slot>
|
|
106
|
+
</div>
|
|
107
|
+
${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0), html `
|
|
108
|
+
<span class="no-results-label ${x => x.positionAttribute}">
|
|
109
|
+
${x => filterNoResultsLabel.getValueFor(x)}
|
|
110
|
+
</span>
|
|
111
|
+
`)}
|
|
112
|
+
</div>
|
|
79
113
|
</div>
|
|
80
114
|
</${anchoredRegionTag}>
|
|
81
115
|
</template>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/select/template.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/select/template.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n ref,\n slotted,\n ViewTemplate,\n when\n} from '@microsoft/fast-element';\nimport {\n endSlotTemplate,\n FoundationElementTemplate,\n Listbox,\n SelectOptions,\n startSlotTemplate\n} from '@microsoft/fast-foundation';\nimport type { Select } from '.';\nimport { anchoredRegionTag } from '../anchored-region';\nimport { DropdownPosition } from '../patterns/dropdown/types';\nimport { overflow } from '../utilities/directive/overflow';\nimport { iconMagnifyingGlassTag } from '../icons/magnifying-glass';\nimport {\n filterNoResultsLabel,\n filterSearchLabel\n} from '../label-provider/core/label-tokens';\nimport { FilterMode } from './types';\n\n/* eslint-disable @typescript-eslint/indent */\n// prettier-ignore\nexport const template: FoundationElementTemplate<\nViewTemplate<Select>,\nSelectOptions\n> = (context, definition) => html<Select>`\n <template\n class=\"${x => [\n x.collapsible && 'collapsible',\n x.collapsible && x.open && 'open',\n x.disabled && 'disabled',\n x.collapsible && x.position,\n ].filter(Boolean).join(' ')}\"\n aria-activedescendant=\"${x => (x.filterMode === FilterMode.none ? x.ariaActiveDescendant : null)}\"\n aria-controls=\"${x => (x.filterMode === FilterMode.none ? x.ariaControls : null)}\"\n aria-disabled=\"${x => x.ariaDisabled}\"\n aria-expanded=\"${x => x.ariaExpanded}\"\n aria-haspopup=\"${x => (x.collapsible ? 'listbox' : null)}\"\n aria-multiselectable=\"${x => x.ariaMultiSelectable}\"\n ?open=\"${x => x.open}\"\n role=\"combobox\"\n tabindex=\"${x => (!x.disabled ? '0' : null)}\"\n @click=\"${(x, c) => x.clickHandler(c.event as MouseEvent)}\"\n @change=\"${x => x.changeValueHandler()}\"\n @contentchange=\"${x => x.updateDisplayValue()}\"\n @focusin=\"${(x, c) => x.focusinHandler(c.event as FocusEvent)}\"\n @focusout=\"${(x, c) => x.focusoutHandler(c.event as FocusEvent)}\"\n @keydown=\"${(x, c) => x.keydownHandler(c.event as KeyboardEvent)}\"\n @mousedown=\"${(x, c) => x.mousedownHandler(c.event as MouseEvent)}\"\n >\n ${when(x => x.collapsible, html<Select>`\n <div\n class=\"control\"\n part=\"control\"\n ?disabled=\"${x => x.disabled}\"\n ${ref('control')}\n >\n ${startSlotTemplate(context, definition)}\n <slot name=\"button-container\">\n <div class=\"selected-value\" part=\"selected-value\" ${overflow('hasOverflow')} title=${x => (x.hasOverflow && x.displayValue ? x.displayValue : null)}>\n <slot name=\"selected-value\">${x => x.displayValue}</slot>\n </div>\n <div aria-hidden=\"true\" class=\"indicator\" part=\"indicator\">\n <slot name=\"indicator\">\n ${definition.indicator || ''}\n </slot>\n </div>\n </slot>\n ${endSlotTemplate(context, definition)}\n </div>\n `)\n }\n <${anchoredRegionTag}\n ${ref('anchoredRegion')}\n class=\"anchored-region\"\n fixed-placement\n auto-update-mode=\"auto\"\n vertical-default-position=\"${x => (x.positionAttribute === DropdownPosition.above ? 'top' : 'bottom')}\"\n vertical-positioning-mode=\"${x => (!x.positionAttribute ? 'dynamic' : 'locktodefault')}\"\n horizontal-default-position=\"center\"\n horizontal-positioning-mode=\"locktodefault\"\n horizontal-scaling=\"anchor\"\n @loaded=\"${x => x.regionLoadedHandler()}\"\n ?hidden=\"${x => (x.collapsible ? !x.open : false)}\">\n <div class=\"listbox-background\">\n <div\n class=\"\n listbox \n ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}\n ${x => x.positionAttribute}\n \"\n id=\"${x => x.listboxId}\"\n part=\"listbox\"\n role=\"listbox\"\n ?disabled=\"${x => x.disabled}\"\n ${ref('listbox')}\n >\n ${when(x => x.filterMode !== FilterMode.none, html<Select>`\n <div class=\"filter-field ${x => x.positionAttribute}\">\n <${iconMagnifyingGlassTag} class=\"filter-icon\"></${iconMagnifyingGlassTag}>\n <input\n ${ref('filterInput')}\n class=\"filter-input\"\n aria-controls=\"${x => x.ariaControls}\"\n aria-activedescendant=\"${x => x.ariaActiveDescendant}\"\n @input=\"${(x, c) => x.inputHandler(c.event as InputEvent)}\"\n @click=\"${(x, c) => x.inputClickHandler(c.event as MouseEvent)}\"\n placeholder=\"${x => filterSearchLabel.getValueFor(x)}\"\n value=\"${x => x.filter}\"\n />\n </div>\n `)}\n <div ${ref('scrollableRegion')}\n class=\"scrollable-region\">\n <slot\n ${slotted({\n filter: (n: Node) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),\n flatten: true,\n property: 'slottedOptions',\n })}\n ></slot>\n </div>\n ${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0), html<Select>`\n <span class=\"no-results-label ${x => x.positionAttribute}\">\n ${x => filterNoResultsLabel.getValueFor(x)}\n </span>\n `)}\n </div>\n </div>\n </${anchoredRegionTag}>\n </template>\n`;\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Select } from '..';
|
|
2
|
+
import type { ListOption } from '../../list-option';
|
|
3
|
+
/**
|
|
4
|
+
* Page object for the `nimble-select` component to provide consistent ways
|
|
5
|
+
* of querying and interacting with the component during tests.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SelectPageObject {
|
|
8
|
+
private readonly selectElement;
|
|
9
|
+
constructor(selectElement: Select);
|
|
10
|
+
openAndSetFilterText(filterText: string): Promise<void>;
|
|
11
|
+
closeDropdown(): Promise<void>;
|
|
12
|
+
setOptions(options: ListOption[]): Promise<void>;
|
|
13
|
+
getFilteredOptions(): ListOption[];
|
|
14
|
+
getSelectedOption(): ListOption | null;
|
|
15
|
+
/**
|
|
16
|
+
* Either opens or closes the dropdown depending on its current state
|
|
17
|
+
*/
|
|
18
|
+
clickSelect(): Promise<void>;
|
|
19
|
+
clickSelectedItem(): void;
|
|
20
|
+
clickFilterInput(): Promise<void>;
|
|
21
|
+
clickOption(index: number): void;
|
|
22
|
+
clickAway(): Promise<void>;
|
|
23
|
+
pressEnterKey(): void;
|
|
24
|
+
pressEscapeKey(): void;
|
|
25
|
+
pressArrowDownKey(): void;
|
|
26
|
+
pressSpaceKey(): Promise<void>;
|
|
27
|
+
isDropdownVisible(): boolean;
|
|
28
|
+
isFilterInputVisible(): boolean;
|
|
29
|
+
isNoResultsLabelVisible(): boolean;
|
|
30
|
+
getFilterInputText(): string;
|
|
31
|
+
private getFilterInput;
|
|
32
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { keyEnter, keyEscape, keyArrowDown, keySpace } from '@microsoft/fast-web-utilities';
|
|
2
|
+
import { waitForUpdatesAsync } from '../../testing/async-helpers';
|
|
3
|
+
import { FilterMode } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Page object for the `nimble-select` component to provide consistent ways
|
|
6
|
+
* of querying and interacting with the component during tests.
|
|
7
|
+
*/
|
|
8
|
+
export class SelectPageObject {
|
|
9
|
+
constructor(selectElement) {
|
|
10
|
+
this.selectElement = selectElement;
|
|
11
|
+
}
|
|
12
|
+
async openAndSetFilterText(filterText) {
|
|
13
|
+
if (this.selectElement.filterMode === FilterMode.none) {
|
|
14
|
+
throw new Error('Can not set filter text with filterMode set to "none".');
|
|
15
|
+
}
|
|
16
|
+
await this.clickSelect();
|
|
17
|
+
const filterInput = this.getFilterInput();
|
|
18
|
+
if (filterInput) {
|
|
19
|
+
filterInput.value = filterText;
|
|
20
|
+
}
|
|
21
|
+
await waitForUpdatesAsync();
|
|
22
|
+
const inputEvent = new InputEvent('input');
|
|
23
|
+
filterInput?.dispatchEvent(inputEvent);
|
|
24
|
+
await waitForUpdatesAsync();
|
|
25
|
+
}
|
|
26
|
+
async closeDropdown() {
|
|
27
|
+
this.selectElement.open = false;
|
|
28
|
+
await waitForUpdatesAsync();
|
|
29
|
+
}
|
|
30
|
+
async setOptions(options) {
|
|
31
|
+
options.forEach(option => {
|
|
32
|
+
option.setAttribute('role', 'option');
|
|
33
|
+
});
|
|
34
|
+
this.selectElement.slottedOptions = options;
|
|
35
|
+
await waitForUpdatesAsync();
|
|
36
|
+
}
|
|
37
|
+
getFilteredOptions() {
|
|
38
|
+
return this.selectElement.filteredOptions;
|
|
39
|
+
}
|
|
40
|
+
getSelectedOption() {
|
|
41
|
+
return this.selectElement.selectedOptions[0] ?? null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Either opens or closes the dropdown depending on its current state
|
|
45
|
+
*/
|
|
46
|
+
async clickSelect() {
|
|
47
|
+
this.selectElement.dispatchEvent(new Event('click'));
|
|
48
|
+
await waitForUpdatesAsync();
|
|
49
|
+
}
|
|
50
|
+
clickSelectedItem() {
|
|
51
|
+
if (!this.selectElement.open) {
|
|
52
|
+
throw new Error('Select must be open to click selectedItem');
|
|
53
|
+
}
|
|
54
|
+
this.clickOption(this.selectElement.selectedIndex);
|
|
55
|
+
}
|
|
56
|
+
async clickFilterInput() {
|
|
57
|
+
if (!this.selectElement.filterInput) {
|
|
58
|
+
throw new Error('Filter input is not available.');
|
|
59
|
+
}
|
|
60
|
+
this.selectElement.filterInput.click();
|
|
61
|
+
await waitForUpdatesAsync();
|
|
62
|
+
}
|
|
63
|
+
clickOption(index) {
|
|
64
|
+
if (!this.selectElement.open) {
|
|
65
|
+
throw new Error('Select must be open to click selectedItem');
|
|
66
|
+
}
|
|
67
|
+
if (index >= this.selectElement.options.length) {
|
|
68
|
+
throw new Error('"index" greater than number of current displayed options');
|
|
69
|
+
}
|
|
70
|
+
const option = this.selectElement.options[index];
|
|
71
|
+
option.scrollIntoView();
|
|
72
|
+
const optionRect = option.getClientRects()[0];
|
|
73
|
+
const clickEvent = new MouseEvent('click', {
|
|
74
|
+
clientY: optionRect.y + optionRect.height / 2,
|
|
75
|
+
clientX: optionRect.width / 2,
|
|
76
|
+
bubbles: true
|
|
77
|
+
});
|
|
78
|
+
option.dispatchEvent(clickEvent);
|
|
79
|
+
}
|
|
80
|
+
async clickAway() {
|
|
81
|
+
this.selectElement.dispatchEvent(new Event('focusout'));
|
|
82
|
+
await waitForUpdatesAsync();
|
|
83
|
+
}
|
|
84
|
+
pressEnterKey() {
|
|
85
|
+
this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keyEnter }));
|
|
86
|
+
}
|
|
87
|
+
pressEscapeKey() {
|
|
88
|
+
this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keyEscape }));
|
|
89
|
+
}
|
|
90
|
+
pressArrowDownKey() {
|
|
91
|
+
this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keyArrowDown }));
|
|
92
|
+
}
|
|
93
|
+
async pressSpaceKey() {
|
|
94
|
+
const alreadyOpen = this.selectElement.open;
|
|
95
|
+
this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keySpace, bubbles: true }));
|
|
96
|
+
await waitForUpdatesAsync();
|
|
97
|
+
if (this.selectElement.filterMode === FilterMode.standard
|
|
98
|
+
&& alreadyOpen) {
|
|
99
|
+
// add space to end of current filter
|
|
100
|
+
const filterValue = `${this.selectElement.filterInput?.value ?? ''} `;
|
|
101
|
+
if (this.selectElement.filterInput) {
|
|
102
|
+
this.selectElement.filterInput.value = filterValue;
|
|
103
|
+
}
|
|
104
|
+
this.selectElement.filterInput?.dispatchEvent(new InputEvent('input', { inputType: 'insertText' }));
|
|
105
|
+
}
|
|
106
|
+
await waitForUpdatesAsync();
|
|
107
|
+
}
|
|
108
|
+
isDropdownVisible() {
|
|
109
|
+
return (this.selectElement.shadowRoot?.querySelector('.listbox') !== null);
|
|
110
|
+
}
|
|
111
|
+
isFilterInputVisible() {
|
|
112
|
+
return (this.selectElement.shadowRoot?.querySelector('.filter-field')
|
|
113
|
+
!== null);
|
|
114
|
+
}
|
|
115
|
+
isNoResultsLabelVisible() {
|
|
116
|
+
return (this.selectElement.shadowRoot?.querySelector('.no-results-label') !== null);
|
|
117
|
+
}
|
|
118
|
+
getFilterInputText() {
|
|
119
|
+
return this.getFilterInput()?.value ?? '';
|
|
120
|
+
}
|
|
121
|
+
getFilterInput() {
|
|
122
|
+
if (this.selectElement.filterMode === FilterMode.none) {
|
|
123
|
+
throw new Error('Select has filterMode of "none" so there is no filter input');
|
|
124
|
+
}
|
|
125
|
+
return this.selectElement.shadowRoot?.querySelector('.filter-input');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=select.pageobject.js.map
|