@ni/ok-components 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all-components-bundle.js +3044 -530
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +6788 -5229
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/custom-elements.json +1423 -63
- package/dist/custom-elements.md +246 -13
- package/dist/esm/fv/accordion-item/index.d.ts +1 -0
- package/dist/esm/fv/accordion-item/index.js +1 -0
- package/dist/esm/fv/accordion-item/index.js.map +1 -1
- package/dist/esm/fv/accordion-item/testing/fv-accordion-item.pageobject.js +5 -0
- package/dist/esm/fv/accordion-item/testing/fv-accordion-item.pageobject.js.map +1 -1
- package/dist/esm/fv/all-fv.d.ts +7 -0
- package/dist/esm/fv/all-fv.js +7 -0
- package/dist/esm/fv/all-fv.js.map +1 -1
- package/dist/esm/fv/card/index.d.ts +59 -0
- package/dist/esm/fv/card/index.js +144 -0
- package/dist/esm/fv/card/index.js.map +1 -0
- package/dist/esm/fv/card/styles.d.ts +1 -0
- package/dist/esm/fv/card/styles.js +231 -0
- package/dist/esm/fv/card/styles.js.map +1 -0
- package/dist/esm/fv/card/template.d.ts +2 -0
- package/dist/esm/fv/card/template.js +126 -0
- package/dist/esm/fv/card/template.js.map +1 -0
- package/dist/esm/fv/card/types.d.ts +10 -0
- package/dist/esm/fv/card/types.js +9 -0
- package/dist/esm/fv/card/types.js.map +1 -0
- package/dist/esm/fv/chip-selector/index.d.ts +104 -0
- package/dist/esm/fv/chip-selector/index.js +367 -0
- package/dist/esm/fv/chip-selector/index.js.map +1 -0
- package/dist/esm/fv/chip-selector/styles.d.ts +1 -0
- package/dist/esm/fv/chip-selector/styles.js +251 -0
- package/dist/esm/fv/chip-selector/styles.js.map +1 -0
- package/dist/esm/fv/chip-selector/template.d.ts +2 -0
- package/dist/esm/fv/chip-selector/template.js +147 -0
- package/dist/esm/fv/chip-selector/template.js.map +1 -0
- package/dist/esm/fv/context-help/index.d.ts +22 -0
- package/dist/esm/fv/context-help/index.js +41 -0
- package/dist/esm/fv/context-help/index.js.map +1 -0
- package/dist/esm/fv/context-help/styles.d.ts +1 -0
- package/dist/esm/fv/context-help/styles.js +55 -0
- package/dist/esm/fv/context-help/styles.js.map +1 -0
- package/dist/esm/fv/context-help/template.d.ts +2 -0
- package/dist/esm/fv/context-help/template.js +24 -0
- package/dist/esm/fv/context-help/template.js.map +1 -0
- package/dist/esm/fv/context-help/types.d.ts +1 -0
- package/dist/esm/fv/context-help/types.js +2 -0
- package/dist/esm/fv/context-help/types.js.map +1 -0
- package/dist/esm/fv/search-input/index.d.ts +2 -0
- package/dist/esm/fv/search-input/index.js +2 -0
- package/dist/esm/fv/search-input/index.js.map +1 -1
- package/dist/esm/fv/search-input/styles.js +14 -14
- package/dist/esm/fv/search-input/styles.js.map +1 -1
- package/dist/esm/fv/split-button/index.d.ts +43 -0
- package/dist/esm/fv/split-button/index.js +130 -0
- package/dist/esm/fv/split-button/index.js.map +1 -0
- package/dist/esm/fv/split-button/styles.d.ts +1 -0
- package/dist/esm/fv/split-button/styles.js +220 -0
- package/dist/esm/fv/split-button/styles.js.map +1 -0
- package/dist/esm/fv/split-button/template.d.ts +2 -0
- package/dist/esm/fv/split-button/template.js +52 -0
- package/dist/esm/fv/split-button/template.js.map +1 -0
- package/dist/esm/fv/split-button/types.d.ts +12 -0
- package/dist/esm/fv/split-button/types.js +11 -0
- package/dist/esm/fv/split-button/types.js.map +1 -0
- package/dist/esm/fv/split-button-anchor/index.d.ts +47 -0
- package/dist/esm/fv/split-button-anchor/index.js +146 -0
- package/dist/esm/fv/split-button-anchor/index.js.map +1 -0
- package/dist/esm/fv/split-button-anchor/styles.d.ts +1 -0
- package/dist/esm/fv/split-button-anchor/styles.js +228 -0
- package/dist/esm/fv/split-button-anchor/styles.js.map +1 -0
- package/dist/esm/fv/split-button-anchor/template.d.ts +2 -0
- package/dist/esm/fv/split-button-anchor/template.js +64 -0
- package/dist/esm/fv/split-button-anchor/template.js.map +1 -0
- package/dist/esm/fv/split-button-anchor/types.d.ts +12 -0
- package/dist/esm/fv/split-button-anchor/types.js +11 -0
- package/dist/esm/fv/split-button-anchor/types.js.map +1 -0
- package/dist/esm/fv/summary-panel/index.d.ts +26 -0
- package/dist/esm/fv/summary-panel/index.js +70 -0
- package/dist/esm/fv/summary-panel/index.js.map +1 -0
- package/dist/esm/fv/summary-panel/styles.d.ts +1 -0
- package/dist/esm/fv/summary-panel/styles.js +49 -0
- package/dist/esm/fv/summary-panel/styles.js.map +1 -0
- package/dist/esm/fv/summary-panel/template.d.ts +2 -0
- package/dist/esm/fv/summary-panel/template.js +29 -0
- package/dist/esm/fv/summary-panel/template.js.map +1 -0
- package/dist/esm/fv/summary-panel-tile/index.d.ts +23 -0
- package/dist/esm/fv/summary-panel-tile/index.js +59 -0
- package/dist/esm/fv/summary-panel-tile/index.js.map +1 -0
- package/dist/esm/fv/summary-panel-tile/styles.d.ts +1 -0
- package/dist/esm/fv/summary-panel-tile/styles.js +138 -0
- package/dist/esm/fv/summary-panel-tile/styles.js.map +1 -0
- package/dist/esm/fv/summary-panel-tile/template.d.ts +2 -0
- package/dist/esm/fv/summary-panel-tile/template.js +14 -0
- package/dist/esm/fv/summary-panel-tile/template.js.map +1 -0
- package/dist/esm/fv/summary-panel-tile/types.d.ts +5 -0
- package/dist/esm/fv/summary-panel-tile/types.js +5 -0
- package/dist/esm/fv/summary-panel-tile/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/chip-selector/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,0BAA0B,EAC1B,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,6BAA6B,EAC7B,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EAClB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,cAAc,CAAC;;;;;;oBAMb,QAAQ;qBACP,aAAa;;;;;;;;;;gCAUF,YAAY;qBACvB,qBAAqB;oBACtB,gBAAgB;;;;;;;0BAOV,aAAa;sBACjB,WAAW,eAAe,qBAAqB;;;+BAGtC,UAAU;;;;;;;;;;;2CAWE,UAAU;;;;;;;;;;;;mCAYlB,UAAU;;;;;;;;;mBAS1B,YAAY;;uBAER,YAAY,IAAI,eAAe,IAAI,YAAY,IAAI,YAAY;;;;;;;2BAO3D,YAAY;;;+BAGR,qBAAqB;;;;;cAKtC,aAAa,CAAC,iBAAiB;;qCAER,YAAY;;;;;;;;;;;;;;;;;;qBAkB5B,oBAAoB;;;;cAI3B,aAAa,CAAC,iBAAiB;;4BAEjB,YAAY;6BACX,YAAY;;;;cAI3B,SAAS,CAAC,iBAAiB;;;;;;kCAMP,YAAY;;;;;sBAKxB,WAAW,UAAU,gBAAgB;0BACjC,0BAA0B;0BAC1B,mBAAmB;;;;;;;;;;;;;;;0BAenB,aAAa;yBACd,eAAe;;;;;;;;;;;;;0BAad,WAAW,eAAe,qBAAqB;;;;uBAIlD,YAAY,IAAI,eAAe;qBACjC,oBAAoB;;;;;;0BAMf,gBAAgB;;;;;0BAKhB,cAAc;;;;;;0BAMd,gBAAgB;;;;;;;;;;;;uBAYnB,WAAW,UAAU,gBAAgB;;;;;;;0BAOlC,gBAAgB;;;;;;;;;;;;0BAYhB,iBAAiB;;;;0BAIjB,sBAAsB;;;;0BAItB,iBAAiB;;;;;;qBAMtB,qBAAqB;;;;qBAIrB,6BAA6B;;;;iCAIjB,qBAAqB;+BACvB,qBAAqB;;;;;;;;;;;;;;CAcnD,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n applicationBackgroundColor,\n bodyDisabledFontColor,\n bodyFont,\n bodyFontColor,\n borderHoverColor,\n borderRgbPartialColor,\n borderWidth,\n controlHeight,\n controlLabelDisabledFontColor,\n controlLabelFont,\n controlLabelFontColor,\n elevation2BoxShadow,\n fillHoverColor,\n fillHoverSelectedColor,\n fillSelectedColor,\n iconColor,\n placeholderFontColor,\n popupBorderColor,\n smallDelay,\n smallPadding,\n standardPadding\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('inline-block')}\n\n :host {\n width: 300px;\n max-width: 100%;\n box-sizing: border-box;\n font: ${bodyFont};\n color: ${bodyFontColor};\n }\n\n .chip-selector {\n position: relative;\n width: 100%;\n }\n\n .label {\n display: flex;\n margin-block-end: ${smallPadding};\n color: ${controlLabelFontColor};\n font: ${controlLabelFont};\n }\n\n .chip-selector-field {\n position: relative;\n display: flex;\n align-items: stretch;\n min-height: ${controlHeight};\n border: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.3);\n background: transparent;\n transition:\n border-color ${smallDelay} ease-in-out;\n }\n\n .chip-selector-field::before {\n content: '';\n position: absolute;\n inset-inline: 0;\n inset-block-end: -1px;\n height: 1px;\n background: transparent;\n pointer-events: none;\n transition: background-color ${smallDelay} ease-in-out;\n }\n\n .chip-selector-field::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n inset-block-end: -1px;\n height: 2px;\n background: transparent;\n pointer-events: none;\n transition:\n background-color ${smallDelay} ease-in-out;\n }\n\n .chip-selector-selection-area {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n flex-wrap: wrap;\n align-items: center;\n gap: ${smallPadding};\n min-width: 0;\n padding: ${smallPadding} ${standardPadding} ${smallPadding} ${smallPadding};\n box-sizing: border-box;\n }\n\n .chip-selector-selection-area::after {\n content: '';\n position: absolute;\n inset-block: ${smallPadding};\n inset-inline-end: 0;\n width: 2px;\n background: rgba(${borderRgbPartialColor}, 0.2);\n }\n\n /* Target only the picker's internal chips, not slotted client content. */\n .chip-selector-selection-area > nimble-chip {\n ${controlHeight.cssCustomProperty}: 24px;\n min-width: 0;\n max-width: calc(100% - ${smallPadding});\n }\n\n .chip-selector-input {\n -webkit-appearance: none;\n appearance: none;\n flex: 1 1 0;\n min-width: 0;\n width: 0;\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n outline: none;\n }\n\n .chip-selector-input::placeholder {\n color: ${placeholderFontColor};\n }\n\n .chip-selector-menu-button {\n ${controlHeight.cssCustomProperty}: 24px;\n align-self: flex-start;\n margin-block: ${smallPadding};\n margin-inline: ${smallPadding};\n }\n\n .chip-selector-menu-icon {\n ${iconColor.cssCustomProperty}: currentColor;\n }\n\n .chip-selector-menu {\n width: 100%;\n box-sizing: border-box;\n margin-block-start: ${smallPadding};\n display: flex;\n flex-direction: column;\n max-height: 192px;\n overflow-y: auto;\n border: ${borderWidth} solid ${popupBorderColor};\n background: ${applicationBackgroundColor};\n box-shadow: ${elevation2BoxShadow};\n border-radius: 4px;\n }\n\n .chip-selector-menu[hidden] {\n display: none;\n }\n\n .chip-selector-option {\n -webkit-appearance: none;\n appearance: none;\n display: flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n min-height: ${controlHeight};\n padding: 0 ${standardPadding};\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n }\n\n .chip-selector-create-option {\n border-top: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.12);\n }\n\n .chip-selector-empty {\n padding: ${smallPadding} ${standardPadding};\n color: ${placeholderFontColor};\n }\n }\n\n @layer hover {\n .chip-selector-field:hover::after {\n background: ${borderHoverColor};\n }\n\n .chip-selector-option:hover,\n .chip-selector-option.active {\n background: ${fillHoverColor};\n }\n }\n\n @layer focusVisible {\n .chip-selector-field:focus-within::before {\n background: ${borderHoverColor};\n }\n\n .chip-selector-field:focus-within {\n border-bottom-color: transparent;\n }\n\n .chip-selector-field:focus-within::after {\n background: transparent;\n }\n\n .chip-selector-option:focus-visible {\n outline: ${borderWidth} solid ${borderHoverColor};\n outline-offset: -1px;\n }\n }\n\n @layer active {\n :host([open]) .chip-selector-field::before {\n background: ${borderHoverColor};\n }\n\n :host([open]) .chip-selector-field {\n border-bottom-color: transparent;\n }\n\n :host([open]) .chip-selector-field::after {\n background: transparent;\n }\n\n .chip-selector-option[aria-selected='true'] {\n background: ${fillSelectedColor};\n }\n\n .chip-selector-option[aria-selected='true']:hover {\n background: ${fillHoverSelectedColor};\n }\n\n .chip-selector-option:active {\n background: ${fillSelectedColor};\n }\n }\n\n @layer disabled {\n :host([disabled]) {\n color: ${bodyDisabledFontColor};\n }\n\n :host([disabled]) .label {\n color: ${controlLabelDisabledFontColor};\n }\n\n :host([disabled]) .chip-selector-field {\n border-color: rgba(${borderRgbPartialColor}, 0.1);\n background: rgba(${borderRgbPartialColor}, 0.07);\n }\n\n :host([disabled]) .chip-selector-field::after {\n background: transparent;\n }\n\n :host([disabled]) .chip-selector-menu-button,\n :host([disabled]) .chip-selector-input {\n cursor: not-allowed;\n }\n }\n\n @layer top {}\n`;"]}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { html, ref, repeat, when } from '@ni/fast-element';
|
|
2
|
+
import { anchoredRegionTag } from '@ni/nimble-components/dist/esm/anchored-region';
|
|
3
|
+
import { chipTag } from '@ni/nimble-components/dist/esm/chip';
|
|
4
|
+
import { ChipAppearance } from '@ni/nimble-components/dist/esm/chip/types';
|
|
5
|
+
import { iconArrowExpanderDownTag } from '@ni/nimble-components/dist/esm/icons/arrow-expander-down';
|
|
6
|
+
import { menuTag } from '@ni/nimble-components/dist/esm/menu';
|
|
7
|
+
import { menuItemTag } from '@ni/nimble-components/dist/esm/menu-item';
|
|
8
|
+
import { toggleButtonTag } from '@ni/nimble-components/dist/esm/toggle-button';
|
|
9
|
+
export const template = html `
|
|
10
|
+
<div class="chip-selector">
|
|
11
|
+
${when(x => x.label.length > 0, html `
|
|
12
|
+
<label id="${x => x.labelId}" class="label" for="${x => x.inputId}">
|
|
13
|
+
${x => x.label}
|
|
14
|
+
</label>
|
|
15
|
+
`)}
|
|
16
|
+
<div
|
|
17
|
+
class="chip-selector-field"
|
|
18
|
+
role="combobox"
|
|
19
|
+
aria-expanded="${x => x.open}"
|
|
20
|
+
aria-controls="${x => x.menuId}"
|
|
21
|
+
aria-haspopup="listbox"
|
|
22
|
+
aria-disabled="${x => x.disabled}"
|
|
23
|
+
aria-labelledby="${x => (x.label.length > 0 ? x.labelId : null)}"
|
|
24
|
+
${ref('field')}
|
|
25
|
+
@click="${(x, c) => {
|
|
26
|
+
x.handleFieldClick(c.event);
|
|
27
|
+
return true;
|
|
28
|
+
}}"
|
|
29
|
+
>
|
|
30
|
+
<div class="chip-selector-selection-area">
|
|
31
|
+
${repeat(x => x.selectedValueList, html `
|
|
32
|
+
<${chipTag}
|
|
33
|
+
removable
|
|
34
|
+
appearance="${ChipAppearance.block}"
|
|
35
|
+
data-chip-value="${x => x}"
|
|
36
|
+
?disabled="${(_, c) => c.parent.disabled}"
|
|
37
|
+
@remove="${(_, c) => {
|
|
38
|
+
c.parent.handleChipRemove(c.event);
|
|
39
|
+
return true;
|
|
40
|
+
}}"
|
|
41
|
+
>
|
|
42
|
+
${x => x}
|
|
43
|
+
</${chipTag}>
|
|
44
|
+
`)}
|
|
45
|
+
<input
|
|
46
|
+
id="${x => x.inputId}"
|
|
47
|
+
class="chip-selector-input"
|
|
48
|
+
type="text"
|
|
49
|
+
autocomplete="off"
|
|
50
|
+
spellcheck="false"
|
|
51
|
+
placeholder="${x => (x.selectedValueList.length === 0 ? x.placeholder : '')}"
|
|
52
|
+
:value="${x => x.filterText}"
|
|
53
|
+
aria-controls="${x => x.menuId}"
|
|
54
|
+
aria-activedescendant="${x => (x.open ? x.activeOptionId : null)}"
|
|
55
|
+
aria-autocomplete="list"
|
|
56
|
+
aria-expanded="${x => x.open}"
|
|
57
|
+
aria-label="${x => (x.label.length === 0 ? x.placeholder || 'Chip selector' : null)}"
|
|
58
|
+
aria-labelledby="${x => (x.label.length > 0 ? x.labelId : null)}"
|
|
59
|
+
aria-haspopup="listbox"
|
|
60
|
+
role="combobox"
|
|
61
|
+
?disabled="${x => x.disabled}"
|
|
62
|
+
${ref('captureInputRef')}
|
|
63
|
+
@focus="${x => {
|
|
64
|
+
x.handleInputFocus();
|
|
65
|
+
return true;
|
|
66
|
+
}}"
|
|
67
|
+
@input="${(x, c) => {
|
|
68
|
+
x.handleInput(c.event);
|
|
69
|
+
return true;
|
|
70
|
+
}}"
|
|
71
|
+
@keydown="${(x, c) => x.handleInputKeydown(c.event)}"
|
|
72
|
+
/>
|
|
73
|
+
</div>
|
|
74
|
+
<${toggleButtonTag}
|
|
75
|
+
class="chip-selector-menu-button"
|
|
76
|
+
appearance="ghost"
|
|
77
|
+
:checked="${x => x.open}"
|
|
78
|
+
?disabled="${x => x.disabled}"
|
|
79
|
+
${ref('captureMenuButtonRef')}
|
|
80
|
+
@click="${(x, c) => {
|
|
81
|
+
x.handleMenuButtonClick(c.event);
|
|
82
|
+
return true;
|
|
83
|
+
}}"
|
|
84
|
+
@change="${(x, c) => {
|
|
85
|
+
x.handleMenuButtonChange(c.event);
|
|
86
|
+
return true;
|
|
87
|
+
}}"
|
|
88
|
+
content-hidden="true"
|
|
89
|
+
aria-hidden="true"
|
|
90
|
+
tabindex="-1"
|
|
91
|
+
>
|
|
92
|
+
<${iconArrowExpanderDownTag} slot="start" class="chip-selector-menu-icon"></${iconArrowExpanderDownTag}>
|
|
93
|
+
</${toggleButtonTag}>
|
|
94
|
+
</div>
|
|
95
|
+
${when(x => x.open, html `
|
|
96
|
+
<${anchoredRegionTag}
|
|
97
|
+
class="chip-selector-anchored-region"
|
|
98
|
+
${ref('region')}
|
|
99
|
+
fixed-placement
|
|
100
|
+
auto-update-mode="auto"
|
|
101
|
+
vertical-default-position="bottom"
|
|
102
|
+
vertical-positioning-mode="locktodefault"
|
|
103
|
+
horizontal-default-position="center"
|
|
104
|
+
horizontal-positioning-mode="locktodefault"
|
|
105
|
+
horizontal-scaling="anchor"
|
|
106
|
+
>
|
|
107
|
+
<div @click="${(x, c) => {
|
|
108
|
+
x.handleMenuClick(c.event);
|
|
109
|
+
return true;
|
|
110
|
+
}}"
|
|
111
|
+
>
|
|
112
|
+
<${menuTag}
|
|
113
|
+
id="${x => x.menuId}"
|
|
114
|
+
class="chip-selector-menu"
|
|
115
|
+
@change="${(_, c) => {
|
|
116
|
+
c.event.stopPropagation();
|
|
117
|
+
return true;
|
|
118
|
+
}}"
|
|
119
|
+
>
|
|
120
|
+
${repeat(x => x.visibleOptionList, html `
|
|
121
|
+
<${menuItemTag}
|
|
122
|
+
id="${(_, c) => `${c.parent.menuId}-option-${c.index}`}"
|
|
123
|
+
class="chip-selector-option"
|
|
124
|
+
data-option-value="${x => x}"
|
|
125
|
+
>
|
|
126
|
+
${x => x}
|
|
127
|
+
</${menuItemTag}>
|
|
128
|
+
`)}
|
|
129
|
+
${when(x => x.customValueCandidate.length > 0, html `
|
|
130
|
+
<${menuItemTag}
|
|
131
|
+
id="${x => `${x.menuId}-option-create`}"
|
|
132
|
+
class="chip-selector-option chip-selector-create-option"
|
|
133
|
+
data-option-value="${x => x.customValueCandidate}"
|
|
134
|
+
>
|
|
135
|
+
${x => x.createOptionLabel}
|
|
136
|
+
</${menuItemTag}>
|
|
137
|
+
`)}
|
|
138
|
+
${when(x => x.showEmptyState, html `
|
|
139
|
+
<div class="chip-selector-empty">No matches</div>
|
|
140
|
+
`)}
|
|
141
|
+
</${menuTag}>
|
|
142
|
+
</div>
|
|
143
|
+
</${anchoredRegionTag}>
|
|
144
|
+
`)}
|
|
145
|
+
</div>
|
|
146
|
+
`;
|
|
147
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/chip-selector/template.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, ref, repeat, when } from '@ni/fast-element';\nimport { anchoredRegionTag } from '@ni/nimble-components/dist/esm/anchored-region';\nimport { chipTag } from '@ni/nimble-components/dist/esm/chip';\nimport { ChipAppearance } from '@ni/nimble-components/dist/esm/chip/types';\nimport { iconArrowExpanderDownTag } from '@ni/nimble-components/dist/esm/icons/arrow-expander-down';\nimport { menuTag } from '@ni/nimble-components/dist/esm/menu';\nimport { menuItemTag } from '@ni/nimble-components/dist/esm/menu-item';\nimport { toggleButtonTag } from '@ni/nimble-components/dist/esm/toggle-button';\nimport type { FvChipSelector } from '.';\n\nexport const template = html<FvChipSelector>`\n <div class=\"chip-selector\">\n ${when(\n x => x.label.length > 0,\n html<FvChipSelector>`\n <label id=\"${x => x.labelId}\" class=\"label\" for=\"${x => x.inputId}\">\n ${x => x.label}\n </label>\n `\n )}\n <div\n class=\"chip-selector-field\"\n role=\"combobox\"\n aria-expanded=\"${x => x.open}\"\n aria-controls=\"${x => x.menuId}\"\n aria-haspopup=\"listbox\"\n aria-disabled=\"${x => x.disabled}\"\n aria-labelledby=\"${x => (x.label.length > 0 ? x.labelId : null)}\"\n ${ref('field')}\n @click=\"${(x, c) => {\n x.handleFieldClick(c.event);\n return true;\n }}\"\n >\n <div class=\"chip-selector-selection-area\">\n ${repeat(\n x => x.selectedValueList,\n html<string, FvChipSelector>`\n <${chipTag}\n removable\n appearance=\"${ChipAppearance.block}\"\n data-chip-value=\"${x => x}\"\n ?disabled=\"${(_, c) => c.parent.disabled}\"\n @remove=\"${(_, c) => {\n c.parent.handleChipRemove(c.event);\n return true;\n }}\"\n >\n ${x => x}\n </${chipTag}>\n `\n )}\n <input\n id=\"${x => x.inputId}\"\n class=\"chip-selector-input\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n placeholder=\"${x => (x.selectedValueList.length === 0 ? x.placeholder : '')}\"\n :value=\"${x => x.filterText}\"\n aria-controls=\"${x => x.menuId}\"\n aria-activedescendant=\"${x => (x.open ? x.activeOptionId : null)}\"\n aria-autocomplete=\"list\"\n aria-expanded=\"${x => x.open}\"\n aria-label=\"${x => (x.label.length === 0 ? x.placeholder || 'Chip selector' : null)}\"\n aria-labelledby=\"${x => (x.label.length > 0 ? x.labelId : null)}\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n ?disabled=\"${x => x.disabled}\"\n ${ref('captureInputRef')}\n @focus=\"${x => {\n x.handleInputFocus();\n return true;\n }}\"\n @input=\"${(x, c) => {\n x.handleInput(c.event);\n return true;\n }}\"\n @keydown=\"${(x, c) => x.handleInputKeydown(c.event as KeyboardEvent)}\"\n />\n </div>\n <${toggleButtonTag}\n class=\"chip-selector-menu-button\"\n appearance=\"ghost\"\n :checked=\"${x => x.open}\"\n ?disabled=\"${x => x.disabled}\"\n ${ref('captureMenuButtonRef')}\n @click=\"${(x, c) => {\n x.handleMenuButtonClick(c.event);\n return true;\n }}\"\n @change=\"${(x, c) => {\n x.handleMenuButtonChange(c.event);\n return true;\n }}\"\n content-hidden=\"true\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n >\n <${iconArrowExpanderDownTag} slot=\"start\" class=\"chip-selector-menu-icon\"></${iconArrowExpanderDownTag}>\n </${toggleButtonTag}>\n </div>\n ${when(\n x => x.open,\n html<FvChipSelector>`\n <${anchoredRegionTag}\n class=\"chip-selector-anchored-region\"\n ${ref('region')}\n fixed-placement\n auto-update-mode=\"auto\"\n vertical-default-position=\"bottom\"\n vertical-positioning-mode=\"locktodefault\"\n horizontal-default-position=\"center\"\n horizontal-positioning-mode=\"locktodefault\"\n horizontal-scaling=\"anchor\"\n >\n <div @click=\"${(x, c) => {\n x.handleMenuClick(c.event);\n return true;\n }}\"\n >\n <${menuTag}\n id=\"${x => x.menuId}\"\n class=\"chip-selector-menu\"\n @change=\"${(_, c) => {\n c.event.stopPropagation();\n return true;\n }}\"\n >\n ${repeat(\n x => x.visibleOptionList,\n html<string, FvChipSelector>`\n <${menuItemTag}\n id=\"${(_, c) => `${c.parent.menuId}-option-${c.index}`}\"\n class=\"chip-selector-option\"\n data-option-value=\"${x => x}\"\n >\n ${x => x}\n </${menuItemTag}>\n `\n )}\n ${when(\n x => x.customValueCandidate.length > 0,\n html<FvChipSelector>`\n <${menuItemTag}\n id=\"${x => `${x.menuId}-option-create`}\"\n class=\"chip-selector-option chip-selector-create-option\"\n data-option-value=\"${x => x.customValueCandidate}\"\n >\n ${x => x.createOptionLabel}\n </${menuItemTag}>\n `\n )}\n ${when(\n x => x.showEmptyState,\n html<FvChipSelector>`\n <div class=\"chip-selector-empty\">No matches</div>\n `\n )}\n </${menuTag}>\n </div>\n </${anchoredRegionTag}>\n `\n )}\n </div>\n`;"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FoundationElement } from '@ni/fast-foundation';
|
|
2
|
+
import '@ni/nimble-components/dist/esm/icons/info-circle';
|
|
3
|
+
import '@ni/nimble-components/dist/esm/tooltip';
|
|
4
|
+
import type { FvContextHelpSeverity } from './types';
|
|
5
|
+
export type { FvContextHelpSeverity };
|
|
6
|
+
declare global {
|
|
7
|
+
interface HTMLElementTagNameMap {
|
|
8
|
+
'ok-fv-context-help': FvContextHelp;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* An info trigger with an attached tooltip for lightweight contextual guidance.
|
|
13
|
+
*/
|
|
14
|
+
export declare class FvContextHelp extends FoundationElement {
|
|
15
|
+
text: string;
|
|
16
|
+
triggerLabel: string;
|
|
17
|
+
severity: FvContextHelpSeverity;
|
|
18
|
+
iconVisible: boolean;
|
|
19
|
+
/** @internal */
|
|
20
|
+
readonly tooltipAnchorId: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const fvContextHelpTag = "ok-fv-context-help";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { attr } from '@ni/fast-element';
|
|
3
|
+
import { DesignSystem, FoundationElement } from '@ni/fast-foundation';
|
|
4
|
+
import { uniqueId } from '@ni/fast-web-utilities';
|
|
5
|
+
import '@ni/nimble-components/dist/esm/icons/info-circle';
|
|
6
|
+
import '@ni/nimble-components/dist/esm/tooltip';
|
|
7
|
+
import { styles } from './styles';
|
|
8
|
+
import { template } from './template';
|
|
9
|
+
/**
|
|
10
|
+
* An info trigger with an attached tooltip for lightweight contextual guidance.
|
|
11
|
+
*/
|
|
12
|
+
export class FvContextHelp extends FoundationElement {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.text = '';
|
|
16
|
+
this.triggerLabel = 'Show help';
|
|
17
|
+
this.iconVisible = false;
|
|
18
|
+
/** @internal */
|
|
19
|
+
this.tooltipAnchorId = uniqueId('ok-fv-context-help');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
__decorate([
|
|
23
|
+
attr
|
|
24
|
+
], FvContextHelp.prototype, "text", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
attr({ attribute: 'trigger-label' })
|
|
27
|
+
], FvContextHelp.prototype, "triggerLabel", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
attr
|
|
30
|
+
], FvContextHelp.prototype, "severity", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
attr({ attribute: 'icon-visible', mode: 'boolean' })
|
|
33
|
+
], FvContextHelp.prototype, "iconVisible", void 0);
|
|
34
|
+
const okFvContextHelp = FvContextHelp.compose({
|
|
35
|
+
baseName: 'fv-context-help',
|
|
36
|
+
template,
|
|
37
|
+
styles
|
|
38
|
+
});
|
|
39
|
+
DesignSystem.getOrCreate().withPrefix('ok').register(okFvContextHelp());
|
|
40
|
+
export const fvContextHelpTag = 'ok-fv-context-help';
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/context-help/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,kDAAkD,CAAC;AAC1D,OAAO,wCAAwC,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWtC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAApD;;QAEW,SAAI,GAAG,EAAE,CAAC;QAGV,iBAAY,GAAG,WAAW,CAAC;QAM3B,gBAAW,GAAG,KAAK,CAAC;QAE3B,gBAAgB;QACA,oBAAe,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACrE,CAAC;CAAA;AAbU;IADN,IAAI;2CACY;AAGV;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;mDACH;AAG3B;IADN,IAAI;+CACkC;AAGhC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;kDAC1B;AAM/B,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;IAC1C,QAAQ,EAAE,iBAAiB;IAC3B,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC","sourcesContent":["import { attr } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport { uniqueId } from '@ni/fast-web-utilities';\nimport '@ni/nimble-components/dist/esm/icons/info-circle';\nimport '@ni/nimble-components/dist/esm/tooltip';\nimport { styles } from './styles';\nimport { template } from './template';\nimport type { FvContextHelpSeverity } from './types';\n\nexport type { FvContextHelpSeverity };\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-context-help': FvContextHelp;\n }\n}\n\n/**\n * An info trigger with an attached tooltip for lightweight contextual guidance.\n */\nexport class FvContextHelp extends FoundationElement {\n @attr\n public text = '';\n\n @attr({ attribute: 'trigger-label' })\n public triggerLabel = 'Show help';\n\n @attr\n public severity: FvContextHelpSeverity;\n\n @attr({ attribute: 'icon-visible', mode: 'boolean' })\n public iconVisible = false;\n\n /** @internal */\n public readonly tooltipAnchorId = uniqueId('ok-fv-context-help');\n}\n\nconst okFvContextHelp = FvContextHelp.compose({\n baseName: 'fv-context-help',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvContextHelp());\nexport const fvContextHelpTag = 'ok-fv-context-help';"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("@ni/fast-element").ElementStyles;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { css } from '@ni/fast-element';
|
|
2
|
+
import { borderHoverColor, iconColor, iconSize, linkFontColor } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';
|
|
3
|
+
import { display } from '../../utilities/style/display';
|
|
4
|
+
export const styles = css `
|
|
5
|
+
@layer base, hover, focusVisible, active, disabled, top;
|
|
6
|
+
|
|
7
|
+
@layer base {
|
|
8
|
+
${display('inline-flex')}
|
|
9
|
+
|
|
10
|
+
:host {
|
|
11
|
+
align-items: center;
|
|
12
|
+
margin-left: 4px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.context-help-trigger {
|
|
16
|
+
display: inline-flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
width: ${iconSize};
|
|
20
|
+
height: ${iconSize};
|
|
21
|
+
padding: 0;
|
|
22
|
+
border: 0;
|
|
23
|
+
border-radius: 2px;
|
|
24
|
+
background: transparent;
|
|
25
|
+
color: ${linkFontColor};
|
|
26
|
+
cursor: help;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.context-help-trigger > * {
|
|
30
|
+
width: ${iconSize};
|
|
31
|
+
height: ${iconSize};
|
|
32
|
+
${iconColor.cssCustomProperty}: currentColor;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
nimble-tooltip:not(:defined) {
|
|
36
|
+
display: none;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@layer hover {}
|
|
41
|
+
|
|
42
|
+
@layer focusVisible {
|
|
43
|
+
.context-help-trigger:focus-visible {
|
|
44
|
+
outline: 2px solid ${borderHoverColor};
|
|
45
|
+
outline-offset: -2px;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@layer active {}
|
|
50
|
+
|
|
51
|
+
@layer disabled {}
|
|
52
|
+
|
|
53
|
+
@layer top {}
|
|
54
|
+
`;
|
|
55
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/context-help/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,aAAa,EAChB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,aAAa,CAAC;;;;;;;;;;;qBAWX,QAAQ;sBACP,QAAQ;;;;;qBAKT,aAAa;;;;;qBAKb,QAAQ;sBACP,QAAQ;cAChB,SAAS,CAAC,iBAAiB;;;;;;;;;;;;iCAYR,gBAAgB;;;;;;;;;;CAUhD,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n borderHoverColor,\n iconColor,\n iconSize,\n linkFontColor\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('inline-flex')}\n\n :host {\n align-items: center;\n margin-left: 4px;\n }\n\n .context-help-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${iconSize};\n height: ${iconSize};\n padding: 0;\n border: 0;\n border-radius: 2px;\n background: transparent;\n color: ${linkFontColor};\n cursor: help;\n }\n\n .context-help-trigger > * {\n width: ${iconSize};\n height: ${iconSize};\n ${iconColor.cssCustomProperty}: currentColor;\n }\n\n nimble-tooltip:not(:defined) {\n display: none;\n }\n }\n\n @layer hover {}\n\n @layer focusVisible {\n .context-help-trigger:focus-visible {\n outline: 2px solid ${borderHoverColor};\n outline-offset: -2px;\n }\n }\n\n @layer active {}\n\n @layer disabled {}\n\n @layer top {}\n`;"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { html, when } from '@ni/fast-element';
|
|
2
|
+
import { iconInfoCircleTag } from '@ni/nimble-components/dist/esm/icons/info-circle';
|
|
3
|
+
import { tooltipTag } from '@ni/nimble-components/dist/esm/tooltip';
|
|
4
|
+
export const template = html `
|
|
5
|
+
<button
|
|
6
|
+
id="${x => x.tooltipAnchorId}"
|
|
7
|
+
class="context-help-trigger"
|
|
8
|
+
type="button"
|
|
9
|
+
aria-label="${x => x.triggerLabel}"
|
|
10
|
+
>
|
|
11
|
+
<${iconInfoCircleTag}></${iconInfoCircleTag}>
|
|
12
|
+
</button>
|
|
13
|
+
<${tooltipTag}
|
|
14
|
+
anchor="${x => x.tooltipAnchorId}"
|
|
15
|
+
severity="${x => x.severity}"
|
|
16
|
+
?icon-visible="${x => x.iconVisible}"
|
|
17
|
+
>
|
|
18
|
+
${when(x => x.text.length > 0, html `
|
|
19
|
+
<span>${x => x.text}</span>
|
|
20
|
+
`)}
|
|
21
|
+
<slot></slot>
|
|
22
|
+
</${tooltipTag}>
|
|
23
|
+
`;
|
|
24
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/context-help/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAGpE,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAe;;cAE7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;;sBAGd,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;;WAE9B,iBAAiB,MAAM,iBAAiB;;OAE5C,UAAU;kBACC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;oBACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;yBACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;;UAEjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAe;oBACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;SACtB,CAAC;;QAEF,UAAU;CACjB,CAAC","sourcesContent":["import { html, when } from '@ni/fast-element';\nimport { iconInfoCircleTag } from '@ni/nimble-components/dist/esm/icons/info-circle';\nimport { tooltipTag } from '@ni/nimble-components/dist/esm/tooltip';\nimport type { FvContextHelp } from '.';\n\nexport const template = html<FvContextHelp>`\n <button\n id=\"${x => x.tooltipAnchorId}\"\n class=\"context-help-trigger\"\n type=\"button\"\n aria-label=\"${x => x.triggerLabel}\"\n >\n <${iconInfoCircleTag}></${iconInfoCircleTag}>\n </button>\n <${tooltipTag}\n anchor=\"${x => x.tooltipAnchorId}\"\n severity=\"${x => x.severity}\"\n ?icon-visible=\"${x => x.iconVisible}\"\n >\n ${when(x => x.text.length > 0, html<FvContextHelp>`\n <span>${x => x.text}</span>\n `)}\n <slot></slot>\n </${tooltipTag}>\n`;"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type FvContextHelpSeverity = 'error' | 'information' | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/fv/context-help/types.ts"],"names":[],"mappings":"","sourcesContent":["export type FvContextHelpSeverity = 'error' | 'information' | undefined;"]}
|
|
@@ -10,8 +10,10 @@ declare global {
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class FvSearchInput extends FoundationTextField {
|
|
12
12
|
appearance: FvSearchInputAppearanceType;
|
|
13
|
+
/** @internal */
|
|
13
14
|
handleChange(): void;
|
|
14
15
|
/**
|
|
16
|
+
* @internal
|
|
15
17
|
* Clears the current value, restores focus to the text input, and
|
|
16
18
|
* dispatches a synthetic `input` event on the host so consumers
|
|
17
19
|
* observe the same immediate value-update contract as typing.
|
|
@@ -12,11 +12,13 @@ export class FvSearchInput extends FoundationTextField {
|
|
|
12
12
|
super(...arguments);
|
|
13
13
|
this.appearance = FvSearchInputAppearance.outline;
|
|
14
14
|
}
|
|
15
|
+
/** @internal */
|
|
15
16
|
handleChange() {
|
|
16
17
|
this.value = this.control.value;
|
|
17
18
|
super.handleChange();
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
21
|
+
* @internal
|
|
20
22
|
* Clears the current value, restores focus to the text input, and
|
|
21
23
|
* dispatches a synthetic `input` event on the host so consumers
|
|
22
24
|
* observe the same immediate value-update contract as typing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/search-input/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACH,YAAY,EACZ,SAAS,IAAI,mBAAmB,EAEnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACH,uBAAuB,EAE1B,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,mBAAmB;IAAtD;;QAEW,eAAU,GAAgC,uBAAuB,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/search-input/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACH,YAAY,EACZ,SAAS,IAAI,mBAAmB,EAEnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACH,uBAAuB,EAE1B,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,mBAAmB;IAAtD;;QAEW,eAAU,GAAgC,uBAAuB,CAAC,OAAO,CAAC;IA0BrF,CAAC;IAxBG,gBAAgB;IACA,YAAY;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAChC,KAAK,CAAC,YAAY,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK;QACR,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA1BU;IADN,IAAI;iDAC4E;AA4BrF,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAmB;IAC5D,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ;IACR,MAAM;IACN,aAAa,EAAE;QACX,cAAc,EAAE,IAAI;KACvB;CACJ,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC","sourcesContent":["import { attr } from '@ni/fast-element';\nimport {\n DesignSystem,\n TextField as FoundationTextField,\n type TextFieldOptions\n} from '@ni/fast-foundation';\nimport { styles } from './styles';\nimport { template } from './template';\nimport {\n FvSearchInputAppearance,\n type FvSearchInputAppearance as FvSearchInputAppearanceType\n} from './types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-search-input': FvSearchInput;\n }\n}\n\n/**\n * A compact search input with a built-in clear affordance.\n */\nexport class FvSearchInput extends FoundationTextField {\n @attr\n public appearance: FvSearchInputAppearanceType = FvSearchInputAppearance.outline;\n\n /** @internal */\n public override handleChange(): void {\n this.value = this.control.value;\n super.handleChange();\n }\n\n /**\n * @internal\n * Clears the current value, restores focus to the text input, and\n * dispatches a synthetic `input` event on the host so consumers\n * observe the same immediate value-update contract as typing.\n * The inner <input> value is updated on the next FAST render cycle\n * via the `:value` template binding.\n */\n public clear(): boolean {\n if (this.value === '') {\n return true;\n }\n\n this.value = '';\n this.control.focus();\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n return true;\n }\n}\n\nconst okFvSearchInput = FvSearchInput.compose<TextFieldOptions>({\n baseName: 'fv-search-input',\n baseClass: FoundationTextField,\n template,\n styles,\n shadowOptions: {\n delegatesFocus: true\n }\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvSearchInput());\nexport const fvSearchInputTag = 'ok-fv-search-input';"]}
|
|
@@ -8,12 +8,12 @@ export const styles = css `
|
|
|
8
8
|
${display('inline-block')}
|
|
9
9
|
|
|
10
10
|
:host {
|
|
11
|
-
--ni-private-fv-search-input-inline-padding: ${standardPadding};
|
|
12
|
-
--ni-private-fv-search-input-leading-inset: ${mediumPadding};
|
|
13
|
-
--ni-private-fv-search-input-leading-space: calc(var(--ni-private-fv-search-input-leading-inset) + ${iconSize} + ${smallPadding});
|
|
14
|
-
--ni-private-fv-search-input-trailing-space: calc(var(--ni-private-fv-search-input-inline-padding) + ${iconSize});
|
|
15
|
-
--ni-private-fv-search-input-border-color: rgba(${borderRgbPartialColor}, 0.3);
|
|
16
|
-
--ni-private-fv-search-input-border-radius: 0px;
|
|
11
|
+
--ni-private-ok-fv-search-input-inline-padding: ${standardPadding};
|
|
12
|
+
--ni-private-ok-fv-search-input-leading-inset: ${mediumPadding};
|
|
13
|
+
--ni-private-ok-fv-search-input-leading-space: calc(var(--ni-private-ok-fv-search-input-leading-inset) + ${iconSize} + ${smallPadding});
|
|
14
|
+
--ni-private-ok-fv-search-input-trailing-space: calc(var(--ni-private-ok-fv-search-input-inline-padding) + ${iconSize});
|
|
15
|
+
--ni-private-ok-fv-search-input-border-color: rgba(${borderRgbPartialColor}, 0.3);
|
|
16
|
+
--ni-private-ok-fv-search-input-border-radius: 0px;
|
|
17
17
|
min-width: 120px;
|
|
18
18
|
height: ${controlHeight};
|
|
19
19
|
font: ${bodyFont};
|
|
@@ -27,7 +27,7 @@ export const styles = css `
|
|
|
27
27
|
width: 100%;
|
|
28
28
|
height: 100%;
|
|
29
29
|
border: ${borderWidth} solid transparent;
|
|
30
|
-
border-radius: var(--ni-private-fv-search-input-border-radius);
|
|
30
|
+
border-radius: var(--ni-private-ok-fv-search-input-border-radius);
|
|
31
31
|
color: inherit;
|
|
32
32
|
background-color: transparent;
|
|
33
33
|
transition:
|
|
@@ -56,7 +56,7 @@ export const styles = css `
|
|
|
56
56
|
align-items: center;
|
|
57
57
|
justify-content: center;
|
|
58
58
|
top: 50%;
|
|
59
|
-
inset-inline-start: var(--ni-private-fv-search-input-leading-inset);
|
|
59
|
+
inset-inline-start: var(--ni-private-ok-fv-search-input-leading-inset);
|
|
60
60
|
transform: translateY(-50%);
|
|
61
61
|
color: ${placeholderFontColor};
|
|
62
62
|
pointer-events: none;
|
|
@@ -71,7 +71,7 @@ export const styles = css `
|
|
|
71
71
|
min-width: 0;
|
|
72
72
|
width: 100%;
|
|
73
73
|
height: 100%;
|
|
74
|
-
padding: 0 var(--ni-private-fv-search-input-trailing-space) 0 var(--ni-private-fv-search-input-leading-space);
|
|
74
|
+
padding: 0 var(--ni-private-ok-fv-search-input-trailing-space) 0 var(--ni-private-ok-fv-search-input-leading-space);
|
|
75
75
|
font: inherit;
|
|
76
76
|
line-height: normal;
|
|
77
77
|
color: inherit;
|
|
@@ -93,21 +93,21 @@ export const styles = css `
|
|
|
93
93
|
align-items: center;
|
|
94
94
|
justify-content: center;
|
|
95
95
|
top: 50%;
|
|
96
|
-
inset-inline-end:
|
|
96
|
+
inset-inline-end: 3px;
|
|
97
97
|
height: calc(100% - 6px);
|
|
98
98
|
aspect-ratio: 1;
|
|
99
99
|
padding: 0;
|
|
100
100
|
transform: translateY(-50%);
|
|
101
|
-
color:
|
|
101
|
+
color: inherit;
|
|
102
102
|
border: none;
|
|
103
103
|
border-radius: 2px;
|
|
104
104
|
background: transparent;
|
|
105
105
|
cursor: pointer;
|
|
106
|
-
${iconColor.cssCustomProperty}:
|
|
106
|
+
${iconColor.cssCustomProperty}: currentColor;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
:host([appearance='outline']) .search-input-container {
|
|
110
|
-
border-color: var(--ni-private-fv-search-input-border-color);
|
|
110
|
+
border-color: var(--ni-private-ok-fv-search-input-border-color);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
:host([appearance='block']) .search-input-container {
|
|
@@ -116,7 +116,7 @@ export const styles = css `
|
|
|
116
116
|
|
|
117
117
|
:host([appearance='underline']) .search-input-container::after {
|
|
118
118
|
transform: scaleX(1);
|
|
119
|
-
border-bottom-color: var(--ni-private-fv-search-input-border-color);
|
|
119
|
+
border-bottom-color: var(--ni-private-ok-fv-search-input-border-color);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/search-input/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,eAAe,EAClB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,cAAc,CAAC;;;
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/search-input/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,eAAe,EAClB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,cAAc,CAAC;;;8DAG6B,eAAe;6DAChB,aAAa;uHAC6C,QAAQ,MAAM,YAAY;yHACxB,QAAQ;iEAChE,qBAAqB;;;sBAGhE,aAAa;oBACf,QAAQ;qBACP,aAAa;;;;;;;;;sBASZ,WAAW;;;;;+BAKF,UAAU;6BACZ,UAAU;mCACJ,UAAU;;;;;;;yCAOJ,WAAW;kCAClB,WAAW,iBAAiB,gBAAgB;;;;4BAIlD,UAAU;sCACA,UAAU;;;;;;;;;;;;qBAY3B,oBAAoB;;cAE3B,SAAS,CAAC,iBAAiB,KAAK,oBAAoB;;;;;;;;;;;;;;;;;;;;;;qBAsB7C,oBAAoB;;;;;;;;;;;;;;;;;;;;;cAqB3B,SAAS,CAAC,iBAAiB;;;;;;;;qCAQJ,qBAAqB;;;;;;;;;;;0BAWhC,cAAc;;;;4BAIZ,gBAAgB;gCACZ,WAAW,IAAI,gBAAgB;;;;;mCAK5B,gBAAgB;;;;mCAIhB,gBAAgB;;;;;mCAKhB,gBAAgB;;;;;;;;;;uBAU5B,WAAW,UAAU,gBAAgB;;;;;4BAKhC,gBAAgB;gCACZ,WAAW,IAAI,gBAAgB;;;;;mCAK5B,gBAAgB;;;;mCAIhB,gBAAgB;;;;;mCAKhB,gBAAgB;;;CAGlD,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n bodyFont,\n bodyFontColor,\n borderHoverColor,\n borderRgbPartialColor,\n borderWidth,\n controlHeight,\n fillHoverColor,\n iconColor,\n iconSize,\n mediumPadding,\n placeholderFontColor,\n smallPadding,\n smallDelay,\n standardPadding\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('inline-block')}\n\n :host {\n --ni-private-ok-fv-search-input-inline-padding: ${standardPadding};\n --ni-private-ok-fv-search-input-leading-inset: ${mediumPadding};\n --ni-private-ok-fv-search-input-leading-space: calc(var(--ni-private-ok-fv-search-input-leading-inset) + ${iconSize} + ${smallPadding});\n --ni-private-ok-fv-search-input-trailing-space: calc(var(--ni-private-ok-fv-search-input-inline-padding) + ${iconSize});\n --ni-private-ok-fv-search-input-border-color: rgba(${borderRgbPartialColor}, 0.3);\n --ni-private-ok-fv-search-input-border-radius: 0px;\n min-width: 120px;\n height: ${controlHeight};\n font: ${bodyFont};\n color: ${bodyFontColor};\n }\n\n .search-input-container {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n border: ${borderWidth} solid transparent;\n border-radius: var(--ni-private-ok-fv-search-input-border-radius);\n color: inherit;\n background-color: transparent;\n transition:\n border-color ${smallDelay} ease-in-out,\n box-shadow ${smallDelay} ease-in-out,\n background-color ${smallDelay} ease-in-out;\n }\n\n .search-input-container::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n inset-block-end: calc(-1 * ${borderWidth});\n border-bottom: calc(${borderWidth} + 1px) solid ${borderHoverColor};\n transform: scaleX(0);\n transform-origin: center;\n transition:\n transform ${smallDelay} ease-in-out,\n border-bottom-color ${smallDelay} ease-in-out;\n pointer-events: none;\n }\n\n .search-input-icon {\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n inset-inline-start: var(--ni-private-ok-fv-search-input-leading-inset);\n transform: translateY(-50%);\n color: ${placeholderFontColor};\n pointer-events: none;\n ${iconColor.cssCustomProperty}: ${placeholderFontColor};\n }\n\n .search-input {\n -webkit-appearance: none;\n appearance: none;\n display: block;\n flex: 1 1 auto;\n min-width: 0;\n width: 100%;\n height: 100%;\n padding: 0 var(--ni-private-ok-fv-search-input-trailing-space) 0 var(--ni-private-ok-fv-search-input-leading-space);\n font: inherit;\n line-height: normal;\n color: inherit;\n border: none;\n outline: none;\n border-radius: 0;\n background: transparent;\n }\n\n .search-input::placeholder {\n color: ${placeholderFontColor};\n }\n\n .search-input-clear {\n -webkit-appearance: none;\n appearance: none;\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n inset-inline-end: 3px;\n height: calc(100% - 6px);\n aspect-ratio: 1;\n padding: 0;\n transform: translateY(-50%);\n color: inherit;\n border: none;\n border-radius: 2px;\n background: transparent;\n cursor: pointer;\n ${iconColor.cssCustomProperty}: currentColor;\n }\n\n :host([appearance='outline']) .search-input-container {\n border-color: var(--ni-private-ok-fv-search-input-border-color);\n }\n\n :host([appearance='block']) .search-input-container {\n background-color: rgba(${borderRgbPartialColor}, 0.1);\n }\n\n :host([appearance='underline']) .search-input-container::after {\n transform: scaleX(1);\n border-bottom-color: var(--ni-private-ok-fv-search-input-border-color);\n }\n }\n\n @layer hover {\n .search-input-clear:hover {\n background: ${fillHoverColor};\n }\n\n :host([appearance='outline']) .search-input-container:hover {\n border-color: ${borderHoverColor};\n box-shadow: 0 0 0 ${borderWidth} ${borderHoverColor} inset;\n }\n\n :host([appearance='block']) .search-input-container:hover::after {\n transform: scaleX(1);\n border-bottom-color: ${borderHoverColor};\n }\n\n :host([appearance='underline']) .search-input-container:hover::after {\n border-bottom-color: ${borderHoverColor};\n }\n\n :host([appearance='frameless']) .search-input-container:hover::after {\n transform: scaleX(1);\n border-bottom-color: ${borderHoverColor};\n }\n }\n\n @layer focusVisible {\n .search-input:focus-visible {\n outline: none;\n }\n\n .search-input-clear:focus-visible {\n outline: ${borderWidth} solid ${borderHoverColor};\n outline-offset: -1px;\n }\n\n :host([appearance='outline']) .search-input-container:focus-within {\n border-color: ${borderHoverColor};\n box-shadow: 0 0 0 ${borderWidth} ${borderHoverColor} inset;\n }\n\n :host([appearance='block']) .search-input-container:focus-within::after {\n transform: scaleX(1);\n border-bottom-color: ${borderHoverColor};\n }\n\n :host([appearance='underline']) .search-input-container:focus-within::after {\n border-bottom-color: ${borderHoverColor};\n }\n\n :host([appearance='frameless']) .search-input-container:focus-within::after {\n transform: scaleX(1);\n border-bottom-color: ${borderHoverColor};\n }\n }\n`;"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { FoundationElement } from '@ni/fast-foundation';
|
|
2
|
+
import type { AnchoredRegion } from '@ni/nimble-components/dist/esm/anchored-region';
|
|
3
|
+
import { type FvSplitButtonAppearance as FvSplitButtonAppearanceType, type FvSplitButtonAppearanceVariant as FvSplitButtonAppearanceVariantType } from './types';
|
|
4
|
+
declare global {
|
|
5
|
+
interface HTMLElementTagNameMap {
|
|
6
|
+
'ok-fv-split-button': FvSplitButton;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A button with a primary action and a secondary expandable menu surface.
|
|
11
|
+
*/
|
|
12
|
+
export declare class FvSplitButton extends FoundationElement {
|
|
13
|
+
label: string;
|
|
14
|
+
disabled: boolean;
|
|
15
|
+
open: boolean;
|
|
16
|
+
appearance: FvSplitButtonAppearanceType;
|
|
17
|
+
appearanceVariant: FvSplitButtonAppearanceVariantType;
|
|
18
|
+
/** @internal */
|
|
19
|
+
splitButtonContainer?: HTMLDivElement;
|
|
20
|
+
/** @internal */
|
|
21
|
+
region?: AnchoredRegion;
|
|
22
|
+
/** @internal */
|
|
23
|
+
disabledChanged(): void;
|
|
24
|
+
/** @internal */
|
|
25
|
+
connectedCallback(): void;
|
|
26
|
+
/** @internal */
|
|
27
|
+
disconnectedCallback(): void;
|
|
28
|
+
/** @internal */
|
|
29
|
+
handlePrimaryClick(): void;
|
|
30
|
+
/** @internal */
|
|
31
|
+
handleToggleClick(): void;
|
|
32
|
+
/** @internal */
|
|
33
|
+
handleMenuChange(): void;
|
|
34
|
+
/** @internal */
|
|
35
|
+
regionChanged(prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void;
|
|
36
|
+
/** @internal */
|
|
37
|
+
splitButtonContainerChanged(): void;
|
|
38
|
+
private readonly documentClickHandler;
|
|
39
|
+
private readonly keydownHandler;
|
|
40
|
+
private readonly menuChangeHandler;
|
|
41
|
+
private setOpen;
|
|
42
|
+
}
|
|
43
|
+
export declare const fvSplitButtonTag = "ok-fv-split-button";
|