haya-select 1.0.67 → 1.0.69

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.
@@ -505,6 +505,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
505
505
  const newState = {};
506
506
  const existingOption = currentOptions.find((currentOption) => currentOption.value == loadedOption.value);
507
507
  const newToggled = { ...toggled };
508
+ let newCurrentOptions;
508
509
  if (existingOption) {
509
510
  if (toggleOptions) {
510
511
  const currentToggle = toggled[loadedOption.value];
@@ -512,7 +513,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
512
513
  if (currentIndex >= (toggleOptions.length - 1)) {
513
514
  // No next toggled - remove toggled and option
514
515
  delete newToggled[loadedOption.value];
515
- newState.currentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value);
516
+ newCurrentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value);
516
517
  }
517
518
  else {
518
519
  // Already toggled - set to next toggle
@@ -522,7 +523,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
522
523
  }
523
524
  else {
524
525
  // Remove from current options
525
- newState.currentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value);
526
+ newCurrentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value);
526
527
  }
527
528
  }
528
529
  else {
@@ -535,13 +536,19 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
535
536
  newState.toggled = newToggled;
536
537
  }
537
538
  if (multiple || toggleOptions) {
538
- newState.currentOptions = currentOptions.concat([loadedOption]);
539
+ newCurrentOptions = currentOptions.concat([loadedOption]);
539
540
  }
540
541
  else {
541
- newState.currentOptions = [loadedOption];
542
+ newCurrentOptions = [loadedOption];
542
543
  }
543
544
  }
544
- const options = newState.currentOptions || currentOptions;
545
+ if ("values" in this.props && this.props.values !== undefined) {
546
+ // currentOptions are controlled and a useMemo callback is handeling setting current options.
547
+ }
548
+ else if (newCurrentOptions) {
549
+ newState.currentOptions = newCurrentOptions;
550
+ }
551
+ const options = newCurrentOptions || currentOptions;
545
552
  if (onChange) {
546
553
  onChange({
547
554
  event,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/select/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import {anythingDifferent} from \"set-state-compare/src/diff-utils\"\nimport {dig, digg} from \"diggerize\"\nimport {Platform, Pressable, Text, TextInput, View} from \"react-native\"\nimport React, {memo, useEffect, useRef} from \"react\"\nimport {shapeComponent, ShapeComponent} from \"set-state-compare/src/shape-component.js\"\nimport debounce from \"debounce\"\nimport FontAwesomeIcon from \"react-native-vector-icons/FontAwesome\"\nimport idForComponent from \"@kaspernj/api-maker/build/inputs/id-for-component\"\nimport nameForComponent from \"@kaspernj/api-maker/build/inputs/name-for-component\"\nimport Option from \"./option\"\nimport OptionGroup from \"./option-group\"\nimport PropTypes from \"prop-types\"\nimport propTypesExact from \"prop-types-exact\"\nimport RenderHtml from \"react-native-render-html\"\nimport {Portal} from \"conjointment\"\nimport useEventListener from \"@kaspernj/api-maker/build/use-event-listener\"\nimport useI18n from \"i18n-on-steroids/src/use-i18n.mjs\"\n\nconst nameForComponentWithMultiple = (component) => {\n let name = nameForComponent(component)\n\n const currentOptions = component.getCurrentOptions()\n\n if (component.props.multiple && name && currentOptions.length > 0) {\n name += \"[]\"\n }\n\n return name\n}\n\nexport default memo(shapeComponent(class HayaSelect extends ShapeComponent {\n static defaultProps = {\n multiple: false,\n onBlur: null,\n onFocus: null,\n optionsAbsolute: true,\n optionsWidth: null,\n search: false,\n transparent: false\n }\n\n static propTypes = propTypesExact({\n attribute: PropTypes.string,\n className: PropTypes.string,\n defaultToggled: PropTypes.object,\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n defaultValues: PropTypes.array,\n defaultValuesFromOptions: PropTypes.array,\n id: PropTypes.node,\n model: PropTypes.object,\n multiple: PropTypes.bool.isRequired,\n name: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onChangeValue: PropTypes.func,\n onFocus: PropTypes.func,\n onOptionsClosed: PropTypes.func,\n options: PropTypes.oneOfType([PropTypes.array, PropTypes.func]).isRequired,\n optionsAbsolute: PropTypes.bool.isRequired,\n optionsWidth: PropTypes.number,\n placeholder: PropTypes.node,\n search: PropTypes.bool.isRequired,\n styles: PropTypes.object,\n toggled: PropTypes.object,\n toggleOptions: PropTypes.arrayOf(PropTypes.shape({\n icon: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n })),\n transparent: PropTypes.bool.isRequired,\n values: PropTypes.array\n })\n\n callOptionsPositionAboveIfOutsideScreen = false\n\n setup() {\n const {t} = useI18n({namespace: \"haya_select\"})\n\n if (this.props.values) {\n for (const value of this.props.values) {\n if (typeof value == \"undefined\") {\n throw new Error(\"HayaSelect: Undefined given as value\")\n }\n }\n }\n\n this.setInstance({\n endOfSelectRef: useRef(),\n optionsContainerRef: useRef(),\n searchTextInputRef: useRef(),\n selectContainerRef: useRef(),\n t\n })\n this.useStates({\n currentOptions: () => this.defaultCurrentOptions(),\n selectContainerLayout: null,\n endOfSelectLayout: null,\n height: null,\n loadedOptions: () => this.defaultLoadedOptions(),\n opened: false,\n optionsContainerLayout: null,\n optionsPlacement: undefined,\n optionsTop: undefined,\n optionsVisibility: undefined,\n optionsWidth: undefined,\n scrollLeft: document.documentElement.scrollLeft,\n scrollTop: document.documentElement.scrollTop,\n searchText: \"\",\n toggled: () => this.defaultToggled()\n })\n\n if (Platform.OS == \"web\") {\n useEventListener(window, \"click\", this.tt.onWindowClicked)\n useEventListener(window, \"resize\", this.tt.onAnythingResizedDebounced)\n useEventListener(window, \"scroll\", this.tt.onAnythingScrolledDebounced)\n }\n\n useEffect(() => {\n if (this.tt.callOptionsPositionAboveIfOutsideScreen && this.s.optionsContainerLayout) {\n this.callOptionsPositionAboveIfOutsideScreen = false\n this.setOptionsPositionAboveIfOutsideScreen()\n }\n }, [this.tt.callOptionsPositionAboveIfOutsideScreen, this.s.optionsContainerLayout])\n\n useEffect(() => {\n const currentOptionIds = this.s.currentOptions?.map((currentOption) => currentOption.value)\n\n if (this.props.values && anythingDifferent(currentOptionIds, this.props.values) && typeof this.props.options == \"function\") {\n this.setCurrentFromGivenValues()\n }\n }, [this.props.values])\n }\n\n defaultCurrentOptions() {\n const {defaultValue, defaultValues, values} = this.props\n const {options} = this.p\n\n if (!Array.isArray(options)) return []\n\n return options.filter(({value}) =>\n (defaultValue && value == defaultValue) ||\n (defaultValues && defaultValues.includes(value)) ||\n (values && values.includes(value))\n )\n }\n\n defaultLoadedOptions() {\n const {options} = this.p\n\n if (typeof options == \"function\") {\n return undefined\n } else if (Array.isArray(options)) {\n return options\n }\n\n throw new Error(`Unknown type of options: ${typeof options}`)\n }\n\n defaultToggled = () => (\"toggled\" in this.props) ? this.p.toggled : this.props.defaultToggled || {}\n getToggled = () => (\"toggled\" in this.props) ? this.p.toggled : this.s.toggled\n getValues = () => (\"values\" in this.props) ? this.p.values : this.s.currentOptions.map((currentOption) => currentOption.value)\n getCurrentOptions = () => {\n if (\"values\" in this.props && typeof this.props.values != \"undefined\") {\n if (Array.isArray(this.props.options) && this.props.values) {\n return this.p.values.map((value) => this.p.options.find((option) => option.value == value))\n } else if (this.s.loadedOptions && this.props.values) {\n return this.p.values.map((value) => {\n let foundOption = this.s.loadedOptions.find((option) => option.value == value)\n\n if (!foundOption) {\n foundOption = this.s.currentOptions.find((option) => option.value == value)\n\n if (!foundOption) {\n console.error(\n `Couldn't find option: ${value} in loadedOptions or state currentOptions`,\n {stateLoadedOptions: this.s.loadedOptions, stateCurrentOptions: this.s.currentOptions, propsOptions: this.props.options}\n )\n }\n }\n\n return foundOption\n })\n } else if (typeof this.props.options == \"function\" && this.props.values) {\n // Options haven't been loaded yet.\n } else if (this.props.values) {\n return this.p.values.map((value) => ({value}))\n }\n }\n\n return this.s.currentOptions\n }\n\n getCurrentOptionValues() {\n if (\"values\" in this.props) {\n return this.p.values\n }\n\n return this.getCurrentOptions().map((option) => option.value)\n }\n\n componentDidMount() {\n const {attribute, defaultValue, defaultValues, defaultValuesFromOptions, model, options} = this.props\n\n if (((defaultValue || defaultValues || defaultValuesFromOptions) || (attribute && model)) && typeof options == \"function\") {\n this.loadDefaultValuesFromOptionsCallback()\n }\n }\n\n componentDidUpdate() {\n const newState = {}\n\n if (\"toggled\" in this.props) {\n const newToggled = this.p.toggled\n\n if (anythingDifferent(this.state.toggled, newToggled)) {\n newState.toggled = newToggled\n }\n }\n\n if (Object.keys(newState).length > 0) {\n this.setState(newState)\n }\n }\n\n render() {\n const {endOfSelectRef} = this.tt\n const {transparent} = this.p\n const {className, placeholder, toggleOptions} = this.props\n const {opened, optionsPlacement} = this.s\n const currentOptions = this.getCurrentOptions()\n const selectContainerStyleActual = this.stylingFor(\"selectContainer\", {\n flexDirection: \"row\",\n alignItems: \"center\",\n backgroundColor: transparent ? undefined : \"#fff\",\n border: transparent ? undefined : \"1px solid #999\",\n borderRadius: transparent ? undefined : 4,\n color: \"#000\",\n cursor: \"pointer\",\n paddingTop: 5,\n paddingBottom: 5,\n paddingLeft: 5\n })\n\n if (opened) {\n // Prevent select from changing size once the content is replaced with search text once opened\n selectContainerStyleActual.height = this.s.height\n\n if (optionsPlacement == \"above\") {\n selectContainerStyleActual.borderTopLeftRadius = 0\n selectContainerStyleActual.borderTopRightRadius = 0\n selectContainerStyleActual.borderBottomRightRadius = selectContainerStyleActual.borderRadius\n selectContainerStyleActual.borderBottomLeftRadius = selectContainerStyleActual.borderRadius\n\n delete selectContainerStyleActual.borderRadius\n } else if (optionsPlacement == \"below\") {\n selectContainerStyleActual.borderTopLeftRadius = selectContainerStyleActual.borderRadius\n selectContainerStyleActual.borderTopRightRadius = selectContainerStyleActual.borderRadius\n selectContainerStyleActual.borderBottomRightRadius = 0\n selectContainerStyleActual.borderBottomLeftRadius = 0\n\n delete selectContainerStyleActual.borderRadius\n }\n }\n\n const chevronStyle = this.stylingFor(\"chevron\", {fontSize: 24})\n\n if (opened) {\n chevronStyle.marginBottom = -15\n } else {\n chevronStyle.marginTop = -9\n }\n\n return (\n <View\n dataSet={{\n class: className,\n component: \"haya-select\",\n id: idForComponent(this),\n opened,\n optionsPlacement,\n toggles: Boolean(toggleOptions)\n }}\n style={this.stylingFor(\"main\")}\n >\n <Pressable\n dataSet={{class: \"select-container\"}}\n onLayout={this.tt.onSelectContainerLayout}\n onPress={this.tt.onSelectClicked}\n ref={this.tt.selectContainerRef}\n style={selectContainerStyleActual}\n >\n <View\n dataSet={{class: \"current-selected\"}}\n style={this.stylingFor(\"currentSelected\", {width: \"calc(100% - 25px)\", flexWrap: \"wrap\"})}\n >\n {opened &&\n <TextInput\n dataSet={{class: \"search-text-input\"}}\n onChange={this.tt.onSearchTextInputChangedDebounced}\n onChangeText={this.tt.onChangeSearchText}\n placeholder={this.t(\".search_dot_dot_dot\")}\n ref={this.tt.searchTextInputRef}\n style={this.stylingFor(\"searchTextInput\", {\n width: \"100%\",\n border: 0,\n outline: \"none\",\n padding: 0\n })}\n value={this.state.searchText}\n />\n }\n {!opened &&\n <>\n {currentOptions.length == 0 &&\n <Text numberOfLines={1} style={this.stylingFor(\"nothingSelected\", {color: \"grey\"})}>\n {placeholder || this.t(\".nothing_selected\")}\n </Text>\n }\n {currentOptions.length == 0 && Platform.OS == \"web\" &&\n <input\n id={idForComponent(this)}\n name={nameForComponentWithMultiple(this)}\n type=\"hidden\"\n value=\"\"\n />\n }\n {currentOptions.map((currentOption) =>\n <View\n dataSet={{class: \"current-option\"}}\n key={currentOption.key || `current-value-${currentOption.value}`}\n style={this.stylingFor(\"currentOption\", {marginRight: 6})}\n >\n {currentOption.type == \"group\" &&\n <View style={this.stylingFor(\"currentOptionGroup\", {fontWeight: \"bold\"})}>\n <Text style={this.stylingFor(\"currentOptionGroupText\")}>\n {currentOption.text}\n </Text>\n </View>\n }\n {currentOption.type != \"group\" &&\n <>\n {Platform.OS == \"web\" && nameForComponentWithMultiple(this) &&\n <input\n id={idForComponent(this)}\n name={nameForComponentWithMultiple(this)}\n type=\"hidden\"\n value={digg(currentOption, \"value\")}\n />\n }\n {this.presentOption(currentOption, \"current\")}\n </>\n }\n </View>\n )}\n </>\n }\n </View>\n <View\n className=\"chevron-container\"\n style={this.stylingFor(\"chevronContainer\", {\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n marginLeft: \"auto\"\n })}\n >\n <Text style={chevronStyle}>\n {opened &&\n <>&#8963;</>\n }\n {!opened &&\n <>&#8964;</>\n }\n </Text>\n </View>\n </Pressable>\n <View dataSet={{class: \"end-of-select\"}} onLayout={this.tt.onEndOfSelectLayout} ref={endOfSelectRef} />\n {opened &&\n <Portal>\n {this.optionsContainer()}\n </Portal>\n }\n </View>\n )\n }\n\n defaultValues () {\n const {attribute, defaultValue, defaultValues, defaultValuesFromOptions, model} = this.props\n\n if (defaultValuesFromOptions) return defaultValuesFromOptions\n if (defaultValue) return defaultValue\n if (defaultValues) return defaultValues\n\n if (attribute && model) {\n if (!(attribute in model)) throw new Error(`No such attribute on ${model.modelClassData().name}: ${attribute}`)\n\n return model[attribute]()\n }\n }\n\n isActive() {\n if (this.tt.endOfSelectRef.current) {\n return true\n }\n\n return false\n }\n\n async loadDefaultValuesFromOptionsCallback() {\n const defaultValues = this.defaultValues()\n\n if (!defaultValues) return\n\n const result = await this.props.options({\n searchValue: this.s.searchText,\n values: defaultValues\n })\n\n this.setState({currentOptions: this.state.currentOptions.concat(result)})\n }\n\n loadOptions = async () => {\n const {options} = this.p\n const searchValue = this.s.searchText\n\n if (Array.isArray(options)) {\n return this.loadOptionsFromArray(options, searchValue)\n }\n\n const loadedOptions = await options({searchValue})\n\n this.setState({loadedOptions})\n }\n\n hayaSelectOption({key, loadedOption}) {\n if (loadedOption.type == \"group\") {\n return <OptionGroup key={key} option={loadedOption} />\n }\n\n return (\n <Option\n currentOptionValues={this.getCurrentOptionValues()}\n icon={this.iconForOption(loadedOption)}\n key={key}\n option={loadedOption}\n onOptionClicked={this.tt.onOptionClicked}\n presentOption={this.tt.presentOption}\n />\n )\n }\n\n loadOptionsFromArray(options, searchValue) {\n const lowerSearchValue = searchValue?.toLowerCase()\n const loadedOptions = options.filter(({text}) => !lowerSearchValue || text?.toLowerCase()?.includes(lowerSearchValue))\n\n this.setState({loadedOptions})\n }\n\n onSelectContainerLayout = (e) => this.setState({selectContainerLayout: Object.assign({}, digg(e, \"nativeEvent\", \"layout\"))})\n onEndOfSelectLayout = (e) => this.setState({endOfSelectLayout: Object.assign({}, digg(e, \"nativeEvent\", \"layout\"))})\n onOptionsContainerLayout = (e) => this.setState({optionsContainerLayout: Object.assign({}, digg(e, \"nativeEvent\", \"layout\"))})\n\n onSelectClicked = (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n const {opened} = this.s\n\n if (opened) {\n this.closeOptions()\n } else {\n this.openOptions()\n }\n }\n\n onSearchTextInputChangedDebounced = debounce(this.tt.loadOptions, 200)\n\n closeOptions() {\n this.setState({\n height: null,\n loadedOptions: undefined,\n opened: false,\n optionsContainerLayout: null\n })\n\n if (this.props.onOptionsClosed) {\n this.props.onOptionsClosed({options: this.getCurrentOptions()})\n }\n\n if (this.p.onBlur) this.p.onBlur()\n }\n\n onChangeSearchText = (searchText) => this.setState({searchText})\n\n openOptions() {\n this.setOptionsPositionBelow()\n this.loadOptions()\n this.callOptionsPositionAboveIfOutsideScreen = true\n this.setState(\n {\n height: this.s.selectContainerLayout.height,\n opened: true,\n scrollLeft: Platform.OS == \"web\" ? document.documentElement.scrollLeft : null,\n scrollTop: Platform.OS == \"web\" ? document.documentElement.scrollTop : null,\n searchText: \"\"\n },\n () => {\n this.focusTextInput()\n }\n )\n\n if (this.p.onFocus) this.p.onFocus()\n }\n\n focusTextInput = () => digg(this.tt.searchTextInputRef, \"current\")?.focus()\n\n setOptionsPosition() {\n if (!this.isActive()) {\n return // Debounce after un-mount handeling.\n }\n\n this.callOptionsPositionAboveIfOutsideScreen = true\n this.setOptionsPositionBelow()\n }\n\n setOptionsPositionAboveIfOutsideScreen() {\n const {optionsContainerLayout} = this.s\n const optionsTop = this.s.endOfSelectLayout.top\n const optionsTotalBottomPosition = optionsContainerLayout.height + optionsTop\n const windowHeightWithScroll = document.body.clientHeight + this.s.scrollTop\n\n if (windowHeightWithScroll < optionsTotalBottomPosition) {\n this.setOptionsPositionAbove()\n } else {\n this.setState({optionsVisibility: \"visible\"})\n }\n }\n\n setOptionsPositionAbove() {\n const {endOfSelectLayout} = this.s\n\n this.setState(\n {\n opened: true,\n optionsPlacement: \"above\",\n optionsVisibility: \"visible\",\n optionsWidth: endOfSelectLayout.width\n },\n () => this.focusTextInput()\n )\n }\n\n setOptionsPositionBelow() {\n this.setState(\n {\n opened: true,\n optionsPlacement: \"below\",\n optionsVisibility: \"hidden\",\n optionsWidth: this.s.endOfSelectLayout.width\n },\n () => this.focusTextInput()\n )\n }\n\n onAnythingResized = () => {\n if (this.s.opened) {\n this.setOptionsPosition()\n }\n }\n\n onAnythingResizedDebounced = debounce(this.tt.onAnythingResized, 25)\n\n onAnythingScrolled = () => {\n if (this.s.opened) {\n this.setState({\n scrollLeft: document.documentElement.scrollLeft,\n scrollTop: document.documentElement.scrollTop\n })\n this.setOptionsPosition()\n }\n }\n\n onAnythingScrolledDebounced = debounce(this.tt.onAnythingScrolled, 25)\n\n onWindowClicked = (e) => {\n const {optionsContainerRef} = this.tt\n const {opened} = this.s\n\n // If options are open and a click is made outside of the options container\n if (opened && optionsContainerRef.current && !optionsContainerRef.current?.contains(e.target)) {\n this.closeOptions()\n }\n }\n\n optionsContainer() {\n const {optionsContainerRef} = this.tt\n const {optionsAbsolute} = this.p\n const {selectContainerLayout, loadedOptions, endOfSelectLayout, optionsContainerLayout, optionsPlacement, optionsVisibility} = this.s\n let left, top\n\n let style = {\n position: \"absolute\",\n zIndex: 99999,\n elevation: 99999,\n visibility: optionsVisibility,\n width: this.p.optionsWidth || this.s.optionsWidth,\n backgroundColor: \"#fff\",\n border: \"1px solid #999\",\n maxHeight: 300,\n overflowY: \"auto\"\n }\n\n if (!optionsAbsolute) {\n style.left = 0\n style.bottom = 0\n } else if (optionsPlacement == \"below\") {\n if (Platform.OS == \"web\") {\n // onLayout top value is sometimes negative so use browser JS to get it instead\n top = digg(this.tt.endOfSelectRef.current.getBoundingClientRect(), \"top\") + document.documentElement.scrollTop + 1\n\n // onLayout left values doesn't always update when changed\n left = digg(this.tt.endOfSelectRef.current.getBoundingClientRect(), \"left\") + document.documentElement.scrollLeft\n } else {\n left = this.s.endOfSelectLayout.left\n top = selectContainerLayout.top\n }\n\n style.left = left\n style.top = top - 2\n } else if (optionsPlacement == \"above\") {\n if (Platform.OS == \"web\") {\n // onLayout top value is sometimes negative so use browser JS to get it instead\n top = digg(this.tt.selectContainerRef.current.getBoundingClientRect(), \"top\") + document.documentElement.scrollTop\n\n // onLayout left values doesn't always update when changed\n left = digg(this.tt.selectContainerRef.current.getBoundingClientRect(), \"left\") + document.documentElement.scrollLeft\n } else {\n left = endOfSelectLayout.left\n top = selectContainerLayout.top\n }\n\n style.left = left\n style.top = top - optionsContainerLayout.height + 1\n } else {\n throw new Error(`Unkonwn options placement: ${optionsPlacement}`)\n }\n\n style = this.stylingFor(\"optionsContainer\", style)\n\n return (\n <View\n dataSet={{class: \"options-container\", id: idForComponent(this)}}\n onLayout={this.tt.onOptionsContainerLayout}\n ref={optionsContainerRef}\n style={style}\n >\n {loadedOptions?.map((loadedOption) =>\n this.hayaSelectOption({\n key: loadedOption.key || `loaded-option-${loadedOption.value}`,\n loadedOption\n })\n )}\n {loadedOptions?.length === 0 &&\n <View dataSet={{class: \"no-options-container\"}}>\n <Text>\n {this.t(\".no_options_found\")}\n </Text>\n </View>\n }\n </View>\n )\n }\n\n onOptionClicked = (event, loadedOption) => {\n event.preventDefault()\n event.stopPropagation()\n\n const {onChange, toggleOptions} = this.props\n const {multiple} = this.p\n const currentOptions = this.getCurrentOptions()\n const toggled = this.getToggled()\n const newState = {}\n const existingOption = currentOptions.find((currentOption) => currentOption.value == loadedOption.value)\n const newToggled = {...toggled}\n\n if (existingOption) {\n if (toggleOptions) {\n const currentToggle = toggled[loadedOption.value]\n const currentIndex = toggleOptions.findIndex((element) => element.value == currentToggle)\n\n if (currentIndex >= (toggleOptions.length - 1)) {\n // No next toggled - remove toggled and option\n delete newToggled[loadedOption.value]\n\n newState.currentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)\n } else {\n // Already toggled - set to next toggle\n newToggled[loadedOption.value] = digg(toggleOptions, currentIndex + 1, \"value\")\n }\n\n newState.toggled = newToggled\n } else {\n // Remove from current options\n newState.currentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)\n }\n } else {\n // Don't do anything if the clicked option is disabled\n if (loadedOption.disabled) return\n\n if (toggleOptions) {\n // Set fresh toggle\n newToggled[loadedOption.value] = toggleOptions[0].value\n newState.toggled = newToggled\n }\n\n if (multiple || toggleOptions) {\n newState.currentOptions = currentOptions.concat([loadedOption])\n } else {\n newState.currentOptions = [loadedOption]\n }\n }\n\n const options = newState.currentOptions || currentOptions\n\n if (onChange) {\n onChange({\n event,\n options,\n toggles: newToggled\n })\n }\n\n if (this.props.onChangeValue) {\n let optionValue\n\n if (multiple) {\n optionValue = options.map((option) => option.value)\n } else {\n optionValue = dig(options, 0, \"value\")\n }\n\n this.p.onChangeValue(optionValue)\n }\n\n if (!multiple) this.closeOptions()\n this.setState(newState)\n }\n\n stylingFor(stylingName, style = {}) {\n let customStyling = dig(this, \"props\", \"styles\", stylingName)\n\n if (typeof customStyling == \"function\") customStyling = customStyling({state: this.state, style})\n\n if (customStyling) {\n return Object.assign(style, customStyling)\n }\n\n return style\n }\n\n iconForOption(option) {\n const {toggleOptions} = this.props || {}\n const toggled = this.getToggled()\n\n if (toggleOptions && (option.value in toggled)) {\n const toggledValue = toggled[option.value]\n const toggledOption = toggleOptions.find((element) => element.value == toggledValue)\n\n if (!toggledOption) {\n throw new Error(`Couldn't find a toggle option for value: ${toggledValue}`)\n }\n\n return toggledOption.icon\n }\n }\n\n presentOption = (option, mode) => {\n const {toggleOptions} = this.props || {}\n const toggled = this.getToggled()\n const icon = this.iconForOption(option)\n const toggleValue = toggled[option.value]\n const toggleOption = toggleOptions?.find((toggleOptionI) => toggleOptionI.value == toggleValue)\n\n return (\n <View\n dataSet={{\n class: \"option-presentation\",\n text: option.text,\n toggleIcon: toggleOption?.icon,\n toggleValue: toggleOption?.value,\n value: option.value\n }}\n style={{flexDirection: \"row\"}}\n >\n {toggleOptions && !(option.value in toggled) &&\n <View dataSet={{class: \"toggle-icon-placeholder\"}} style={{width: 20}} />\n }\n {toggleOptions && (option.value in toggled) &&\n <View style={{alignItems: \"center\", justifyContent: \"center\", width: 20}}>\n <FontAwesomeIcon dataSet={{class: \"toggle-icon\"}} name={icon} />\n </View>\n }\n {(() => {\n if (mode == \"current\" && option.currentContent) {\n return option.currentContent()\n } else if (option.content) {\n return option.content()\n } else if (\"html\" in option && Platform.OS != \"web\") {\n return <RenderHtml source={{html: digg(option, \"html\")}} />\n } else if (\"html\" in option && Platform.OS == \"web\") {\n return <div dangerouslySetInnerHTML={{__html: digg(option, \"html\")}} />\n } else {\n return (\n <Text dataSet={{class: \"option-presentation-text\"}} style={this.stylingFor(\"optionPresentationText\", {flex: 1, whiteSpace: \"nowrap\"})}>\n {option.text}\n </Text>\n )\n }\n })()}\n </View>\n )\n }\n\n async setCurrentFromGivenValues() {\n const {options, values} = this.p\n const currentOptions = await options({values})\n const currentValues = currentOptions?.map((currentOption) => currentOption.value)\n const stateValues = this.s.currentOptions?.map((currentOption) => currentOption.value)\n\n if (anythingDifferent(currentValues, stateValues)) {\n this.setState({currentOptions})\n }\n }\n}))\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/select/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import {anythingDifferent} from \"set-state-compare/src/diff-utils\"\nimport {dig, digg} from \"diggerize\"\nimport {Platform, Pressable, Text, TextInput, View} from \"react-native\"\nimport React, {memo, useEffect, useRef} from \"react\"\nimport {shapeComponent, ShapeComponent} from \"set-state-compare/src/shape-component.js\"\nimport debounce from \"debounce\"\nimport FontAwesomeIcon from \"react-native-vector-icons/FontAwesome\"\nimport idForComponent from \"@kaspernj/api-maker/build/inputs/id-for-component\"\nimport nameForComponent from \"@kaspernj/api-maker/build/inputs/name-for-component\"\nimport Option from \"./option\"\nimport OptionGroup from \"./option-group\"\nimport PropTypes from \"prop-types\"\nimport propTypesExact from \"prop-types-exact\"\nimport RenderHtml from \"react-native-render-html\"\nimport {Portal} from \"conjointment\"\nimport useEventListener from \"@kaspernj/api-maker/build/use-event-listener\"\nimport useI18n from \"i18n-on-steroids/src/use-i18n.mjs\"\n\nconst nameForComponentWithMultiple = (component) => {\n let name = nameForComponent(component)\n\n const currentOptions = component.getCurrentOptions()\n\n if (component.props.multiple && name && currentOptions.length > 0) {\n name += \"[]\"\n }\n\n return name\n}\n\nexport default memo(shapeComponent(class HayaSelect extends ShapeComponent {\n static defaultProps = {\n multiple: false,\n onBlur: null,\n onFocus: null,\n optionsAbsolute: true,\n optionsWidth: null,\n search: false,\n transparent: false\n }\n\n static propTypes = propTypesExact({\n attribute: PropTypes.string,\n className: PropTypes.string,\n defaultToggled: PropTypes.object,\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n defaultValues: PropTypes.array,\n defaultValuesFromOptions: PropTypes.array,\n id: PropTypes.node,\n model: PropTypes.object,\n multiple: PropTypes.bool.isRequired,\n name: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onChangeValue: PropTypes.func,\n onFocus: PropTypes.func,\n onOptionsClosed: PropTypes.func,\n options: PropTypes.oneOfType([PropTypes.array, PropTypes.func]).isRequired,\n optionsAbsolute: PropTypes.bool.isRequired,\n optionsWidth: PropTypes.number,\n placeholder: PropTypes.node,\n search: PropTypes.bool.isRequired,\n styles: PropTypes.object,\n toggled: PropTypes.object,\n toggleOptions: PropTypes.arrayOf(PropTypes.shape({\n icon: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n })),\n transparent: PropTypes.bool.isRequired,\n values: PropTypes.array\n })\n\n callOptionsPositionAboveIfOutsideScreen = false\n\n setup() {\n const {t} = useI18n({namespace: \"haya_select\"})\n\n if (this.props.values) {\n for (const value of this.props.values) {\n if (typeof value == \"undefined\") {\n throw new Error(\"HayaSelect: Undefined given as value\")\n }\n }\n }\n\n this.setInstance({\n endOfSelectRef: useRef(),\n optionsContainerRef: useRef(),\n searchTextInputRef: useRef(),\n selectContainerRef: useRef(),\n t\n })\n this.useStates({\n currentOptions: () => this.defaultCurrentOptions(),\n selectContainerLayout: null,\n endOfSelectLayout: null,\n height: null,\n loadedOptions: () => this.defaultLoadedOptions(),\n opened: false,\n optionsContainerLayout: null,\n optionsPlacement: undefined,\n optionsTop: undefined,\n optionsVisibility: undefined,\n optionsWidth: undefined,\n scrollLeft: document.documentElement.scrollLeft,\n scrollTop: document.documentElement.scrollTop,\n searchText: \"\",\n toggled: () => this.defaultToggled()\n })\n\n if (Platform.OS == \"web\") {\n useEventListener(window, \"click\", this.tt.onWindowClicked)\n useEventListener(window, \"resize\", this.tt.onAnythingResizedDebounced)\n useEventListener(window, \"scroll\", this.tt.onAnythingScrolledDebounced)\n }\n\n useEffect(() => {\n if (this.tt.callOptionsPositionAboveIfOutsideScreen && this.s.optionsContainerLayout) {\n this.callOptionsPositionAboveIfOutsideScreen = false\n this.setOptionsPositionAboveIfOutsideScreen()\n }\n }, [this.tt.callOptionsPositionAboveIfOutsideScreen, this.s.optionsContainerLayout])\n\n useEffect(() => {\n const currentOptionIds = this.s.currentOptions?.map((currentOption) => currentOption.value)\n\n if (this.props.values && anythingDifferent(currentOptionIds, this.props.values) && typeof this.props.options == \"function\") {\n this.setCurrentFromGivenValues()\n }\n }, [this.props.values])\n }\n\n defaultCurrentOptions() {\n const {defaultValue, defaultValues, values} = this.props\n const {options} = this.p\n\n if (!Array.isArray(options)) return []\n\n return options.filter(({value}) =>\n (defaultValue && value == defaultValue) ||\n (defaultValues && defaultValues.includes(value)) ||\n (values && values.includes(value))\n )\n }\n\n defaultLoadedOptions() {\n const {options} = this.p\n\n if (typeof options == \"function\") {\n return undefined\n } else if (Array.isArray(options)) {\n return options\n }\n\n throw new Error(`Unknown type of options: ${typeof options}`)\n }\n\n defaultToggled = () => (\"toggled\" in this.props) ? this.p.toggled : this.props.defaultToggled || {}\n getToggled = () => (\"toggled\" in this.props) ? this.p.toggled : this.s.toggled\n getValues = () => (\"values\" in this.props) ? this.p.values : this.s.currentOptions.map((currentOption) => currentOption.value)\n getCurrentOptions = () => {\n if (\"values\" in this.props && typeof this.props.values != \"undefined\") {\n if (Array.isArray(this.props.options) && this.props.values) {\n return this.p.values.map((value) => this.p.options.find((option) => option.value == value))\n } else if (this.s.loadedOptions && this.props.values) {\n return this.p.values.map((value) => {\n let foundOption = this.s.loadedOptions.find((option) => option.value == value)\n\n if (!foundOption) {\n foundOption = this.s.currentOptions.find((option) => option.value == value)\n\n if (!foundOption) {\n console.error(\n `Couldn't find option: ${value} in loadedOptions or state currentOptions`,\n {stateLoadedOptions: this.s.loadedOptions, stateCurrentOptions: this.s.currentOptions, propsOptions: this.props.options}\n )\n }\n }\n\n return foundOption\n })\n } else if (typeof this.props.options == \"function\" && this.props.values) {\n // Options haven't been loaded yet.\n } else if (this.props.values) {\n return this.p.values.map((value) => ({value}))\n }\n }\n\n return this.s.currentOptions\n }\n\n getCurrentOptionValues() {\n if (\"values\" in this.props) {\n return this.p.values\n }\n\n return this.getCurrentOptions().map((option) => option.value)\n }\n\n componentDidMount() {\n const {attribute, defaultValue, defaultValues, defaultValuesFromOptions, model, options} = this.props\n\n if (((defaultValue || defaultValues || defaultValuesFromOptions) || (attribute && model)) && typeof options == \"function\") {\n this.loadDefaultValuesFromOptionsCallback()\n }\n }\n\n componentDidUpdate() {\n const newState = {}\n\n if (\"toggled\" in this.props) {\n const newToggled = this.p.toggled\n\n if (anythingDifferent(this.state.toggled, newToggled)) {\n newState.toggled = newToggled\n }\n }\n\n if (Object.keys(newState).length > 0) {\n this.setState(newState)\n }\n }\n\n render() {\n const {endOfSelectRef} = this.tt\n const {transparent} = this.p\n const {className, placeholder, toggleOptions} = this.props\n const {opened, optionsPlacement} = this.s\n const currentOptions = this.getCurrentOptions()\n const selectContainerStyleActual = this.stylingFor(\"selectContainer\", {\n flexDirection: \"row\",\n alignItems: \"center\",\n backgroundColor: transparent ? undefined : \"#fff\",\n border: transparent ? undefined : \"1px solid #999\",\n borderRadius: transparent ? undefined : 4,\n color: \"#000\",\n cursor: \"pointer\",\n paddingTop: 5,\n paddingBottom: 5,\n paddingLeft: 5\n })\n\n if (opened) {\n // Prevent select from changing size once the content is replaced with search text once opened\n selectContainerStyleActual.height = this.s.height\n\n if (optionsPlacement == \"above\") {\n selectContainerStyleActual.borderTopLeftRadius = 0\n selectContainerStyleActual.borderTopRightRadius = 0\n selectContainerStyleActual.borderBottomRightRadius = selectContainerStyleActual.borderRadius\n selectContainerStyleActual.borderBottomLeftRadius = selectContainerStyleActual.borderRadius\n\n delete selectContainerStyleActual.borderRadius\n } else if (optionsPlacement == \"below\") {\n selectContainerStyleActual.borderTopLeftRadius = selectContainerStyleActual.borderRadius\n selectContainerStyleActual.borderTopRightRadius = selectContainerStyleActual.borderRadius\n selectContainerStyleActual.borderBottomRightRadius = 0\n selectContainerStyleActual.borderBottomLeftRadius = 0\n\n delete selectContainerStyleActual.borderRadius\n }\n }\n\n const chevronStyle = this.stylingFor(\"chevron\", {fontSize: 24})\n\n if (opened) {\n chevronStyle.marginBottom = -15\n } else {\n chevronStyle.marginTop = -9\n }\n\n return (\n <View\n dataSet={{\n class: className,\n component: \"haya-select\",\n id: idForComponent(this),\n opened,\n optionsPlacement,\n toggles: Boolean(toggleOptions)\n }}\n style={this.stylingFor(\"main\")}\n >\n <Pressable\n dataSet={{class: \"select-container\"}}\n onLayout={this.tt.onSelectContainerLayout}\n onPress={this.tt.onSelectClicked}\n ref={this.tt.selectContainerRef}\n style={selectContainerStyleActual}\n >\n <View\n dataSet={{class: \"current-selected\"}}\n style={this.stylingFor(\"currentSelected\", {width: \"calc(100% - 25px)\", flexWrap: \"wrap\"})}\n >\n {opened &&\n <TextInput\n dataSet={{class: \"search-text-input\"}}\n onChange={this.tt.onSearchTextInputChangedDebounced}\n onChangeText={this.tt.onChangeSearchText}\n placeholder={this.t(\".search_dot_dot_dot\")}\n ref={this.tt.searchTextInputRef}\n style={this.stylingFor(\"searchTextInput\", {\n width: \"100%\",\n border: 0,\n outline: \"none\",\n padding: 0\n })}\n value={this.state.searchText}\n />\n }\n {!opened &&\n <>\n {currentOptions.length == 0 &&\n <Text numberOfLines={1} style={this.stylingFor(\"nothingSelected\", {color: \"grey\"})}>\n {placeholder || this.t(\".nothing_selected\")}\n </Text>\n }\n {currentOptions.length == 0 && Platform.OS == \"web\" &&\n <input\n id={idForComponent(this)}\n name={nameForComponentWithMultiple(this)}\n type=\"hidden\"\n value=\"\"\n />\n }\n {currentOptions.map((currentOption) =>\n <View\n dataSet={{class: \"current-option\"}}\n key={currentOption.key || `current-value-${currentOption.value}`}\n style={this.stylingFor(\"currentOption\", {marginRight: 6})}\n >\n {currentOption.type == \"group\" &&\n <View style={this.stylingFor(\"currentOptionGroup\", {fontWeight: \"bold\"})}>\n <Text style={this.stylingFor(\"currentOptionGroupText\")}>\n {currentOption.text}\n </Text>\n </View>\n }\n {currentOption.type != \"group\" &&\n <>\n {Platform.OS == \"web\" && nameForComponentWithMultiple(this) &&\n <input\n id={idForComponent(this)}\n name={nameForComponentWithMultiple(this)}\n type=\"hidden\"\n value={digg(currentOption, \"value\")}\n />\n }\n {this.presentOption(currentOption, \"current\")}\n </>\n }\n </View>\n )}\n </>\n }\n </View>\n <View\n className=\"chevron-container\"\n style={this.stylingFor(\"chevronContainer\", {\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n marginLeft: \"auto\"\n })}\n >\n <Text style={chevronStyle}>\n {opened &&\n <>&#8963;</>\n }\n {!opened &&\n <>&#8964;</>\n }\n </Text>\n </View>\n </Pressable>\n <View dataSet={{class: \"end-of-select\"}} onLayout={this.tt.onEndOfSelectLayout} ref={endOfSelectRef} />\n {opened &&\n <Portal>\n {this.optionsContainer()}\n </Portal>\n }\n </View>\n )\n }\n\n defaultValues () {\n const {attribute, defaultValue, defaultValues, defaultValuesFromOptions, model} = this.props\n\n if (defaultValuesFromOptions) return defaultValuesFromOptions\n if (defaultValue) return defaultValue\n if (defaultValues) return defaultValues\n\n if (attribute && model) {\n if (!(attribute in model)) throw new Error(`No such attribute on ${model.modelClassData().name}: ${attribute}`)\n\n return model[attribute]()\n }\n }\n\n isActive() {\n if (this.tt.endOfSelectRef.current) {\n return true\n }\n\n return false\n }\n\n async loadDefaultValuesFromOptionsCallback() {\n const defaultValues = this.defaultValues()\n\n if (!defaultValues) return\n\n const result = await this.props.options({\n searchValue: this.s.searchText,\n values: defaultValues\n })\n\n this.setState({currentOptions: this.state.currentOptions.concat(result)})\n }\n\n loadOptions = async () => {\n const {options} = this.p\n const searchValue = this.s.searchText\n\n if (Array.isArray(options)) {\n return this.loadOptionsFromArray(options, searchValue)\n }\n\n const loadedOptions = await options({searchValue})\n\n this.setState({loadedOptions})\n }\n\n hayaSelectOption({key, loadedOption}) {\n if (loadedOption.type == \"group\") {\n return <OptionGroup key={key} option={loadedOption} />\n }\n\n return (\n <Option\n currentOptionValues={this.getCurrentOptionValues()}\n icon={this.iconForOption(loadedOption)}\n key={key}\n option={loadedOption}\n onOptionClicked={this.tt.onOptionClicked}\n presentOption={this.tt.presentOption}\n />\n )\n }\n\n loadOptionsFromArray(options, searchValue) {\n const lowerSearchValue = searchValue?.toLowerCase()\n const loadedOptions = options.filter(({text}) => !lowerSearchValue || text?.toLowerCase()?.includes(lowerSearchValue))\n\n this.setState({loadedOptions})\n }\n\n onSelectContainerLayout = (e) => this.setState({selectContainerLayout: Object.assign({}, digg(e, \"nativeEvent\", \"layout\"))})\n onEndOfSelectLayout = (e) => this.setState({endOfSelectLayout: Object.assign({}, digg(e, \"nativeEvent\", \"layout\"))})\n onOptionsContainerLayout = (e) => this.setState({optionsContainerLayout: Object.assign({}, digg(e, \"nativeEvent\", \"layout\"))})\n\n onSelectClicked = (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n const {opened} = this.s\n\n if (opened) {\n this.closeOptions()\n } else {\n this.openOptions()\n }\n }\n\n onSearchTextInputChangedDebounced = debounce(this.tt.loadOptions, 200)\n\n closeOptions() {\n this.setState({\n height: null,\n loadedOptions: undefined,\n opened: false,\n optionsContainerLayout: null\n })\n\n if (this.props.onOptionsClosed) {\n this.props.onOptionsClosed({options: this.getCurrentOptions()})\n }\n\n if (this.p.onBlur) this.p.onBlur()\n }\n\n onChangeSearchText = (searchText) => this.setState({searchText})\n\n openOptions() {\n this.setOptionsPositionBelow()\n this.loadOptions()\n this.callOptionsPositionAboveIfOutsideScreen = true\n this.setState(\n {\n height: this.s.selectContainerLayout.height,\n opened: true,\n scrollLeft: Platform.OS == \"web\" ? document.documentElement.scrollLeft : null,\n scrollTop: Platform.OS == \"web\" ? document.documentElement.scrollTop : null,\n searchText: \"\"\n },\n () => {\n this.focusTextInput()\n }\n )\n\n if (this.p.onFocus) this.p.onFocus()\n }\n\n focusTextInput = () => digg(this.tt.searchTextInputRef, \"current\")?.focus()\n\n setOptionsPosition() {\n if (!this.isActive()) {\n return // Debounce after un-mount handeling.\n }\n\n this.callOptionsPositionAboveIfOutsideScreen = true\n this.setOptionsPositionBelow()\n }\n\n setOptionsPositionAboveIfOutsideScreen() {\n const {optionsContainerLayout} = this.s\n const optionsTop = this.s.endOfSelectLayout.top\n const optionsTotalBottomPosition = optionsContainerLayout.height + optionsTop\n const windowHeightWithScroll = document.body.clientHeight + this.s.scrollTop\n\n if (windowHeightWithScroll < optionsTotalBottomPosition) {\n this.setOptionsPositionAbove()\n } else {\n this.setState({optionsVisibility: \"visible\"})\n }\n }\n\n setOptionsPositionAbove() {\n const {endOfSelectLayout} = this.s\n\n this.setState(\n {\n opened: true,\n optionsPlacement: \"above\",\n optionsVisibility: \"visible\",\n optionsWidth: endOfSelectLayout.width\n },\n () => this.focusTextInput()\n )\n }\n\n setOptionsPositionBelow() {\n this.setState(\n {\n opened: true,\n optionsPlacement: \"below\",\n optionsVisibility: \"hidden\",\n optionsWidth: this.s.endOfSelectLayout.width\n },\n () => this.focusTextInput()\n )\n }\n\n onAnythingResized = () => {\n if (this.s.opened) {\n this.setOptionsPosition()\n }\n }\n\n onAnythingResizedDebounced = debounce(this.tt.onAnythingResized, 25)\n\n onAnythingScrolled = () => {\n if (this.s.opened) {\n this.setState({\n scrollLeft: document.documentElement.scrollLeft,\n scrollTop: document.documentElement.scrollTop\n })\n this.setOptionsPosition()\n }\n }\n\n onAnythingScrolledDebounced = debounce(this.tt.onAnythingScrolled, 25)\n\n onWindowClicked = (e) => {\n const {optionsContainerRef} = this.tt\n const {opened} = this.s\n\n // If options are open and a click is made outside of the options container\n if (opened && optionsContainerRef.current && !optionsContainerRef.current?.contains(e.target)) {\n this.closeOptions()\n }\n }\n\n optionsContainer() {\n const {optionsContainerRef} = this.tt\n const {optionsAbsolute} = this.p\n const {selectContainerLayout, loadedOptions, endOfSelectLayout, optionsContainerLayout, optionsPlacement, optionsVisibility} = this.s\n let left, top\n\n let style = {\n position: \"absolute\",\n zIndex: 99999,\n elevation: 99999,\n visibility: optionsVisibility,\n width: this.p.optionsWidth || this.s.optionsWidth,\n backgroundColor: \"#fff\",\n border: \"1px solid #999\",\n maxHeight: 300,\n overflowY: \"auto\"\n }\n\n if (!optionsAbsolute) {\n style.left = 0\n style.bottom = 0\n } else if (optionsPlacement == \"below\") {\n if (Platform.OS == \"web\") {\n // onLayout top value is sometimes negative so use browser JS to get it instead\n top = digg(this.tt.endOfSelectRef.current.getBoundingClientRect(), \"top\") + document.documentElement.scrollTop + 1\n\n // onLayout left values doesn't always update when changed\n left = digg(this.tt.endOfSelectRef.current.getBoundingClientRect(), \"left\") + document.documentElement.scrollLeft\n } else {\n left = this.s.endOfSelectLayout.left\n top = selectContainerLayout.top\n }\n\n style.left = left\n style.top = top - 2\n } else if (optionsPlacement == \"above\") {\n if (Platform.OS == \"web\") {\n // onLayout top value is sometimes negative so use browser JS to get it instead\n top = digg(this.tt.selectContainerRef.current.getBoundingClientRect(), \"top\") + document.documentElement.scrollTop\n\n // onLayout left values doesn't always update when changed\n left = digg(this.tt.selectContainerRef.current.getBoundingClientRect(), \"left\") + document.documentElement.scrollLeft\n } else {\n left = endOfSelectLayout.left\n top = selectContainerLayout.top\n }\n\n style.left = left\n style.top = top - optionsContainerLayout.height + 1\n } else {\n throw new Error(`Unkonwn options placement: ${optionsPlacement}`)\n }\n\n style = this.stylingFor(\"optionsContainer\", style)\n\n return (\n <View\n dataSet={{class: \"options-container\", id: idForComponent(this)}}\n onLayout={this.tt.onOptionsContainerLayout}\n ref={optionsContainerRef}\n style={style}\n >\n {loadedOptions?.map((loadedOption) =>\n this.hayaSelectOption({\n key: loadedOption.key || `loaded-option-${loadedOption.value}`,\n loadedOption\n })\n )}\n {loadedOptions?.length === 0 &&\n <View dataSet={{class: \"no-options-container\"}}>\n <Text>\n {this.t(\".no_options_found\")}\n </Text>\n </View>\n }\n </View>\n )\n }\n\n onOptionClicked = (event, loadedOption) => {\n event.preventDefault()\n event.stopPropagation()\n\n const {onChange, toggleOptions} = this.props\n const {multiple} = this.p\n const currentOptions = this.getCurrentOptions()\n const toggled = this.getToggled()\n const newState = {}\n const existingOption = currentOptions.find((currentOption) => currentOption.value == loadedOption.value)\n const newToggled = {...toggled}\n let newCurrentOptions\n\n if (existingOption) {\n if (toggleOptions) {\n const currentToggle = toggled[loadedOption.value]\n const currentIndex = toggleOptions.findIndex((element) => element.value == currentToggle)\n\n if (currentIndex >= (toggleOptions.length - 1)) {\n // No next toggled - remove toggled and option\n delete newToggled[loadedOption.value]\n\n newCurrentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)\n } else {\n // Already toggled - set to next toggle\n newToggled[loadedOption.value] = digg(toggleOptions, currentIndex + 1, \"value\")\n }\n\n newState.toggled = newToggled\n } else {\n // Remove from current options\n newCurrentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)\n }\n } else {\n // Don't do anything if the clicked option is disabled\n if (loadedOption.disabled) return\n\n if (toggleOptions) {\n // Set fresh toggle\n newToggled[loadedOption.value] = toggleOptions[0].value\n newState.toggled = newToggled\n }\n\n if (multiple || toggleOptions) {\n newCurrentOptions = currentOptions.concat([loadedOption])\n } else {\n newCurrentOptions = [loadedOption]\n }\n }\n\n if (\"values\" in this.props && this.props.values !== undefined) {\n // currentOptions are controlled and a useMemo callback is handeling setting current options.\n } else if (newCurrentOptions) {\n newState.currentOptions = newCurrentOptions\n }\n\n const options = newCurrentOptions || currentOptions\n\n if (onChange) {\n onChange({\n event,\n options,\n toggles: newToggled\n })\n }\n\n if (this.props.onChangeValue) {\n let optionValue\n\n if (multiple) {\n optionValue = options.map((option) => option.value)\n } else {\n optionValue = dig(options, 0, \"value\")\n }\n\n this.p.onChangeValue(optionValue)\n }\n\n if (!multiple) this.closeOptions()\n this.setState(newState)\n }\n\n stylingFor(stylingName, style = {}) {\n let customStyling = dig(this, \"props\", \"styles\", stylingName)\n\n if (typeof customStyling == \"function\") customStyling = customStyling({state: this.state, style})\n\n if (customStyling) {\n return Object.assign(style, customStyling)\n }\n\n return style\n }\n\n iconForOption(option) {\n const {toggleOptions} = this.props || {}\n const toggled = this.getToggled()\n\n if (toggleOptions && (option.value in toggled)) {\n const toggledValue = toggled[option.value]\n const toggledOption = toggleOptions.find((element) => element.value == toggledValue)\n\n if (!toggledOption) {\n throw new Error(`Couldn't find a toggle option for value: ${toggledValue}`)\n }\n\n return toggledOption.icon\n }\n }\n\n presentOption = (option, mode) => {\n const {toggleOptions} = this.props || {}\n const toggled = this.getToggled()\n const icon = this.iconForOption(option)\n const toggleValue = toggled[option.value]\n const toggleOption = toggleOptions?.find((toggleOptionI) => toggleOptionI.value == toggleValue)\n\n return (\n <View\n dataSet={{\n class: \"option-presentation\",\n text: option.text,\n toggleIcon: toggleOption?.icon,\n toggleValue: toggleOption?.value,\n value: option.value\n }}\n style={{flexDirection: \"row\"}}\n >\n {toggleOptions && !(option.value in toggled) &&\n <View dataSet={{class: \"toggle-icon-placeholder\"}} style={{width: 20}} />\n }\n {toggleOptions && (option.value in toggled) &&\n <View style={{alignItems: \"center\", justifyContent: \"center\", width: 20}}>\n <FontAwesomeIcon dataSet={{class: \"toggle-icon\"}} name={icon} />\n </View>\n }\n {(() => {\n if (mode == \"current\" && option.currentContent) {\n return option.currentContent()\n } else if (option.content) {\n return option.content()\n } else if (\"html\" in option && Platform.OS != \"web\") {\n return <RenderHtml source={{html: digg(option, \"html\")}} />\n } else if (\"html\" in option && Platform.OS == \"web\") {\n return <div dangerouslySetInnerHTML={{__html: digg(option, \"html\")}} />\n } else {\n return (\n <Text dataSet={{class: \"option-presentation-text\"}} style={this.stylingFor(\"optionPresentationText\", {flex: 1, whiteSpace: \"nowrap\"})}>\n {option.text}\n </Text>\n )\n }\n })()}\n </View>\n )\n }\n\n async setCurrentFromGivenValues() {\n const {options, values} = this.p\n const currentOptions = await options({values})\n const currentValues = currentOptions?.map((currentOption) => currentOption.value)\n const stateValues = this.s.currentOptions?.map((currentOption) => currentOption.value)\n\n if (anythingDifferent(currentValues, stateValues)) {\n this.setState({currentOptions})\n }\n }\n}))\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haya-select",
3
- "version": "1.0.67",
3
+ "version": "1.0.69",
4
4
  "description": "Just another select component for React Native + Web.",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -682,6 +682,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
682
682
  const newState = {}
683
683
  const existingOption = currentOptions.find((currentOption) => currentOption.value == loadedOption.value)
684
684
  const newToggled = {...toggled}
685
+ let newCurrentOptions
685
686
 
686
687
  if (existingOption) {
687
688
  if (toggleOptions) {
@@ -692,7 +693,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
692
693
  // No next toggled - remove toggled and option
693
694
  delete newToggled[loadedOption.value]
694
695
 
695
- newState.currentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)
696
+ newCurrentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)
696
697
  } else {
697
698
  // Already toggled - set to next toggle
698
699
  newToggled[loadedOption.value] = digg(toggleOptions, currentIndex + 1, "value")
@@ -701,7 +702,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
701
702
  newState.toggled = newToggled
702
703
  } else {
703
704
  // Remove from current options
704
- newState.currentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)
705
+ newCurrentOptions = currentOptions.filter((currentOption) => currentOption.value != loadedOption.value)
705
706
  }
706
707
  } else {
707
708
  // Don't do anything if the clicked option is disabled
@@ -714,13 +715,19 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
714
715
  }
715
716
 
716
717
  if (multiple || toggleOptions) {
717
- newState.currentOptions = currentOptions.concat([loadedOption])
718
+ newCurrentOptions = currentOptions.concat([loadedOption])
718
719
  } else {
719
- newState.currentOptions = [loadedOption]
720
+ newCurrentOptions = [loadedOption]
720
721
  }
721
722
  }
722
723
 
723
- const options = newState.currentOptions || currentOptions
724
+ if ("values" in this.props && this.props.values !== undefined) {
725
+ // currentOptions are controlled and a useMemo callback is handeling setting current options.
726
+ } else if (newCurrentOptions) {
727
+ newState.currentOptions = newCurrentOptions
728
+ }
729
+
730
+ const options = newCurrentOptions || currentOptions
724
731
 
725
732
  if (onChange) {
726
733
  onChange({