New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

chenmeng-ui

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chenmeng-ui

A Vue 3 component library built with Vite and TypeScript.

latest
npmnpm
Version
1.1.7
Version published
Maintainers
1
Created
Source
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <!-- region -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
  <link rel="stylesheet" href="https://unpkg.com/chenmeng-ui/dist/index.css">
  <script src="https://unpkg.com/chenmeng-ui"></script>
  <title>TestUMD</title>
  <style>
    .card {
      display: grid;
      user-select: none;
      place-items: center;
      aspect-ratio: 2 / 1;
      width: 200px;
      border-radius: 20px;
      background-color: whitesmoke;
      box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px
    }

    .showcase {
      max-width: 900px;
      margin: 0 auto;
      box-sizing: border-box;
    }

    .showcase:last-of-type {
      margin-bottom: 50px;
    }

    .showcase-row {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      margin-bottom: 10px;
      box-sizing: border-box;
    }
  </style>
  <!-- endregion -->
</head>
<body>
<div id="app">
  <div class="button-showcase">
    <!-- region 指令类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px" icon-name="BadgeCheck">指令 (Directives)</cm-divider>
      <div class="showcase-row">
        <div v-cm-ripple class="card">
          v-cm-ripple
        </div>
        <div v-cm-ripple="'#00b2ff'" class="card">
          v-cm-ripple
        </div>
        <div v-cm-ripple="'linear-gradient(to right, #00b2ff, blue)'" class="card">
          v-cm-ripple
        </div>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 滑块类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">滑块 (CmDivider)</cm-divider>
      <div class="showcase-row">
        <cm-button @click="sliderTheme = !sliderTheme">change theme</cm-button>
        <div style="width: 200px; display: flex; gap: 8px; flex-direction: column">
          <cm-slider v-model:value="sliderProgress" theme="material"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress" disabled></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="primary"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="info"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="success"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="warning"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="error"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="dark"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress"
            type="light"></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress" reversed></cm-slider>
        </div>
        <div style="display: flex; gap: 10px">
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress" vertical></cm-slider>
          <cm-slider :theme="sliderTheme ? 'default' :'material'" v-model:value="sliderProgress" vertical
            reversed></cm-slider>
        </div>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 弹出气泡类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">弹出气泡 (CmPopover)</cm-divider>
      <div class="showcase-row" style="justify-content: center">
        <div
          style="display: grid; grid-template-columns: repeat(5, 80px); grid-template-rows: repeat(5, 1fr); gap: 10px;">
          <div style="grid-column: 2 / 3;">
            <cm-popover placement="top-left" hide-arrow trigger-gap="1rem">
              <template #content>
                <div>top-left</div>
                <div>top-left</div>
                <div>top-left</div>
              </template>
              <cm-button block>top-left</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 3 / 4;">
            <cm-popover content="top-center/top-center" placement="top-center">
              <cm-button block>top-center</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 4 / 5;">
            <cm-popover placement="top-right" mode="click">
              <template #content>
                <div>top-right</div>
                <div>top-right</div>
                <div>top-right</div>
              </template>
              <cm-button block>top-right-click</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 2 / 3; grid-row: 5 / 6">
            <cm-popover placement="bottom-left" type="warning">
              <template #content>
                <div>bottom-left</div>
                <div>bottom-left</div>
                <div>bottom-left</div>
              </template>
              <cm-button block>bottom-left</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 3 / 4; grid-row: 5 / 6">
            <cm-popover content="bottom-center/bottom-center" placement="bottom-center" type="error">
              <cm-button block>bottom-center</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 4 / 5; grid-row: 5 / 6">
            <cm-popover placement="bottom-right" type="dark">
              <template #content>
                <div>bottom-right</div>
                <div>bottom-right</div>
                <div>bottom-right</div>
              </template>
              <cm-button block>bottom-right</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 1 / 2; grid-row: 2 / 3">
            <cm-popover placement="left-top" type="primary">
              <template #content>
                <div>left-top</div>
                <div>left-top</div>
                <div>left-top</div>
              </template>
              <cm-button block>left-top</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 1 / 2; grid-row: 3 / 4">
            <cm-popover content="left-center" placement="left-center" type="success">
              <cm-button block>left-center</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 1 / 2; grid-row: 4 / 5">
            <cm-popover placement="left-bottom" type="info">
              <template #content>
                <div>left-bottom</div>
                <div>left-bottom</div>
                <div>left-bottom</div>
              </template>
              <cm-button block>left-bottom</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 5 / 6; grid-row: 2 / 3">
            <cm-popover placement="right-top" mode="manual" :visible="popoverManual">
              <template #content>
                <div>right-top</div>
                <div>right-top</div>
                <div>right-top</div>
              </template>
              <cm-button block @click="popoverManual = !popoverManual">right-top-manual</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 5 / 6; grid-row: 3 / 4">
            <cm-popover content="right-center" placement="right-center">
              <cm-button block>right-center</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 5 / 6; grid-row: 4 / 5">
            <cm-popover placement="right-bottom" type="light">
              <template #content>
                <div>right-bottom</div>
                <div>right-bottom</div>
                <div>right-bottom</div>
              </template>
              <cm-button block>right-bottom</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 3 / 4; grid-row: 3 / 4">
            <cm-popover :content="popoverContent">
              <cm-button block>VNode</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 2 / 3; grid-row: 3 / 4">
            <cm-popover content="arrow-align-center" placement="top-left" arrow-align-center>
              <cm-button block>arrow-center</cm-button>
            </cm-popover>
          </div>
          <div style="grid-column: 4 / 5; grid-row: 3 / 4">
            <cm-popover content="arrow-align-center" placement="top-right" arrow-align-center>
              <cm-button block>arrow-center</cm-button>
            </cm-popover>
          </div>
        </div>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 分割线类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">分割线 (CmDivider)</cm-divider>
      <div class="showcase-row">
        <div style="height: 500px;">
          <cm-divider vertical placement="start">default</cm-divider>
          <cm-divider vertical placement="center" type="primary">primary</cm-divider>
          <cm-divider vertical placement="center" type="success">success</cm-divider>
          <cm-divider vertical placement="end" type="info">info</cm-divider>
          <cm-divider vertical placement="title-start" type="error">error</cm-divider>
          <cm-divider vertical placement="title-end" type="warning">warning</cm-divider>
        </div>
        <div style="flex: 1">
          <cm-divider placement="start" type="dark" dashed margin=".6rem">dark dashed</cm-divider>
          <cm-divider type="light" margin="1rem">light</cm-divider>
          <cm-divider placement="end" margin="1.4rem">分割线</cm-divider>
          <cm-divider placement="title-start" icon-name="Chrome" content-color="blue">分割线</cm-divider>
          <cm-divider placement="title-end">分割线</cm-divider>
          <cm-divider type="dark" letter-space="4">letter space</cm-divider>
        </div>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 消息类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">消息类型 (CmMessage、makeMessage)</cm-divider>
      <div class="showcase-row">
        <cm-message :duration="-1" size="tiny" type="primary" :content="messageContent"></cm-message>

        <div style="width: 100%"></div>

        <cm-button
          type="primary"
          @click="makeMessage.primary('从今往后……你们就要自己走了。', { size: 'tiny' })"
        >
          SHOW
        </cm-button>
        <cm-button
          type="info"
          @click="makeMessage.info('外面的世界很危险,保护好自己。', { size: 'small' })"
        >
          SHOW
        </cm-button>
        <cm-button
          type="success"
          @click="makeMessage.success('不要忘了偶尔回头看看……', { size: 'medium' })"
        >
          SHOW
        </cm-button>
        <cm-button
          type="warning"
          @click="makeMessage.warning('我看到了,阳光已经败退,在夜色中,万物陷入静谧……那艘船自天空驶来,群星如幕,赐尘世以永恒的酣睡……')"
        >
          SHOW
        </cm-button>
        <cm-button
          type="error"
          @click="makeMessage.error('夜幕终究会被打破……摇篮总有一天会倾覆……心灵的庇护迟早会成为无法打破的枷锁……')"
        >
          SHOW
        </cm-button>
        <cm-button
          type="dark"
          @click="makeMessage.dark('dark')"
        >
          SHOW
        </cm-button>
        <cm-button
          type="light"
          @click="makeMessage.light(messageContent)"
        >
          SHOW
        </cm-button>

        <div style="width: 100%"></div>

        <cm-button
          type="dark"
          @click="makeMessage({grouping:messageGrouping, content:messageContent, placement: 'top-left'})"
        >
          top-left
        </cm-button>
        <cm-button
          type="dark"
          @click="makeMessage({grouping:messageGrouping, content:messageContent, placement: 'top-center'})"
        >
          top-center
        </cm-button>
        <cm-button
          type="dark"
          @click="makeMessage({grouping:messageGrouping, content:messageContent, placement: 'top-right'})"
        >
          top-right
        </cm-button>
        <cm-button
          type="dark"
          @click="makeMessage({grouping:messageGrouping, content:messageContent, placement: 'bottom-left'})"
        >
          bottom-left
        </cm-button>
        <cm-button
          type="dark"
          @click="makeMessage({grouping:messageGrouping, content:messageContent, placement: 'bottom-center'})"
        >
          bottom-center
        </cm-button>
        <cm-button
          type="dark"
          @click="makeMessage({grouping:messageGrouping, content:messageContent, placement: 'bottom-right'})"
        >
          bottom-right
        </cm-button>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 开关类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">开关 (CmSwitch)</cm-divider>
      <div class="showcase-row">
        <cm-switch v-model="switchSize" size="tiny"></cm-switch>
        <cm-switch v-model="switchSize" size="small"></cm-switch>
        <cm-switch v-model="switchSize" size="medium"></cm-switch>
        <cm-switch v-model="switchSize" size="large"></cm-switch>

        <cm-switch v-model="switchRounded" rounded size="tiny"></cm-switch>
        <cm-switch v-model="switchRounded" rounded size="small"></cm-switch>
        <cm-switch v-model="switchRounded" rounded size="medium"></cm-switch>
        <cm-switch v-model="switchRounded" rounded size="large"></cm-switch>

        <cm-switch disabled v-model="switchRounded" rounded size="tiny"></cm-switch>
        <cm-switch disabled v-model="switchRounded" rounded size="small"></cm-switch>
        <cm-switch disabled v-model="switchRounded" rounded size="medium"></cm-switch>
        <cm-switch disabled v-model="switchRounded" rounded size="large"></cm-switch>

        <cm-switch icon-name="Chrome" type="info" v-model="switchType" rounded></cm-switch>
        <cm-switch icon-name="Chrome" type="success" v-model="switchType" rounded></cm-switch>
        <cm-switch icon-name="Chrome" type="warning" v-model="switchType" rounded></cm-switch>
        <cm-switch icon-name="Chrome" type="error" v-model="switchType" rounded></cm-switch>
        <cm-switch icon-name="Chrome" type="dark" v-model="switchType" rounded></cm-switch>
        <cm-switch icon-name="Chrome" type="light" v-model="switchType" rounded></cm-switch>
        <cm-switch icon-name="Chrome"
          checked-color="blue"
          unchecked-color="red"
          v-model="switchType" rounded></cm-switch>

        <cm-switch :model-value="switchAsyncValue" :loading="switchLoading"
          @update:model-value="handleSwitchChange"
          rounded size="medium"></cm-switch>

        <cm-switch :model-value="switchAsyncValue" :loading="switchLoading" icon-name="Chrome"
          @update:model-value="handleSwitchChange" icon-color-mode="no-follow"
          rounded size="tiny"></cm-switch>

        <cm-switch v-model="customValue"
          checked-value="checked"
          unchecked-value="unchecked"
          rounded size="medium"></cm-switch>
        {{ customValue }}

        <cm-switch v-model="customValue"
          checked-value="checked"
          unchecked-value="unchecked"
          rounded size="medium">
          <template #icon>
            <cm-icon name="BadgeCheck"></cm-icon>
          </template>
        </cm-switch>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 标签类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">标签 (CmTag)</cm-divider>
      <div class="showcase-row">
        <cm-tag type="primary">primary</cm-tag>
        <cm-tag type="info">info</cm-tag>
        <cm-tag type="success">success</cm-tag>
        <cm-tag type="warning">warning</cm-tag>
        <cm-tag type="error">error</cm-tag>
        <cm-tag type="dark">dark</cm-tag>
        <cm-tag type="light">light</cm-tag>

        <cm-tag type="primary" size="tiny">123</cm-tag>
        <cm-tag type="success" size="small">123</cm-tag>
        <cm-tag type="warning" size="medium">123</cm-tag>
        <cm-tag type="error" size="large">123</cm-tag>

        <cm-tag icon-name="Chrome" type="primary" size="tiny">count</cm-tag>
        <cm-tag icon-name="Chrome" type="success" size="small">save</cm-tag>
        <cm-tag icon-name="Download" type="warning" size="medium">download</cm-tag>
        <cm-tag icon-name="Download" type="error" size="large">123</cm-tag>

        <cm-tag rounded type="primary">123</cm-tag>
        <cm-tag rounded type="info">123</cm-tag>
        <cm-tag rounded type="success">123</cm-tag>
        <cm-tag icon-name="Download" rounded type="warning">123</cm-tag>
        <cm-tag icon-name="Chrome" rounded type="error">123</cm-tag>
        <cm-tag icon-name="Star" rounded type="dark">dark</cm-tag>
        <cm-tag secondary rounded icon-name="Star" type="light">light</cm-tag>

        <cm-tag secondary type="primary">123</cm-tag>
        <cm-tag secondary type="info">123</cm-tag>
        <cm-tag secondary rounded type="success">123</cm-tag>
        <cm-tag secondary rounded icon-name="Download" type="warning">123</cm-tag>
        <cm-tag secondary rounded bordered icon-name="Chrome" type="error">123</cm-tag>
        <cm-tag secondary rounded bordered icon-name="Star" type="dark">123</cm-tag>
        <cm-tag secondary rounded bordered icon-name="Star" type="light">light</cm-tag>
        <cm-tag secondary rounded icon-name="Star" type="dark">
          <template #icon>
            <cm-icon name="Loading"></cm-icon>
          </template>
          123
        </cm-tag>
      </div>
    </section>
    <!-- endregion -->
    <!-- region 图标类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">图标 (CmIcon) {{ DefaultIcons.Names.length }}</cm-divider>
      <div class="showcase-row">
        <cm-icon
          v-for="name in DefaultIcons.Names"
          size="40"
          icon-size="20"
          rounded
          :back-color="`rgba(0,0,0,0.05)`"
          :name="name"
          @click="iconCopyName(name)"
        />
      </div>
    </section>
    <!-- endregion -->
    <!-- region 按钮类型展示 -->
    <section class="showcase">
      <cm-divider font-size="18px" margin="40px">按钮类型 (CmButton)</cm-divider>
      <div class="showcase-row">
        <cm-button>默认按钮</cm-button>
        <cm-button type="primary">Primary</cm-button>
        <cm-button type="success">Success</cm-button>
        <cm-button type="warning">Warning</cm-button>
        <cm-button type="error">Error</cm-button>
        <cm-button type="info">Info</cm-button>
        <cm-button type="dark">Dark</cm-button>
        <cm-button type="light">Light</cm-button>
        <cm-button type="dark" block icon-name="Loading">Block</cm-button>
        <cm-button type="primary" text size="tiny">Text Primary</cm-button>
        <cm-button type="success" text size="small">Text Success</cm-button>
        <cm-button type="warning" text size="medium">Text Warning</cm-button>
        <cm-button type="info" text size="large">Text Info</cm-button>
        <cm-button type="error" text>Text Error</cm-button>
        <cm-button type="dark" text>Text Dark</cm-button>
        <cm-button type="light" text>Text Light</cm-button>
      </div>
      <div class="showcase-row">
        <cm-button nativeType="button">Button</cm-button>
        <cm-button nativeType="submit">Submit</cm-button>
        <cm-button nativeType="reset">Reset</cm-button>
        <cm-button size="tiny">Tiny</cm-button>
        <cm-button size="small">Small</cm-button>
        <cm-button size="medium">Medium</cm-button>
        <cm-button size="large">LargeLarge</cm-button>
        <cm-button disabled>禁用按钮</cm-button>
        <cm-button type="primary" disabled>禁用 Primary</cm-button>
        <cm-button type="success" disabled>禁用 Success</cm-button>
        <cm-button round>圆角按钮</cm-button>
        <cm-button type="primary" round>圆角 Primary</cm-button>
        <cm-button type="success" round>圆角 Success</cm-button>
        <cm-button size="tiny" type="primary" circle>A</cm-button>
        <cm-button size="small" type="success" circle>B</cm-button>
        <cm-button size="medium" type="warning" circle>C</cm-button>
        <cm-button size="large" type="error" circle>D</cm-button>
        <cm-button size="tiny" icon-name="Download" type="primary" circle></cm-button>
        <cm-button size="small" icon-name="Download" type="success" circle></cm-button>
        <cm-button size="medium" icon-name="Download" type="warning" circle></cm-button>
        <cm-button size="large" icon-name="Download" type="error" circle></cm-button>
        <cm-button secondary>次要按钮</cm-button>
        <cm-button type="primary" secondary>次要 Primary</cm-button>
        <cm-button type="success" secondary>次要 Success</cm-button>
        <cm-button type="primary" size="large" rounded>大号圆角主要按钮</cm-button>
        <cm-button type="success" size="small" disabled>小号禁用成功按钮</cm-button>
        <cm-button type="warning" circle size="large">!</cm-button>
        <cm-button type="info" secondary rounded>次要信息按钮</cm-button>
        <cm-button icon-name="Star" ref="buttonRef" type="primary" @click="buttonFocus">
          点击后聚焦到此按钮
        </cm-button>
        <cm-button :loading="buttonLoading" icon-name="Download"
          @click="loadingButton">加载按钮
        </cm-button>
        <cm-button :loading="buttonLoading"
          @click="loadingButton">加载按钮
        </cm-button>
        <cm-button :icon-name="buttonLoading ? 'Chrome' : 'Download'"
          @click="loadingButton">
          1232
        </cm-button>
      </div>
      <div class="showcase-row">
        <cm-button-group type="warning" vertical size="tiny" rounded>
          <cm-button icon-name="Bell"></cm-button>
          <cm-button icon-name="Download"></cm-button>
          <cm-button icon-name="Star"></cm-button>
        </cm-button-group>
        <cm-button-group type="info" vertical size="small" disabled>
          <cm-button icon-name="Bell"></cm-button>
          <cm-button icon-name="Download"></cm-button>
          <cm-button icon-name="Star"></cm-button>
        </cm-button-group>
        <cm-button-group type="success" vertical size="medium">
          <cm-button icon-name="Bell">ACT</cm-button>
          <cm-button icon-name="Download">ACT</cm-button>
          <cm-button icon-name="Star">ACT</cm-button>
        </cm-button-group>
        <cm-button-group type="info" vertical size="large" no-shadow>
          <cm-button>ACT1</cm-button>
          <cm-button>ACT2</cm-button>
          <cm-button>ACT3</cm-button>
          <cm-button>ACT4</cm-button>
        </cm-button-group>
        <cm-button-group type="error" vertical>
          <cm-button>ACT1</cm-button>
          <cm-button>ACTION2</cm-button>
          <cm-button>ACT3</cm-button>
        </cm-button-group>
        <cm-button-group type="dark" vertical>
          <cm-button>ACT1</cm-button>
          <cm-button>ACT2</cm-button>
        </cm-button-group>
        <cm-button-group type="light">
          <cm-button>ACT1</cm-button>
          <cm-button>ACTION2</cm-button>
          <cm-button>ACT3</cm-button>
        </cm-button-group>
      </div>
    </section>
    <!-- endregion -->
  </div>
</div>

<script>
  const { createApp, ref, h } = Vue
  const { DefaultIcons, makeMessage, CmButton } = ChenmengUI
  const app = createApp({
    setup () {
      // --- Slider ---
      const sliderTheme = ref(true)
      const sliderProgress = ref(50)

      // --- CmPopover ---
      const popoverLoading = ref(false)
      const popoverManual = ref(false)
      const popoverChangeLoading = () => {
        popoverLoading.value = true
        setTimeout(() => {
          popoverLoading.value = false
        }, 1000)
      }
      const popoverContent = () => h(CmButton, {
        loading: popoverLoading.value,
        onClick: popoverChangeLoading,
      }, {
        default: () => 'VNode',
      })

      // --- CmMessage ---
      const messageContent = '我知这世界,本如露水般短暂,然而,然而'
      const messageGrouping = false

      // --- CmSwitch ---
      const switchSize = ref(false)
      const switchType = ref(true)
      const switchRounded = ref(false)
      const switchLoading = ref(false)
      const switchAsyncValue = ref(false)

      const customValue = ref('unchecked')
      const handleSwitchChange = (value) => {
        switchLoading.value = true
        setTimeout(() => {
          switchLoading.value = false
          switchAsyncValue.value = value
        }, 2000)
      }

      // --- CmIcon ---
      const iconCopyName = (name) => {
        navigator.clipboard.writeText(name)
        alert(`复制成功:${ name }`)
      }

      // --- CmButton ---
      const buttonLoading = ref(false)
      const loadingButton = () => {
        buttonLoading.value = true
        setTimeout(() => {
          buttonLoading.value = false
        }, 1000)
      }
      const buttonRef = ref()
      const buttonFocus = () => {
        buttonRef.value?.$el.blur()
        setTimeout(() => {
          buttonRef.value?.$el.focus()
        }, 300)
      }

      return {
        sliderTheme,
        sliderProgress,
        popoverManual,
        popoverContent,
        popoverLoading,
        messageContent,
        messageGrouping,
        makeMessage,
        switchSize,
        switchType,
        switchRounded,
        switchLoading,
        switchAsyncValue,
        customValue,
        iconCopyName,
        DefaultIcons,
        handleSwitchChange,
        buttonLoading,
        loadingButton,
        buttonRef,
        buttonFocus,
      }
    },
  })
  console.log(ChenmengUI)
  app.use(ChenmengUI)
  app.mount('#app')

  makeMessage({
    content: () => h(CmButton, {
      onClick: () => makeMessage.warning('然而,然而'),
    }, {
      default: () => '我知这世界,本如露水般短暂,然而,然而',
    }),
  })
</script>
</body>
</html>

Keywords

chenmeng

FAQs

Package last updated on 31 May 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts