{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/select/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RenderResult } from '@dojo/framework/core/interfaces';\nimport { focus } from '@dojo/framework/core/middleware/focus';\nimport { i18n } from '@dojo/framework/core/middleware/i18n';\nimport { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';\nimport { createResourceMiddleware } from '@dojo/framework/core/middleware/resources';\nimport { uuid } from '@dojo/framework/core/util';\nimport { create, tsx } from '@dojo/framework/core/vdom';\nimport { Keys } from '../common/util';\nimport HelperText from '../helper-text';\nimport Icon from '../icon';\nimport Label from '../label';\nimport {\n\tItemRendererProperties,\n\tList,\n\tListOption,\n\tListItemProperties,\n\tMenuItemProperties\n} from '../list';\nimport theme from '../middleware/theme';\nimport { PopupPosition } from '../popup';\nimport TriggerPopup from '../trigger-popup';\nimport * as listCss from '../theme/default/list.m.css';\nimport * as labelCss from '../theme/default/label.m.css';\nimport * as iconCss from '../theme/default/icon.m.css';\nimport * as css from '../theme/default/select.m.css';\nimport bundle from './nls/Select';\nimport LoadingIndicator from '../loading-indicator';\nimport { find } from '@dojo/framework/shim/array';\n\nexport interface SelectProperties {\n\t/** Callback called when user selects a value */\n\tonValue(value: ListOption): void;\n\t/** The initial selected value */\n\tinitialValue?: string;\n\t/** Controlled value property */\n\tvalue?: string;\n\t/** Property to determine how many items to render. Defaults to 6 */\n\titemsInView?: number;\n\t/** placement of the select menu; 'above' or 'below' */\n\tposition?: PopupPosition;\n\t/** Placeholder value to show when nothing has been selected */\n\tplaceholder?: string;\n\t/** Property to determine if the input is disabled */\n\tdisabled?: boolean;\n\t/** Sets the helper text of the input */\n\thelperText?: string;\n\t/** Boolean to indicate if field is required */\n\trequired?: boolean;\n\t/** Callabck when valid state has changed */\n\tonValidate?(valid: boolean): void;\n\t/** The name property of the input */\n\tname?: string;\n}\n\nexport interface SelectChildren {\n\t/** Custom renderer for item contents */\n\titems?(\n\t\titem: ItemRendererProperties,\n\t\tprops: ListItemProperties & MenuItemProperties\n\t): RenderResult;\n\t/** The label to show */\n\tlabel?: RenderResult;\n}\n\ninterface SelectICache {\n\tdirty: boolean;\n\texpanded: boolean;\n\tfocusNode: string;\n\tinitial: string;\n\tmenuId: string;\n\ttriggerId: string;\n\tvalid: boolean;\n\tvalue: string;\n}\n\nconst icache = createICacheMiddleware<SelectICache>();\n\nconst factory = create({\n\ticache,\n\tfocus,\n\ttheme,\n\ti18n,\n\tresource: createResourceMiddleware<ListOption>()\n})\n\t.properties<SelectProperties>()\n\t.children<SelectChildren | undefined>();\n\nexport const Select = factory(function Select({\n\tchildren,\n\tproperties,\n\tmiddleware: { icache, focus, theme, i18n, resource }\n}) {\n\tconst {\n\t\tclasses,\n\t\tvariant,\n\t\ttheme: themeProp,\n\t\tdisabled,\n\t\thelperText,\n\t\tinitialValue,\n\t\titemsInView = 6,\n\t\tonValidate,\n\t\tonValue,\n\t\tplaceholder = '',\n\t\tposition,\n\t\trequired,\n\t\tname,\n\t\tresource: {\n\t\t\ttemplate,\n\t\t\toptions = resource.createOptions((curr, next) => ({ ...curr, ...next }))\n\t\t}\n\t} = properties();\n\tconst {\n\t\tget,\n\t\ttemplate: { read }\n\t} = resource.template(template);\n\n\tconst [{ items, label } = { items: undefined, label: undefined }] = children();\n\tlet { value } = properties();\n\n\tif (value === undefined) {\n\t\tif (initialValue !== undefined && initialValue !== icache.get('initial')) {\n\t\t\ticache.set('initial', initialValue);\n\t\t\ticache.set('value', initialValue);\n\t\t}\n\t\tvalue = icache.get('value');\n\t}\n\n\tconst menuId = icache.getOrSet('menuId', uuid());\n\tconst triggerId = icache.getOrSet('triggerId', uuid());\n\tconst focusNode = icache.getOrSet('focusNode', 'trigger');\n\tconst shouldFocus = focus.shouldFocus();\n\tconst themedCss = theme.classes(css);\n\tlet valid = icache.get('valid');\n\tconst dirty = icache.get('dirty');\n\tconst { messages } = i18n.localize(bundle);\n\tconst expanded = icache.get('expanded');\n\tconst {\n\t\tmeta: { total, status },\n\t\tdata\n\t} = get(options(), { read, meta: true });\n\n\tif (required && (dirty || value !== undefined)) {\n\t\tconst isValid = value !== undefined;\n\t\tif (isValid !== valid) {\n\t\t\ticache.set('valid', isValid);\n\t\t\tvalid = isValid;\n\t\t\tonValidate && onValidate(isValid);\n\t\t}\n\t}\n\n\tlet valueOption: ListOption | undefined;\n\tif (value && data) {\n\t\tlet found = find(data, (item) => {\n\t\t\treturn Boolean(item.value && item.value.value === value);\n\t\t});\n\t\tif (found) {\n\t\t\tvalueOption = found.value;\n\t\t} else {\n\t\t\tconst items = get(options({ query: { value } }), { read });\n\t\t\tif (items && items.length > 0 && items[0].value === value) {\n\t\t\t\tvalueOption = items[0];\n\t\t\t}\n\t\t}\n\t}\n\tvalue = valueOption ? valueOption.value : undefined;\n\n\treturn (\n\t\t<div\n\t\t\tclasses={[\n\t\t\t\ttheme.variant(),\n\t\t\t\tthemedCss.root,\n\t\t\t\tdisabled && themedCss.disabled,\n\t\t\t\tvalid === true && themedCss.valid,\n\t\t\t\tvalid === false && themedCss.invalid,\n\t\t\t\tshouldFocus === true && themedCss.focused,\n\t\t\t\texpanded && themedCss.expanded\n\t\t\t]}\n\t\t\tkey=\"root\"\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<Label\n\t\t\t\t\ttheme={theme.compose(\n\t\t\t\t\t\tlabelCss,\n\t\t\t\t\t\tcss,\n\t\t\t\t\t\t'label'\n\t\t\t\t\t)}\n\t\t\t\t\tclasses={classes}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tforId={triggerId}\n\t\t\t\t\tvalid={valid}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tactive={!!(value || icache.get('expanded'))}\n\t\t\t\t\tfocused={shouldFocus}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\t\t\t<TriggerPopup\n\t\t\t\tkey=\"popup\"\n\t\t\t\tonOpen={() => {\n\t\t\t\t\ticache.set('expanded', true);\n\t\t\t\t}}\n\t\t\t\tonClose={() => {\n\t\t\t\t\ticache.set('expanded', false);\n\t\t\t\t\tif (!dirty) {\n\t\t\t\t\t\ticache.set('dirty', true);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tposition={position}\n\t\t\t\ttheme={themeProp}\n\t\t\t\tclasses={classes}\n\t\t\t\tvariant={variant}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\ttrigger: (toggleOpen) => {\n\t\t\t\t\t\tfunction openMenu() {\n\t\t\t\t\t\t\tif (!disabled) {\n\t\t\t\t\t\t\t\ticache.set('focusNode', 'menu');\n\t\t\t\t\t\t\t\tfocus.focus();\n\t\t\t\t\t\t\t\ttoggleOpen();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\tfocus={() => focusNode === 'trigger' && shouldFocus}\n\t\t\t\t\t\t\t\taria-controls={menuId}\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-expanded={\n\t\t\t\t\t\t\t\t\ticache.getOrSet('expanded', false) ? 'true' : 'false'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tkey=\"trigger\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tid={triggerId}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tclasses={themedCss.trigger}\n\t\t\t\t\t\t\t\tonclick={openMenu}\n\t\t\t\t\t\t\t\tonkeydown={(event) => {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tevent.which === Keys.Down ||\n\t\t\t\t\t\t\t\t\t\tevent.which === Keys.Space ||\n\t\t\t\t\t\t\t\t\t\tevent.which === Keys.Enter\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclasses={[themedCss.value, expanded && themedCss.valueExpanded]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{(valueOption && valueOption.label) || (\n\t\t\t\t\t\t\t\t\t\t<span classes={themedCss.placeholder}>{placeholder}</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span classes={themedCss.arrow}>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ttype=\"downIcon\"\n\t\t\t\t\t\t\t\t\t\ttheme={theme.compose(\n\t\t\t\t\t\t\t\t\t\t\ticonCss,\n\t\t\t\t\t\t\t\t\t\t\tcss,\n\t\t\t\t\t\t\t\t\t\t\t'icon'\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\tclasses={classes}\n\t\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tcontent: (close) => {\n\t\t\t\t\t\tfunction closeMenu() {\n\t\t\t\t\t\t\ticache.set('focusNode', 'trigger');\n\t\t\t\t\t\t\tclose();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn total === undefined && status === 'reading' ? (\n\t\t\t\t\t\t\t<LoadingIndicator\n\t\t\t\t\t\t\t\tkey=\"loading\"\n\t\t\t\t\t\t\t\ttheme={themeProp}\n\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\tclasses={classes}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div key=\"menu-wrapper\" classes={themedCss.menuWrapper}>\n\t\t\t\t\t\t\t\t<List\n\t\t\t\t\t\t\t\t\tkey=\"menu\"\n\t\t\t\t\t\t\t\t\theight=\"auto\"\n\t\t\t\t\t\t\t\t\tfocus={() => focusNode === 'menu' && shouldFocus}\n\t\t\t\t\t\t\t\t\tresource={resource({ template, options })}\n\t\t\t\t\t\t\t\t\tonValue={(value) => {\n\t\t\t\t\t\t\t\t\t\tfocus.focus();\n\t\t\t\t\t\t\t\t\t\tcloseMenu();\n\t\t\t\t\t\t\t\t\t\tvalue.value !== icache.get('value') &&\n\t\t\t\t\t\t\t\t\t\t\ticache.set('value', value.value);\n\t\t\t\t\t\t\t\t\t\tonValue(value);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonRequestClose={closeMenu}\n\t\t\t\t\t\t\t\t\tonBlur={closeMenu}\n\t\t\t\t\t\t\t\t\tinitialValue={value}\n\t\t\t\t\t\t\t\t\titemsInView={itemsInView}\n\t\t\t\t\t\t\t\t\ttheme={theme.compose(\n\t\t\t\t\t\t\t\t\t\tlistCss,\n\t\t\t\t\t\t\t\t\t\tcss,\n\t\t\t\t\t\t\t\t\t\t'menu'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tclasses={classes}\n\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\twidgetId={menuId}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{items}\n\t\t\t\t\t\t\t\t</List>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t</TriggerPopup>\n\t\t\t<HelperText\n\t\t\t\tkey=\"helperText\"\n\t\t\t\ttext={valid === false ? messages.requiredMessage : helperText}\n\t\t\t\tvalid={valid}\n\t\t\t\tclasses={classes}\n\t\t\t\tvariant={variant}\n\t\t\t\ttheme={themeProp}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nexport default Select;\n"]}