| | |
| | | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { |
| | | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; |
| | | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); |
| | | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; |
| | | return c > 3 && r && Object.defineProperty(target, key, r), r; |
| | | }; |
| | | import config from '../common/config'; |
| | | import { SuperComponent, wxComponent } from '../common/src/index'; |
| | | import props from './props'; |
| | | const { prefix } = config; |
| | | const name = `${prefix}-radio-group`; |
| | | let RadioGroup = class RadioGroup extends SuperComponent { |
| | | constructor() { |
| | | super(...arguments); |
| | | this.externalClasses = [`${prefix}-class`]; |
| | | this.data = { |
| | | prefix, |
| | | classPrefix: name, |
| | | radioOptions: [], |
| | | }; |
| | | this.relations = { |
| | | '../radio/radio': { |
| | | type: 'descendant', |
| | | linked(target) { |
| | | const { value, disabled } = this.data; |
| | | target.setData({ |
| | | checked: value === target.data.value, |
| | | }); |
| | | target.setDisabled(disabled); |
| | | }, |
| | | }, |
| | | }; |
| | | this.properties = props; |
| | | this.controlledProps = [ |
| | | { |
| | | key: 'value', |
| | | event: 'change', |
| | | }, |
| | | ]; |
| | | this.observers = { |
| | | value(v) { |
| | | this.getChilds().forEach((item) => { |
| | | item.setData({ |
| | | checked: v === item.data.value, |
| | | }); |
| | | }); |
| | | }, |
| | | options() { |
| | | this.initWithOptions(); |
| | | }, |
| | | }; |
| | | this.methods = { |
| | | getChilds() { |
| | | let items = this.$children; |
| | | if (!(items === null || items === void 0 ? void 0 : items.length)) { |
| | | items = this.selectAllComponents(`.${prefix}-radio-option`); |
| | | } |
| | | return items; |
| | | }, |
| | | updateValue(value) { |
| | | this._trigger('change', { value }); |
| | | }, |
| | | handleRadioChange(e) { |
| | | const { value, index } = e.target.dataset; |
| | | this._trigger('change', { value, index }); |
| | | }, |
| | | initWithOptions() { |
| | | const { options, value, keys } = this.data; |
| | | if (!(options === null || options === void 0 ? void 0 : options.length) || !Array.isArray(options)) { |
| | | this.setData({ |
| | | radioOptions: [], |
| | | }); |
| | | return; |
| | | } |
| | | const optionsValue = []; |
| | | try { |
| | | options.forEach((element) => { |
| | | var _a, _b, _c; |
| | | const typeName = typeof element; |
| | | if (typeName === 'number' || typeName === 'string') { |
| | | optionsValue.push({ |
| | | label: `${element}`, |
| | | value: element, |
| | | checked: value === element, |
| | | }); |
| | | } |
| | | else if (typeName === 'object') { |
| | | optionsValue.push(Object.assign(Object.assign({}, element), { label: element[(_a = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _a !== void 0 ? _a : 'label'], value: element[(_b = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _b !== void 0 ? _b : 'value'], checked: value === element[(_c = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _c !== void 0 ? _c : 'value'] })); |
| | | } |
| | | }); |
| | | this.setData({ |
| | | radioOptions: optionsValue, |
| | | }); |
| | | } |
| | | catch (error) { |
| | | console.error('error', error); |
| | | } |
| | | }, |
| | | }; |
| | | } |
| | | }; |
| | | RadioGroup = __decorate([ |
| | | wxComponent() |
| | | ], RadioGroup); |
| | | export default RadioGroup; |
| | | import{__decorate}from"tslib";import config from"../common/config";import{SuperComponent,wxComponent}from"../common/src/index";import props from"./props";const{prefix:prefix}=config,name=`${prefix}-radio-group`;let RadioGroup=class extends SuperComponent{constructor(){super(...arguments),this.behaviors=["wx://form-field"],this.externalClasses=[`${prefix}-class`],this.data={prefix:prefix,classPrefix:name,radioOptions:[]},this.relations={"../radio/radio":{type:"descendant",linked(e){const{value:t,disabled:i,readonly:o}=this.data;e.setData({checked:t===e.data.value}),e.setDisabled(i),e.setReadonly(o)}}},this.properties=props,this.controlledProps=[{key:"value",event:"change"}],this.observers={value(e){this.getChildren().forEach(t=>{t.setData({checked:e===t.data.value})})},options(){this.initWithOptions()},disabled(e){var t;(null===(t=this.data.options)||void 0===t?void 0:t.length)?this.initWithOptions():this.getChildren().forEach(t=>{t.setDisabled(e)})}},this.methods={getChildren(){let e=this.$children;return(null==e?void 0:e.length)||(e=this.selectAllComponents(`.${prefix}-radio-option`)),e},updateValue(e){this._trigger("change",{value:e})},handleRadioChange(e){const{checked:t}=e.detail,{value:i,index:o,allowUncheck:a}=e.target.dataset;this._trigger("change",!1===t&&a?{value:null,index:o}:{value:i,index:o})},initWithOptions(){const{options:e,value:t,keys:i,disabled:o,readonly:a}=this.data;if(!(null==e?void 0:e.length)||!Array.isArray(e))return void this.setData({radioOptions:[]});const s=[];try{e.forEach(e=>{var l,r,n;const d=typeof e;"number"===d||"string"===d?s.push({label:`${e}`,value:e,checked:t===e,disabled:o,readonly:a}):"object"===d&&s.push(Object.assign(Object.assign({},e),{label:e[null!==(l=null==i?void 0:i.label)&&void 0!==l?l:"label"],value:e[null!==(r=null==i?void 0:i.value)&&void 0!==r?r:"value"],checked:t===e[null!==(n=null==i?void 0:i.value)&&void 0!==n?n:"value"],disabled:e.disabled||o,readonly:e.readonly||a}))}),this.setData({radioOptions:s})}catch(e){console.error("error",e)}}}}};RadioGroup=__decorate([wxComponent()],RadioGroup);export default RadioGroup; |