2.2.75 • Published 2 months ago

ml-country-selector v2.2.75

Weekly downloads
-
License
ISC
Repository
-
Last release
2 months ago

一、ml-country-selector是什么?

"ml-country-selector基于typescript实现和rollup打包,是一款开箱即用的选择国家名称前端组件,支持自定义国家名称数据

二、使用步骤

1.引入库

代码如下(示例):

npm i ml-country-selector -S

注意如果是npm方式就需要这样引入

import { mlCountrySelector } from 'ml-country-selector';

2.初始化使用

在需要的地方初始化使用,demo如下: 注意必须提供一个容器元素

代码如下(示例):

            let instance = mlCountrySelector.initializationFn({
                el: '#container',
                // 初始化请求类型,建议true
                isHttps: true,
                // 是否开启input动画伸缩功能 即“清除”按钮 强烈建议开启
                animaInput: true,
                // 自定义按钮文案,仅animaInput开启时候生效
                inputOutBtnTxt: '取消',
                // input没有搜到任何内容时 失去焦点立即重制所有状态
                immediatelyReset: false,
                // input搜索是否全局匹配
                globalSearchWord: false,
                // 是否支持拼音搜索,默认false(非全局匹配模式才生效)
                supportEnSearch: false,
                // 是否开启列表独立滚动,搜索区域固定
                fixedAndScroll: true,
                // 自定义滚动区域高度px fixedAndScroll=true有效
                scrollviewHeight: null,
                // 搜索数据源是否需要包含“推荐”部分数据
                serachDataIncludeRecommend: false,
                // 是否在选中国家后重置状态
                selectCountryAfterReset: false,
                // 当使用input搜索结果为0时候是否也显示国家列表现,如果不显示就会是空状态视图, 默认false不显示
                searchEmptyShowCountryList: false,
                // 搜索输入最大字符数 默认值20
                searchInputMaxNum: 10,
                // 是否开启连续匹配模式下的匹配独立样式 默认false 且globalSearchWord=false生效
                searchWordAddStyle: true,
                // 是否滚动出现侧边提示大气泡
                scrollBodyBubble: true,
                // 是否左侧列表区域字母吸顶(仅当fixedAndScroll=true时候有效)
                leftTipTop: true,
                // 侧边栏跟随监听偏移值 PX
                leftActionSpan: 163,
                // input类型 默认值text,如果useServerSeach=true时建议值search
                inputType: 'text',
                // 是否启用server搜索和推荐
                useServerSeach: false,
                // 自定义搜索接口(当useServerSeach=true时生效) GET请求方式
                serverSeaAPI: '',
                // 自定义推荐接口(当useServerSeach=true时生效) GET请求方式
                serverTjAPI: '',
                // 为了提供更好的兼容性可以开启载入polyfill支持
                // getPolyFill: true,
                // 自定义一些配置项
                customOptions: {
                    // 搜索框清楚图标 可以url也可以base64
                    searchclearIcon: '',
                    // 搜索放大镜图标 可以url也可以base64
                    searchIcon: '',
                    // 国家选中态图标 可以url也可以base64
                    selectIcon: '',
                    // 侧边栏字母选中态图标 可以url也可以base64
                    slideItemIcon: '',
                },
                selectedCallback: function(res) {
                    console.log('自定义selectedCallback...执行', res);
                    containerBox.style.display = 'none';
                    myCountry.innerText = JSON.stringify(res.eventItemData);
                },
                // 自定义清除按钮点击回调函数
                inputOutBtnCallback: function(e) {
                    // 主动重置状态方法
                    instance.pubResetFn();
                    console.log('inputOutBtnCallback...执行', e, instance);
                },
                // 搜索input失去焦点回调函数
                inputBlurCallback: function(e) {
                    console.log('inputBlurCallback...执行', e);
                },
                // 搜索input获得焦点回调函数
                inputFocusCallback: function(e) {
                    console.log('inputFocusCallback...执行', e);
                },
                // 点击搜索框清楚按钮图标的回调函数
                searchClearIconCallback: function() {
                    console.log('searchClearIconCallback...执行');
                },
                // 请求开始时触发的回调函数
                apiStartCallback: function() {
                    console.log('apiStartCallback...执行');
                },
                // 请求完成时触发的回调函数
                apiEndCallback: function() {
                    console.log('apiEndCallback...执行');
                },
                // 节点挂在完成后的回调函数
                domRenderAfterCallback: function() {
                    console.log('domRenderAfterCallback...执行');
                }
            }).render();
            bth.onclick = function() {
                containerBox.style.display = 'block';
            };
            containerBoxClose.onclick = function() {
                containerBox.style.display = 'none';
            }
            // 当自定义元素高度时需要一步调用改方法使开启列表独立滚动,搜索区域固定效果生效(fixedAndScroll: true才有效)
            // instance.setfixedAndScroll()
            // 给开发人员使用的通过id获取元素的方法 必须传入id尾缀部分
            // instance.getEleByIdPubFn(tail: string);
            // 切换模式(暗黑ml-country-selector-dark和日间模式), 默认日间
            // instance.changeThemePubFn('ml-country-selector-dark');

3.参数和方法说明

1、参数说明:

序号参数值类型是否必须说明其他
1elstring容器元素id
2placeholderstring搜索input的placeholder
3countryListobject[]自定义国家列表数据源详细格式表后说明
4hotCountryListobject[]自定义常用喧嚣国家列表数据源详细格式表后说明
5animaInputboolean是否开启input动画伸缩功能 即“清除”按钮 强烈建议开启
6inputOutBtnTxtstring自定义按钮文案,仅animaInput开启时候生效
7immediatelyResetbooleaninput 失去焦点立即重制所有状态
8fixedAndScrollboolean是否开启列表独立滚动,搜索区域固定
9scrollviewHeightnumber自定义滚动区域高度px fixedAndScroll=true有效
10globalSearchWordbooleaninput搜索是否全局匹配
11serachDataIncludeRecommendboolean搜索数据源是否需要包含“推荐”部分数据
12selectCountryAfterResetboolean是否在选中国家后重置状态
13searchEmptyShowCountryListboolean当使用input搜索结果为0时候是否也显示国家列表现,如果不显示就会是空白视图, 默认false不显示
14searchInputMaxNumnumber搜索输入最大字符数 默认值20
15supportEnSearchboolean是否支持拼音搜索,默认false(非全局匹配模式才生效)
16searchWordAddStyleboolean是否开启连续匹配模式下的匹配独立样式 默认false 且globalSearchWord=false生效
17isHttpsboolean初始化请求类型,建议true
18inputTypestringinput类型 默认值text,如果useServerSeach=true时建议值search
19useServerSeachboolean是否启用server搜索和推荐
20serverSeaAPIstring自定义搜索接口(当useServerSeach=true时生效) GET请求方式自定义接口返回数据格式下面说明
21serverTjAPIstring自定义推荐接口(当useServerSeach=true时生效) GET请求方式自定义接口返回数据格式下面说明

2、回调函数说明:

序号参数值类型是否必须说明其他
1selectedCallback(res)Function完成国家选择后的回调函数,其中res包含选择的国家数据结果
2errCallbackFunction发生错误的回调函数
3inputOutBtnCallbackFunction自定义清除按钮点击回调函数
4inputBlurCallbackFunction搜索input失去焦点回调函数
5inputFocusCallbackFunction搜索input获得焦点回调函数
6domRenderAfterCallbackFunction节点挂在完成后的回调函数
7searchClearIconCallbackFunction点击搜索框清楚按钮图标的回调函数
8apiStartCallbackFunction请求开始时触发的回调函数
9apiEndCallbackFunction请求完成时触发的回调函数

3、可调用方法说明:

序号参数值类型说明其他
1pubResetFnFunction主动重置状态方法
2setfixedAndScrollFunction当自定义元素高度时需要一步调用改方法使开启列表独立滚动,搜索区域固定效果生效(fixedAndScroll: true才有效)
3getEleByIdPubFnFunction给开发人员使用的通过id获取元素的方法 必须传入id尾缀部分
4changeThemePubFnFunction主动切换模式(暗黑和日间模式), 默认日间模式。如果需要切换至暗黑模式传入【ml-country-selector-dark】参数值即可,不传则切换至日间模式

1、 countryList、hotCountryList参数格式例子说明

// 注意:必须这种格式
countryList:  [
        { value: "Angola", label: "安哥拉" , code: 0, pingyin: 'angela'},
        { value: "Afghanistan", label: "阿富汗", code: 1, pingyin: 'afuhan'},
        { value: "Albania", label: "阿尔巴尼亚", code: 2, pingyin: 'anerniriya'},
        { value: "Algeria", label: "阿尔及利亚", code: 3, pingyin: 'aerjiliya'},
        { value: "Andorra", label: "安道尔共和国", code: 4, pingyin: 'andaogongheguo'},
      ]

2、selectedCallback(res)中res参数格式例子说明

{
  "rescode": 0,
  "eventItemData": {
    "index": "25",
    "name": "文莱",
    "enname": "Brunei",
    "countrycode": "25"
  },
  "selectCountry": {
    "value": "Brunei",
    "label": "文莱",
    "index": 25,
    "code": 25
  },
  "originCountryData": [...]
}
  • rescode值为0表示获取成功,负责为获取异常失败
  • eventItemData是选择的国家的具体数据信息
  • selectCountry是前选择的国家在countryList的具体那项
  • originCountryData是传入的countryList数据

3、serverSeaAPI和serverTjAPI 自定义接口返回数据格式如下:

{
    code: 0,
    message: '',
    data: {
        datalist: [
            {
                "value": "Japan",
                "label": "日本",
                "index": 81,
                "code": 81,
            },
            {
                "value": "Jli",
                "label": "日里",
                "index": 82,
                "code": 82,
            },
        ]
    }
}

值得注意的是:该插件字体等样式的大小是rem单位,所以是以使用场景的html根字体大小为基础的

效果预览

图片

2.2.75

2 months ago

2.2.5

6 months ago

2.2.6

6 months ago

2.2.1

11 months ago

2.1.2

1 year ago

2.1.1

1 year ago

1.0.21

2 years ago

1.0.26

2 years ago

1.0.24

2 years ago

1.0.23

2 years ago

1.0.29

2 years ago

1.0.28

2 years ago

1.0.27

2 years ago

1.0.20

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago